时间:2013-10-15 05:42:02

标签: xml xslt namespaces xml-namespaces

我正在尝试使用<xsl:copy-of select="." />复制当前节点下面的所有节点,并且它还复制根节点中存在的命名空间。  怎么避免这个?

1 个答案:

答案 0 :(得分:1)

如果名称空间不受欢迎,那么在XSLT 2.0中,您可以使用<xsl:copy-of select="." copy-namespaces="no"/>。但请注意,这只会删除未使用的命名空间节点;它不会更改任何元素或属性的命名空间。如果您希望副本中的元素或属性与原始元素或属性位于不同的名称空间中,则需要执行递归浅层副本,如下所示:

<xsl:template match="*">
  <xsl:element name="{local-name()}" namespace="new-namespace">
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>