2017-08-26 1 views
0

So habe ich erstes XML-Dokument:Wie kopiert man den Wert eines Elements in xsl?

<entries> 
    <entry> 
    <field>0</field> 
    </entry> 
    <entry> 
    <field>1</field> 
    </entry> 
    <entry> 
    <field>2</field> 
    </entry> 
    <entry> 
    <field>3</field> 
    </entry> 
</entries> 

Ich mag diese Dokumente mit xsl auf ein neues XML-Dokument TRANSFOR. Ich xsl erstellt:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="//entries"> 
     <xsl:element name="entry"> 
      <xsl:attribute name="field"> 
       <xsl:copy-of select="/entries/entry/field"/> 
      </xsl:attribute> 
      <xsl:value-of select="text()"/> 
     </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

Ich möchte eine neue XML-Datei erhalten:

<entries> 
    <entry field="0"> 
    </entry> 
    <entry field="1"> 
    </entry> 
    <entry field="2"> 
    </entry> 
    <entry field="3"> 
    </entry> 
</entries> 

Ich kann nicht verstehen, wie die Werte der Elemente „Feld“ Kopie in Elemente „Eintrag“ zuzuschreiben in einer neuen xML-Datei

Antwort

0

es auf diese Weise versuchen:

<xsl:template match="/entries"> 
    <xsl:copy> 
     <xsl:for-each select="entry"> 
      <entry> 
       <xsl:attribute name="field"> 
        <xsl:value-of select="field"/> 
       </xsl:attribute> 
      </entry> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 

Oder kurz:

<xsl:template match="/entries"> 
    <xsl:copy> 
     <xsl:for-each select="entry"> 
      <entry field="{field}"/> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 
Verwandte Themen