Я посмотрел на Как удалить дубликаты узлов XML с помощью XSLT и другие связанные вопросы, но все они, похоже, касаются удаления дубликатов, если весь узел является дубликатом. То, что я хочу сделать, это удалить узел, только если одно свойство в нем совпадает со свойством в другом узле.
В моем xml у меня 2 termType
с; Nd и Pt. Оч надо использовать. Если система находит Nd, его не следует использовать termName
, вместо этого следует использовать имя Pt, указанное в relation
termName
.
Но что-то пошло не так, и некоторые Nds имеют то же имя, что и имя 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 (или другой метод), чтобы пройти и увидеть, что, если <termName>
Nd <term>
соответствует <termName>
термина Pt в его <relation>
, удалите весь срок? Термины, указанные в <relation>
, всегда являются терминами.
Выход:
<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>
Спасибо!