XSL-Übersicht / Konvertierung von XML nach XML / Konvertierung von Elementen in Attribute

Konvertierung von Elementen in Attribute

Konvertierung von Elementen in Attribute

➪ In diesem Abschnitt lesen Sie, wie die Konvertierung von Elementen in Attribute mit Pfaden und Achsen einfach umgesetzt werden kann.

Auf dieser Seite:

Das Beispiel verdeutlicht die Konvertierung von Elementen in Attribute mit XPath-Achsen, speziell . Hierbei geht es darum, sämtliche Childnodes anzusprechen, die nur ein einziges Mal auftreten und daher für die Konvertierung in Attribute geeignet sind.


 <xsl:template match="/">
  <Ergebnis>
   <xsl:for-each select="/Orte/Ort">
    <Stadt>
     <xsl:for-each select="child::*[ count(child::*) = 0 ]">
      <xsl:attribute name="{local-name()}">
        <xsl:value-of select="./text()"/>
      </xsl:attribute>
     </xsl:for-each>
     <xsl:for-each select="Person">
      <Einwohner>
       <xsl:for-each select="child::*[position() &lt; 6]">
        <xsl:attribute name="{local-name()}">
          <xsl:value-of select="./text()"/>
        </xsl:attribute>
       </xsl:for-each>
       <xsl:for-each select="Kauf">
        <Einkauf>
         <xsl:for-each select="child::*">
          <xsl:attribute name="{local-name()}">
            <xsl:value-of select="./text()"/>
          </xsl:attribute>
         </xsl:for-each>         
         <xsl:attribute name="xpath">
          <xsl:for-each select="ancestor-or-self::*">
           <xsl:text>/</xsl:text>
           <xsl:value-of select="local-name()"/>
          </xsl:for-each>
         </xsl:attribute>
        </Einkauf>
       </xsl:for-each>
      </Einwohner>
     </xsl:for-each>
    </Stadt>
   </xsl:for-each>
  </Ergebnis>
 </xsl:template>

local-name(), node-name()

Die XPath-Funktion local-name() gibt den Namen eines Elements ohne Namespace-Präfix zurück. node-name() kann ein Präfix beinhalten, wenn ein Namespace zugeordnet ist.

Die Verwendung der local-name()-Funktion kann zu Problemen führen, wenn das XML-Dokument mit Namespaces arbeitet.

wg / 1. April 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/XSL_XML2XML_E2A.html