Хоча включення файлів, як це показано у попередньому розділі є достатньо потужним інструментом, найкориснішим він стає, якщо його поєднати з фрагментами, <snippets>. Фрагменти — малі шматки коду, які ви можете вставити у іншу частину файла. Найкращою ілюстрацією буде приклад:
<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>
Отже, ви визначаєте фрагмент коду у одному місці на початку файла XML, а потім використовуєте <insert> для вставлення коду туди, куди ви хочете його вставити.
Хоча цей приклад і не є таким уже надкорисним сам собою, можна уявити його у поєднанні з включенням за допомогою <include> файла .xml
. Зауважте, що ви також можете розташувати фрагменти для файла .rkh
у тому самому файлі. Ви просто вкажете його за допомогою <include> і вставите відповідний фрагмент за допомогою <insert>:
<!-- Це файл, який називається «common_snippets.xml» --> <document> <snippet id="common_options"> <spinbox id="something" [...]/> [...] </snippet> <snippet id="common_note"> <text>Важлива нотатка для цього типу додатків</text> </snippet> <snippet id="common_help"> <setting id="something">Виконує якусь дію</setting> [...] </snippet> </document>
<!-- Це файл .xml додатка --> <document> <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>
Подібно до включення до JS, зворотний підхід часто є навіть ще кориснішим:
<!-- Це файл із назвою «common_layout.xml» --> <document> <column> <insert snippet="note"> [...] <insert snippet="plugin_parameters"> </column> [...] </document>
<!-- Це файл .xml додатка --> <document> <snippets> <snippet id="note"> <text>Нотатка для цього додатка</text> </snippet> <snippet id="plugin_parameters"> <frame label="Специфічні для цього додатка параметри"> [...] </frame> </snippet> </snippets> <dialog label="test3"> <include file="common_layout.xml"/> </dialog> </document>
Нарешті, можна вставляти фрагменти за допомогою <insert> у інші фрагменти, якщо виконуються такі умови: а) буде використано лише один рівень вкладеності і б) розділ <snippets> розташовано на початку файла (до вставляння вкладеного фрагмента); причиною цього є те, що обробка інструкцій <insert> відбувається у файлі згори вниз.