0

我有一个具有不同命名空间属性的 XML - 它基本上是一种扩展的 XHTML。我想转储所有非 xhtml 命名空间属性。

示例源 XML:

<html>
  <body>
    <p class="test" xy:foo="true">blah</p>
  </body>
</html>

目前,我有以下 XSLT 模板:

<xsl:template match="@*">
    <xsl:choose>
        <xsl:when test='namespace-uri()="http://www.w3.org/1999/xhtml"'><xsl:copy-of select="."/></xsl:when>
        <xsl:otherwise></xsl:otherwise>
    </xsl:choose>
</xsl:template>

所需的输出 XML:

<html>
  <body>
    <p class="test">blah</p>
  </body>
</html>

但它似乎不匹配,因为我得到一个完全没有属性的输出 XML。namespace-uri()我有一种没有按预期工作的感觉。有任何想法吗?

4

1 回答 1

1

XHTML 元素上的属性(就像你的一样class)是没有命名空间的属性,而不是 XHTML 命名空间中的属性。所以使用

<xsl:template match="@*[namespace-uri() != '']"/>

加上身份转换模板。

于 2011-12-17T11:44:37.630 回答