# Using Code Templates

## template

> The template node registers a template that can be used to avoid duplicate code when extending the generated code, and it is a child of the typesystem node.

>     <typesystem>
>         <template name="my_template">
>             // the code
>         </template>
>     </typesystem>

> Use the insert-template node to insert the template code (identified by the template’s `name` attribute) into the generated code base.

## insert-template

> The insert-template node includes the code template identified by the name attribute, and it can be a child of the inject-code, conversion-rule, template, custom-constructor and custom-destructor nodes.

>     <inject-code class="target" position="beginning">
>         <insert-template name="my_template" />
>     </inject-code>

> Use the replace node to modify the template code.

## replace

> The replace node allows you to modify template code before inserting it into the generated code, and it can be a child of the insert-template node.

>     <insert-template name="my_template">
>        <replace from="..." to="..." />
>     </insert-template>

> This node will replace the attribute `from` with the value pointed by `to`.