使用XSLT将名称/值对XML转换为元素
我有一个由名称/值对组成的XML文件,我需要使用xslt 1的格式,其中每个“名称”都是一个元素名,内容中有值。以下是一个例子: 输入:使用XSLT将名称/值对XML转换为元素,xml,xslt,Xml,Xslt,我有一个由名称/值对组成的XML文件,我需要使用xslt 1的格式,其中每个“名称”都是一个元素名,内容中有值。以下是一个例子: 输入: <Root> <Entities> <Entity EntityName="Client"> <Data Name="ADDR_City">Anytown</Data> <Data Name="ADDR_State">SC</Data>
<Root>
<Entities>
<Entity EntityName="Client">
<Data Name="ADDR_City">Anytown</Data>
<Data Name="ADDR_State">SC</Data>
<Data Name="ADDR_Zip">23904</Data>
</Entity>
</Entities>
</Root>
任何城镇
联合国安全理事会
23904
输出:
<Root>
<Entities>
<Client>
<ADDR_City>Anytown</ADDR_City>
<ADDR_State>SC</ADDR_State>
<ADDR_Zip>23904</ADDR_Zip>
</Client>
</Entities>
</Root>
任何城镇
联合国安全理事会
23904
客户端的EntityName不一定是唯一可行的方法…我主要关心的是将Data Name=“…字段转换为正确的格式。感谢您的帮助!
<xsl:for-each select="Data">
<xsl:element Name="{@Name}"><xsl:value-of select="." /></xsl:element>
</xsl:for-each>
编辑:抱歉-我错过了实体
名称。更新时假设基数为每个多个。我想我还需要指出,如果属性EntityName或name具有无效的元素字符(例如空格),或者如果属性完全缺失,则此操作将失败
<?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" indent="yes"/>
<xsl:template match="/Root">
<Root>
<xsl:for-each select="Entities">
<Entities>
<xsl:for-each select="Entity">
<xsl:element name="{@EntityName}">
<xsl:for-each select="Data">
<xsl:element name="{@Name}">
<xsl:value-of select="./text()"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:for-each>
</Entities>
</xsl:for-each>
</Root>
</xsl:template>
</xsl:stylesheet>
小写字母“n”:
有效,但我有多个实体标记,这只输出第一个下有数据元素的实体标记(有几个是空的)。如何将其更改为输出所有的?