2016-07-09 5 views
1

Ich bin neu in XSLT und XML-Strukturen haben, die wie folgt aussehen:Wie benenne ich ein XML-Element mit dem Wert seines ersten Attributs mit XSLT um?

<Loop LoopId="1000A" Name="SUBMITTER NAME"> 
    .... a bunch of sub-elements, etc. 
    </Loop> 

Ich versuche, eine XSLT zu schreiben, die sie alle in diese umwandeln: (verketten den Wert des LoopId Attribut an ihre Mutter Elementname)

<Loop1000A LoopId="1000A" Name="SUBMITTER NAME"> 
    .... a bunch of sub-elements, etc. 
    </Loop1000A> 

ich habe ein Stylesheet, das mich da fast alle die Quere kommen, aber es wird immer von dem Attribute los LoopId und ich weiß nicht, warum - das Stylesheet unter folgendem Ergebnis:

<Loop1000A Name="SUBMITTER NAME"> 
    .... a bunch of sub-elements, etc. 
    </Loop1000A> 

Gibt es eine Möglichkeit, es zu ändern, damit ich das LoopId Attribut behalte?

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

    <xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@LoopId"/> 

    <xsl:template match="*[@LoopId]"> 
    <xsl:variable name="vRep" select="concat('Loop',@LoopId)"/> 
    <xsl:element name="{$vRep}"> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

Dank

+0

Sorry - Fehler Bearbeitung - im obigen Beispiel „@Id“ sollte eigentlich „@LoopId“ –

+0

Sind Sie sicher, dass Sie das tun wollen? Es erzeugt ein sehr schwierig zu verarbeitendes XML. –

+0

Bitte ändern Sie Ihre Frage nicht in eine komplett andere, nachdem die ursprüngliche Frage bereits beantwortet wurde! –

Antwort

1

Entfernen Sie die Vorlage <xsl:template match="@LoopId"/> auf diese Weise entfernen Sie das LoopId Attribut.

+0

Vielen Dank - das ist genau das, was ich will. Ich schätze es sehr. –

Verwandte Themen