xsl转换-树xml到普通字段值xml
我想通过xslt自动处理此xml,示例、字段和值必须动态解析,而不是硬编码:xsl转换-树xml到普通字段值xml,xml,xslt,transformation,Xml,Xslt,Transformation,我想通过xslt自动处理此xml,示例、字段和值必须动态解析,而不是硬编码: <root> <field1>value1</field1> <field2>value2</field2> </root> 价值1 价值2 为此: <items> <field>field1</field> <value>value1</value> <field>fi
<root>
<field1>value1</field1>
<field2>value2</field2>
</root>
价值1
价值2
为此:
<items>
<field>field1</field>
<value>value1</value>
<field>field2</field>
<value>value2</value>
</items>
字段1
价值1
字段2
价值2
请提供帮助。您可以使用name()
函数获取当前元素的名称。例如,如果
是
,它将返回'field1'
所以模板的相应部分是
<field><xsl:value-of select="name()" /></field>
<value><xsl:value-of select="." /></value>
您需要类似于:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="root">
<items>
<xsl:apply-templates/>
</items>
</xsl:template>
<xsl:template match="*">
<xsl:param name="firstElement" select="replace(name(),'([0-9])','')"/>
<xsl:param name="SecondElement" select="replace(text(),'([0-9])','')"/>
<xsl:element name="{$firstElement}">
<xsl:value-of select="name()"/>
</xsl:element>
<xsl:element name="{$SecondElement}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
太棒了!谢谢,很简单!谢谢