我需要将XML转换为更简化的格式。我确信这可以用XSLT完成,但我不确定如何。
我需要转换:
<Fields>
<Field>
<Name>Element1</Name>
<Value>Value 1</Value>
</Field>
<Field>
<Name>Element2</Name>
<Value>Value 2</Value>
</Field>
</Fields>
到
<Fields>
<Element1>Value 1</Element1>
<Element2>Value 2</Element2>
</Fields>
这就是我目前的情况:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:copy>
<xsl:copy-of select="Fields/Field/*"/>
<xsl:apply-templates select="*[name()]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
您的输入XML
<Fields>
<Field>
<Name>Element1</Name>
<Value>Value 1</Value>
</Field>
<Field>
<Name>Element2</Name>
<Value>Value 2</Value>
</Field>
</Fields>
由此XSLT转换,
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Fields">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="Field">
<xsl:element name="{Name}">
<xsl:value-of select="Value"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
产生此输出XML
<?xml version="1.0" encoding="UTF-8"?>
<Fields>
<Element1>Value 1</Element1>
<Element2>Value 2</Element2>
</Fields>
根据要求。