Xml从属性转换为元素

时间:2014-01-21 15:49:41

标签: xml xslt

我有这个字符串(存储在XElement中):

<MergeFields xmlns="urn:www-xxx-com:schema.xx-calls">
  <MergeField name="XAccountID" value="1234" />
  <MergeField name="XDate" value="01/20/2013 10:00:00 AM" />
</MergeFields>

Mergefields将存储不同的属性。

我需要将它转换为这样的字符串:

<MergeFields>
  <XAccountID>1234</XAccountID>
  <XDate>01/20/2013 10:00:00</XDate>
</MergeFields>

我已经阅读过有关使用XSLT的内容,但我很难找到示例代码。 我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

我相信IBM的DeveloperWorks网站上有一些很好的XSLT教程。我建议读那些;他们应该包括例子。

通常,正确的答案是从身份变换开始。然后添加一个模板 处理特殊情况。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- Identity: Copy all nodes unchanged, recursively -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- Exception: Attributes of MergeFields should be turned into elements
       with the same name and value -->
  <xsl:template match="MergeFields/@*">
    <xsl:element name="name()"><xsl:value-of select="."/></xsl:element>    
  </template>

</xsl:stylesheet>