0

我正在为一些基本的 XSLT 苦苦挣扎。我想从某些 XML 中删除一个元素,具体取决于它是否具有某个属性。

XML 看起来像这样:

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

如果 URL 是“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>
4

2 回答 2

1

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

<xsl:template match="Request[@URL='www.google.com'] "/>
于 2013-09-04T16:55:18.167 回答
1

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

于 2013-09-04T16:54:54.467 回答