如何用xslt删除部分附加的xml?

时间:2009-12-08 15:06:56

标签: xslt

让我们假设我们有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没有问题,但这个冒号(':')字符对我来说有问题。

1 个答案:

答案 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>