XSLT基于属性删除元素

时间:2013-09-04 15:45:20

标签: xml xslt

我正在努力解决一些基本的XSLT问题。我想从某些XML中删除一个元素,具体取决于它是否具有某个属性。

XML看起来像这样:

<root>
    <Request URL="www.google.com">
        <id name="google"/>
    </Request>
    <Request URL="www.yahoo.com">
        <id name="yahoo"/>
    </Request>
</root>

如果网址为“www.google.com”,我想删除Request元素,并删除元素和,所以我最终会得到以下内容:

<root>
    <Request URL="www.yahoo.com">
        <id name="yahoo"/>
    </Request>
</root>

到目前为止,我有以下内容,但它无效:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!--identity template copies everything forward by default-->     
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <!--empty template suppresses this attribute-->
  <xsl:template match="Request[@Url='www.google.com']"/>
</xsl:stylesheet>

2 个答案:

答案 0 :(得分:1)

只是提示:xml区分大小写。在输入xml中,您在Request元素中有属性URL。但是在xslt中你有@Url。所以试试这个

<xsl:template match="Request[@URL='www.google.com'] "/>

答案 1 :(得分:0)

您的XML源具有属性名称“URL”,但您尝试匹配“Url”。