Ús de <snippets>

Si bé incloure fitxers com es mostra a la secció anterior és bastant potent, es torna més útil quan s'utilitza en combinació amb <snippets>. Els «snippets» (fragments) són seccions més petites que podeu inserir en un altre punt del fitxer. Un exemple il·lustra millor això:

<document>
        <snippets>
                <snippet id="note">
                        <frame>
                                <text>
                This will be inserted at two places in the GUI
                                </text>
                        </frame>
                </snippet>
        </snippets>
        <dialog label="test">
                <column>
                        <insert snippet="note"/>
                        [...]
                        <insert snippet="note"/>
                </column>
        </dialog>
</document>
        

Per tant, definiu el fragment en un lloc a la part superior del fitxer XML, i després feu una inserció amb <insert> en qualsevol lloc/s que desitgeu.

Si bé aquest exemple no és massa útil en si mateix, penseu a combinar-lo amb un fitxer <include> .xml. Tingueu en compte que també podeu col·locar fragments per al fitxer .rkh al mateix fitxer. Simplement hauríeu de fer-hi <include> també del fitxer, i <insert> el fragment rellevant:

<!-- This is a file called "common_snippets.xml" -->
<document>
        <snippet id="common_options">
                <spinbox id="something" [...]/>
                [...]
        </snippet>
        <snippet id="common_note">
                <text>An important note for this type of plugin</text>
        </snippet>

        <snippet id="common_help">
                <setting id="something">This does something</setting>
                [...]
        </snippet>
</document>
        
<!-- This is the .xml file of the plugin -->
<document>
        <snippets>
                <!-- Import the common snippets -->
                <include file="common_snippets.xml"/>
        </snippets>

        <dialog label="test2">
                <insert snippet="common_note"/>
                <spinbox id="something_plugin_specific" [...] />
                <insert snippet="common_options"/>
        </dialog>
</document>
        

Similar a la inclusió en JS, l'enfocament invers és sovint encara més útil:

<!-- This is a file called "common_layout.xml" -->
<document>
        <column>
                <insert snippet="note">
                [...]
                <insert snippet="plugin_parameters">
        </column>
        [...]
</document>
        
<!-- This is the .xml file of the plugin -->
<document>
        <snippets>
                <snippet id="note">
                        <text>The note used for this specific plugin</text>
                </snippet>

                <snippet id="plugin_parameters">
                        <frame label="Parameters specific to this plugin">
                                [...]
                        </frame>
                </snippet>
        </snippets>

        <dialog label="test3">
                <include file="common_layout.xml"/>
        </dialog>
</document>
        

Finalment, també és possible <insert> fragments en altres fragments, sempre que: a) només hi hagi un nivell d'imbricació, i b) la secció <snippets> es col·loca a la part superior del fitxer (abans que s'insereixi un fragment niat); això és perquè les sentències <insert> es resolen de dalt a baix.