Как я могу преобразовать атрибут элемента в имя элемента в XSLT? - PullRequest
3 голосов
/ 30 марта 2009

Я бы связался, чтобы преобразовать XML с атрибутами, такими как атрибут 'name', в следующем:

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

в элементы, называемые тем, что было в атрибуте имени:

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

с использованием XSLT. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 30 марта 2009

Вы можете создавать элементы по имени, используя 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>
3 голосов
/ 30 марта 2009
<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 />
...