У меня есть следующий файл XML:
<layout>
<layout-structure>
<layout-root id="layout-root">
<layout-chunk id="header-text">
<layout-leaf xref="lay-1.01"/>
<layout-leaf xref="lay-1.02"/>
</layout-chunk>
<layout-leaf xref="lay-1.03"/>
</layout-root>
<layout-root id="layout-root-two">
<layout-chunk id="header-text-two">
<layout-leaf xref="lay-1.04"/>
<layout-leaf xref="lay-1.05"/>
<layout-leaf xref="lay-1.06"/>
</layout-chunk>
<layout-leaf xref="lay-1.07"/>
</layout-root>
</layout-structure>
<realization>
<text xref="lay-1.01 lay-1.04"/>
<text xref="lay-1.02 lay-1.05"/>
<graphics xref="lay-1.03 lay-1.06" type="1"/>
<graphics xref="lay-1.07" type="2"/>
</realization>
</layout>
Я хочу извлечь значения атрибута xref элемента graphics, чтобы ограничить вывод в предложении for показанной функции ниже.
declare function local:gfx($root, $graphics) {
let $graphic-xrefs := tokenize($graphics/@xref, " ")
for $layout-leafs in $root//layout-leaf[@xref = $graphic-xrefs]
return concat('"', $layout-leafs/@xref, '" ', $dotgraphics, ';', $newline)
};
Однако это вызывает ошибку, поскольку некоторые атрибуты xref в элементе graphics содержат одно значение, как в случае <graphics xref="lay-1.07"/>.
Можно ли использовать tokenize для получения значений graphics/xref или мне следует использовать другой подход?