XSL - 用值重命名元素
XSL - Rename element with value
只是想学习 XSLT。请参考输入和输出文件
输入 xml 只是文档的一部分。本文档还有更多的记录级别
<?xml version="1.0" encoding="UTF-8"?>
<record level="1">
<GROUP>ABC</GROUP>
<NAME>1100000000111</NAME>
</record>
期望的输出
我想将 <record level="1">
重命名为 <record_level1>
<?xml version="1.0" encoding="UTF-8"?>
<record_level1>
<GROUP>ABC</GROUP>
<NAME>1100000000111</NAME>
</record_level1>
如果您以 identity transform 开始复制所有内容作为默认行为,那么您可以添加专门的模板来匹配具有 @level
属性的 record
元素。在该模板内,创建一个元素,其名称将元素名称与属性名称和值连接起来:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="record[@level]">
<xsl:element name="{concat(name(), '_level', @level)}">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
请注意元素名称属性内使用的 {}
大括号。否则它会期望一个字符串文字。 attribute value template allows you to execute code to construct that name value, using the concat()
函数。
只是想学习 XSLT。请参考输入和输出文件 输入 xml 只是文档的一部分。本文档还有更多的记录级别
<?xml version="1.0" encoding="UTF-8"?>
<record level="1">
<GROUP>ABC</GROUP>
<NAME>1100000000111</NAME>
</record>
期望的输出
我想将 <record level="1">
重命名为 <record_level1>
<?xml version="1.0" encoding="UTF-8"?>
<record_level1>
<GROUP>ABC</GROUP>
<NAME>1100000000111</NAME>
</record_level1>
如果您以 identity transform 开始复制所有内容作为默认行为,那么您可以添加专门的模板来匹配具有 @level
属性的 record
元素。在该模板内,创建一个元素,其名称将元素名称与属性名称和值连接起来:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="record[@level]">
<xsl:element name="{concat(name(), '_level', @level)}">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
请注意元素名称属性内使用的 {}
大括号。否则它会期望一个字符串文字。 attribute value template allows you to execute code to construct that name value, using the concat()
函数。