<xsl:element> | |
Diese Anweisung ermöglicht die Erstellung eines Elements im Ausgabedokument. Sie funktioniert ähnlich wie die Anweisung <xsl:attribute>. | |
Kategorie | |
Anweisung |
|
Obligatorische Attribute | |
|
|
Optionale Attribute | |
|
|
Inhalt | |
Eine XSLT-Vorlage |
|
Übergeordnetes Element | |
<xsl:element> erscheint innerhalb einer Vorlage. |
|
Definition | |
XSLT-Abschnitt 7.1.2, Erzeugung von Elementen mit xsl:element. |
|
Beispiel | |
Es wird ein generisches Stylesheet verwendet, welches das Eingabedokument in den Ergebnisbaum kopiert, mit einer Ausnahme: alle Attribute im Originaldokument werden im Ausgabedokument in untergeordnete Elemente konvertiert. Als Name der neuen Elemente wird der Name des Attributs format verwendet und sein Text wird zum Wert des Attributs. Da man nicht wissen kann, wie der Name des Attributs lautet, bevor das XML-Ausgangsdokument verarbeitet worden ist, muss mit Hilfe des Elements <xsl:element> der Ergebnisbaum erstellt werden. Hier der Inhalt des Stylesheets: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml"/> <xsl:template match="*"> <xsl:element name="{name()}"> <xsl:for-each select="@*"> <xsl:element name="{name()}"> <xsl:value-of select="."/> </xsl:element> </xsl:for-each> <xsl:apply-templates select="*|text()"/> </xsl:element> </xsl:template> </xsl:stylesheet> Dieses Stylesheet verwendet das Element <xsl:element> an zwei Stellen: erstens, um ein neues Element mit demselben Namen wie das Originalelement zu erstellen und zweitens, um neue Elemente mit den Namen der einzelnen Attribute zu erstellen. Das Stylesheet wird auf das folgende Dokument angewendet: <?xml version="1.0"?> <report> <title>Miles Flown in 2001</title> <month sequence="01"> <miles-flown>12379</miles-flown> <miles-earned>35215</miles-earned> </month> <month sequence="02"> <miles-flown>32857</miles-flown> <miles-earned>92731</miles-earned> </month> <month sequence="03"> <miles-flown>19920</miles-flown> <miles-earned>76725</miles-earned> </month> <month sequence="04"> <miles-flown>18903</miles-flown> <miles-earned>31781</miles-earned> </month> </report> Und hier die Ergebnisse: <?xml version="1.0" encoding="UTF-8"?> <report> <title>Miles Flown in 2001</title> <month><sequence>01</sequence> <miles-flown>12379</miles-flown> <miles-earned>35215</miles-earned> </month> <month><sequence>02</sequence> <miles-flown>32857</miles-flown> <miles-earned>92731</miles-earned> </month> <month><sequence>03</sequence> <miles-flown>19920</miles-flown> <miles-earned>76725</miles-earned> </month> <month><sequence>04</sequence> <miles-flown>18903</miles-flown> <miles-earned>31781</miles-earned> </month> </report> Die Anweisung <xsl:element> hat alle Elemente im Ausgabedokument erstellt, einschließlich der <sequence>-Elemente, die aus den sequence-Attributen im Originaldokument entstanden sind. |