我的要求是将所有包含 _ 的节点名称重命名为新名称。如何去除节点名称中 _ 的右侧字符并将名称的左侧保留为新节点名称?例如
<abc_2013></abc_2013> to be renamed as <abc></abc>
我的要求是将所有包含 _ 的节点名称重命名为新名称。如何去除节点名称中 _ 的右侧字符并将名称的左侧保留为新节点名称?例如
<abc_2013></abc_2013> to be renamed as <abc></abc>
这种转变:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[contains(name(), '_')]">
<xsl:element name="{substring-before(name(),'_')}"
namespace="{namespace-uri()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
应用于此 XML 文档时:
<abc_2013>xYz</abc_2013>
产生想要的正确结果:
<abc>xYz</abc>
说明:
正确使用和覆盖身份规则。
正确使用功能substring-before()