私は次の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>
以下に示す関数の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)
};
ただし、の場合のように、 graphics要素の下の一部の外部参照属性に単一の値が含まれているため、これによりエラーが発生します。<graphics xref="lay-1.07"/>
トークン化を使用してグラフィックス/外部参照値をフェッチすることは可能ですか、それとも別のアプローチを使用する必要がありますか?