我有一个XML文件,如下所示,我想使用样式表将属性名称更改为元素名称,然后重命名父级' g'元素包含子元素的文本(如果有意义的话)
原始XML
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="test.xsl" type="text/xsl"?>
<c version="0.1">
<f>
<g>
<column name="A/B">Test_1</column>
<column name="C/D">NA</column>
</g>
<g>
<column name="A/B">Test_2</column>
</g>
<g>
<column name="A/B">Test_3</column>
</g>
</f>
</c>
我想产生这个:
<?xml version='1.0' encoding='UTF-8'?>
<c version="0.1">
<f>
<gTest_1>
<a_b>Test_1</a_b>
<c_d>NA</c_d>
</gTest_1>
<gTest_2>
<a_b>Test_2</a_b>
</gTest_2>
<gTest_3>
<a_b>Test_3</a_b>
</gTest_3>
</f>
</c>
这是样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:variable name="lowerCase" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="upperCase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:template match="column">
<xsl:element name="{translate(translate(@name,'/','_'), $upperCase,$lowerCase)}">
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
此样式表使用属性名称更改重命名元素名称。如何使用属性&#34; A / B&#34;?
的子元素的元素文本重命名父元素感谢。
答案 0 :(得分:1)
添加模板
<xsl:template match="g">
<xsl:element name="{local-name()}{column[@name = 'A/B']}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>