【发布时间】:2011-07-07 10:27:28
【问题描述】:
我查看了How to remove duplicate XML nodes using XSLT 和其他相关问题,但如果整个节点是重复的,它们似乎都是关于删除重复的。我想要做的是仅当节点中的一个属性与另一个节点中的属性匹配时才删除节点。
在我的 xml 中,我有 2 个termTypes;钕和铂。应该使用积分。在系统找到 Nd 的地方,不应使用它的 termName,而应使用 relation termName 中引用的 Pt 的名称。
但是出了点问题,一些 Nd 的名称与它们应该引用的 Pts 的名称相同。这些术语无关紧要,我需要删除它们
我有:
<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(或其他方法)来查看,如果Nd <term> 的<termName> 与其<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 设计模式的完整、简短和简单的解决方案 - 身份规则的覆盖。
标签: xslt duplicates