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.