如何在XSLT中将元素属性转换为元素名称?

时间:2009-03-30 15:21:29

标签: xml xslt transform xml-attribute

我将链接到使用以下属性中的'name'属性转换XML:

<books>
  <book name="TheBumperBookOfXMLProgramming"/>
  <book name="XsltForDummies"/>
</books>

到称为name属性中的元素:

<books>
  <TheBumperBookOfXMLProgramming/>
  <XsltForDummies/>
</books>

使用XSLT。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以使用xsl:element按名称创建元素:

<?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="/">
    <books>
      <xsl:apply-templates />
    </books>

  </xsl:template>

  <xsl:template match="book">
    <xsl:element name="{@name}" />
  </xsl:template>

</xsl:stylesheet>

答案 1 :(得分:3)

<xsl:template match="book">
   <xsl:element name="{@name}">
       <xsl:copy-of select="@*[name()!='name'] />
   </xsl:element>
</xsl:template>

这也会复制<book>上未命名为'name'的任何属性

<book name="XsltForDummies" id="12" />

将变成

<XsltForDummies id="12 />