2009-12-08 2 views
0

Давайте предположим, что мы имеем XML:Как удалить часть прикрепленного xml с xslt?

 
<tag1> text <tag2> { 
    <tag3> name1 </tag3>:<tag4><val>value1</val>;</tag4> 
    <tag3> name2 </tag3>:<tag4><val>value2</val>;</tag4> 
}</tag2> </tag1> 

Как удалить всю строку с name1 и value1 (от <TAG3> в </Вкладка4 >) с помощью XSLT?

У меня нет проблем с удалением tag3 и tag4, но этот символ двоеточия (':') для меня проблематичен.

+0

Это, по существу такой же, как свой собственный предыдущий вопрос здесь: http://stackoverflow.com/questions/1825058/how-to-create-xslt-transformation-for-srcml. Вы еще не прокомментировали мой ответ. – Tomalak

ответ

0

Это решение, которое очень уродливое, но оно работает. Это уродливо, потому что условие нужно повторять 3 раза. Должен быть более простой способ сделать это.

<xsl:template match="tag3[text()=' name1 ' and following-sibling::tag4[val/text()='value1']]"/> 
<xsl:template match="text()[preceding-sibling::tag3[text()=' name1 '] and following-sibling::tag4/val[text()='value1']]" /> 
<xsl:template match="tag4[val/text()='value1' and preceding-sibling::tag3[text()=' name1 ']]" /> 
<xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 
Смежные вопросы