How to remove duplicate XML nodes using XSLTとその他の関連する質問がありますが、ノード全体が重複していると重複を削除するように見えます。私がしたいのは、そのノード内の1つのプロパティが別のノード内のプロパティと一致する場合にのみノードを削除することです。xsltを使用してそのプロパティが別の用語の複製である場合に用語を削除する
私のXMLでは、2 termType
があります。 NdおよびPt。 Ptsを使用する必要があります。システムがNdを見つけた場合は、termName
を使用すべきではなく、代わりにrelation
termName
で参照されるPtの名前を使用する必要があります。
しかし、何かが間違っていて、一部のNdsは、参照する必要があるPtsの名前と同じ名前を持っています。これらの用語は無関係であると私は彼らに
を削除する必要があります私が持っているのNd:<term>
の<termName>
場合
<term>
<termId>1</termId>
<termUpdate>Add</termUpdate>
<termName>A</termName>
<termType>Nd</termType>
<relation>
<relationType>USE</relationType>
<termId>2</termId>
<termName>A</termName>
</relation>
</term>
<term>
<termId>2</termId>
<termUpdate>Add</termUpdate>
<termName>A</termName>
<termType>Pt</termType>
</term>
<term>
<termId>3</termId>
<termUpdate>Add</termUpdate>
<termName>C</termName>
<termType>Nd</termType>
<relation>
<relationType>USE</relationType>
<termId>4</termId>
<termName>D</termName>
</relation>
</term>
<term>
<termId>4</termId>
<termUpdate>Add</termUpdate>
<termName>D</termName>
<termType>Pt</termType>
</term>
は、通過して、それを見るために、XSLT(またはいくつかの他の方法)を使用することが可能ですは、<relation>
のPt用語の<termName>
と一致し、全体の用語を削除しますか? <relation>
で参照されている用語は、常にPt用語です。
出力:
<term>
<termId>2</termId>
<termUpdate>Add</termUpdate>
<termName>A</termName>
<termType>Pt</termType>
</term>
<term>
<termId>3</termId>
<termUpdate>Add</termUpdate>
<termName>C</termName>
<termType>Nd</termType>
<relation>
<relationType>USE</relationType>
<termId>4</termId>
<termName>D</termName>
</relation>
</term>
<term>
<termId>4</termId>
<termUpdate>Add</termUpdate>
<termName>D</termName>
<termType>Pt</termType>
</term>
ありがとう!
良い質問、+1。最も基本的で強力なXSLTデザインパターン(アイデンティティルールのオーバーライド)に基づいた完全で簡潔なソリューションについては、私の答えをご覧ください。 –
良い質問+1。 –