Я новичок в XSLT и не знаю, как решить случай, когда я хотел бы удалить некоторые узлы, ссылающиеся на другие, в зависимости от позиции ссылочных элементов в коде.Удалить ссылочный элемент итеративно
Вот краткий и простой пример (синтаксис может быть не точным). Источник:
<nodeTypeA id=0>
<nodeTypeB id="1">lorem ipsum</nodeTypeB>
<nodeTypeC id="2">
<nodeTypeD id="3">D1</nodeTypeD>
<nodeTypeE id="4">D2</nodeTypeE>
<nodeTypeF id="5">D2</nodeTypeF>
</nodeTypeC>
<nodeTypeC id="6">
<nodeTypeD id="7">D1</nodeTypeD>
<nodeTypeE id="8">D2</nodeTypeE>
<nodeTypeF id="9">D2</nodeTypeF>
</nodeTypeC>
</nodeTypeA>
<nodeType1 id="a">
<nodeType2 id="b" ref="5">lorem ipsum</nodeType2>
<nodeType3 id="c" ref="2">lorem ipsum</nodeType3>
<nodeType4 id="d" ref="1">lorem ipsum</nodeType4>
<nodeType5 id="e" ref="3">lorem ipsum</nodeType5>
<nodeType6 id="f" ref="4">lorem ipsum</nodeType6>
<nodeType2 id="g" ref="6">lorem ipsum</nodeType2>
<nodeType3 id="h" ref="7">lorem ipsum</nodeType3>
<nodeType5 id="i" ref="8">lorem ipsum</nodeType5>
<nodeType6 id="j" ref="9">lorem ipsum</nodeType6>
</nodeType1>
Моя цель состоит в том, чтобы удалить все детям узлов nodeTypeC (то есть те, с идентификаторами 2 & 6), а также узлами под nodeType1, которые относятся к тем удаленным детям (то есть IDS 3, 4, 5, 7, 8, 9). Поэтому я хотел бы удалить узлы с идентификаторами e, f, b, h, i, j. В результате частичного XML будет следующим:
<nodeTypeA id=0>
<nodeTypeB id="1">lorem ipsum</nodeTypeB>
<nodeTypeC id="2"></nodeTypeC>
<nodeTypeC id="6"></nodeTypeC>
</nodeTypeA>
<nodeType1 id="a">
<nodeType3 id="c" ref="2">lorem ipsum</nodeType3>
<nodeType4 id="d" ref="1">lorem ipsum</nodeType4>
<nodeType2 id="g" ref="6">lorem ipsum</nodeType2>
</nodeType1>
Я новичок в XSLT, так что ответ может показаться тривиальным для вас ... Спасибо за вашу помощь!
Вы говорите, что «* удалить все ребенок из nodeTypeC узлов *» - но, видимо, вы также хотите удалить 'nodeTypeC' узлы самих себя? –