【发布时间】:2013-10-15 05:42:02
【问题描述】:
我正在尝试使用<xsl:copy-of select="." /> 复制当前节点下方存在的所有节点,并且它也在复制根节点中存在的命名空间。
如何避免这种情况?
【问题讨论】:
标签: xml xslt namespaces xml-namespaces
我正在尝试使用<xsl:copy-of select="." /> 复制当前节点下方存在的所有节点,并且它也在复制根节点中存在的命名空间。
如何避免这种情况?
【问题讨论】:
标签: xml xslt namespaces xml-namespaces
如果不需要命名空间,那么在 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>
【讨论】: