【问题标题】:XSLT: XML first attribute need to be transformed to element with value of second attributeXSLT:XML 第一个属性需要转换为具有第二个属性值的元素
【发布时间】:2021-01-28 22:48:32
【问题描述】:

使用 xslt 1.0,我需要将输入 xml 转换为输出 xml(见下文)。 换句话说,每个具有“Field”和“Value”两个属性的“Data”元素都需要转换为名称为“Field”值和“Value”值的元素。

<?xml version="1.0" encoding="utf-8"?>
<DataFile>
<DataSet Name="DataSet1">
  <Data Field="Id" Value="111"/>
  <Data Field="Name" Value="John"/>
  <Data Field="ZIP" Value="10000"/>
  <Data Field="Phone" Value="0102030405"/>
</DataSet>
<DataSet Name="DataSet2">
  <Data Field="Id" Value="222"/>
  <Data Field="Name" Value="James"/>
  <Data Field="ZIP" Value="10020"/>
</DataSet>
<DataSet Name="DataSet3">
  <Data Field="Id" Value="333"/>
  <Data Field="Name" Value="Mike"/>
  <Data Field="Phone" Value="0607080910"/>
</DataSet>
</DataFile>

我需要文件:

<DataFile>
   <DataSet Name="DataSet1">
      <Id>111</Id>
      <Name>John</Name>
      <ZIP>10000</ZIP>
      <Phone>0102030405</Phone>
   </DataSet>
   <DataSet Name="DataSet2">
      <Id>222</Id>
      <Name>James</Name>
      <ZIP>10020</ZIP>
   </DataSet>
   <DataSet Name="DataSet3">
      <Id>333</Id>
      <Name>Mike</Name>
      <Phone>0607080910</Phone>
   </DataSet>
</DataFile>

我尝试使用类似示例中的 XSLT,但它不起作用(出现类似“无法使用提供的 XML/XSL 输入生成 XML 文档。无效的元素名称(空序列)”之类的错误。

XSLT:

<?xml version="1.0"?>
<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="Data">
      <xsl:element name="{@name}" >
      <xsl:value-of select="@Value"/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

请帮忙

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    你想要&lt;xsl:element name="{@Field}"&gt;而不是&lt;xsl:element name="{@name}"&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 2017-11-03
      • 1970-01-01
      • 2015-06-07
      • 2013-01-18
      • 1970-01-01
      • 2016-11-10
      • 2010-11-20
      相关资源
      最近更新 更多