让我们假设我们有xml:
<tag1> text <tag2> { <tag3> name1 </tag3>:<tag4><val>value1</val>;</tag4> <tag3> name2 </tag3>:<tag4><val>value2</val>;</tag4> }</tag2> </tag1>
如何使用xslt删除name1和value1(从&lt; tag3&gt;到&lt; / tag4&gt;)的整行?
我删除tag3和tag4没有问题,但这个冒号(':')字符对我来说有问题。
答案 0 :(得分: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>