xml を別の xml に変換する xslt スタイル シートを作成しています。
元の xml の簡易版は次のとおりです。
<eml>
<datatable>
<physical>
<distribution id="100"/>
</physical>
</datatable>
<software>
<implementation>
<distribution id="200"/>
</implementation>
</software>
<additionalMetadata>
<describes>100</describes>
<describes>200</describes>
<describes>300</describes>
<describes>400</describes>
</additionalMetadata>
</eml>
Xpath を使用して、//physical/distribution
またはの id 値と等しい値を持たない「記述」のノード セットを選択しようとしましたsoftware/implementation/distribution
。上記の場合、ノードセットを取得したい:
<deseribes>300</describes>
<deseribes>400</describes>
(100 と 200 は//physical/distribution
または の属性 ID 値ですsoftware/implementation/distribution
)。
私は次のようなものを書きました:
<xsl:with-param name="describes-list"
select="./describes[//physical/distribution/@id !=. and
//software/implementation/distribution/@id != .] "/>
上記の例で動作します。ただし、データテーブルとソフトウェアの要素は繰り返し可能です。したがって、この xml は有効です。
<eml>
<datatable>
<physical>
<distribution id="100"/>
</physical>
</datatable>
<datatable>
<physical>
<distribution id="300"/>
</physical>
</datatable>
<software>
<implementation>
<distribution id="200"/>
</implementation>
</software>
<additionalMetadata>
<describes>100</describes>
<describes>200</describes>
<describes>300</describes>
<describes>400</describes>
</additionalMetadata>
</eml>
しかし、私の xslt は上記の例では機能しません :(
これに光を当てていただけませんか?前もって感謝します!
ジン