次のような構造の XML ファイルを取得しました。
<?xml version="1.0"?>
<medias>
<media>
<id>34500</id>
<refid/>
</media>
<media>
<id>34501</id>
<refid>34500</refid>
</media>
<media>
<id>34502</id>
<refid>34500</refid>
</media>
<media>
<id>34503</id>
<refid>34501</refid>
</media>
<media>
<id>34504</id>
<ref/>
</media>
<media>
<id>34505</id>
<refid>34502</refid>
</media>
</medias>
XSL 1.0 では、他から参照されていないすべてのノードにアクセスしたいと考えています。だから私は2つの変数を作成しました
<xsl:variable name="origID" select="media/id/text()"/>
<xsl:variable name="refID" select="media/refid/text()"/>
これら2つの要素セット間で差分操作を実行する方法を調べました
<xsl:variable name="diffID" select="$origID[count(. | $refID) != count($refID)]"/>
結果は次のとおりです。
origID には 34500、34501、34502、34503、34504、34505 が含まれます
refID には 34500、34500、34501、34502 が含まれます
私はそれを期待した
diffID には 34503、34504、34505 が含まれます。
しかし
diffID には、まだ 34500、34501、34502、34503、34504、34505 が含まれています。
IDが他のノードによって参照されているすべてのノードを取得するという私の目的を達成するための最良のアプローチは何でしょうか.
前もって感謝します
アンドレ