<xsl:template> | |
Diese Anweisung definiert eine Ausgabevorlage (Template). Bei Vorlagen, die mit <xsl:template match="x" beginnen, definiert die Vorlage die Transformation eines bestimmten Elements. Bei Vorlagen, die mit <xsl:template name="x" beginnen, wird ein Satz an Ausgabeelementen definiert, die immer dann verarbeitet werden, wenn die Vorlage aufgerufen wird. Für jedes <xsl:template>-Element muss entweder das Attribut match oder das Attribut name definiert sein. Zwar wird das nicht häufig gemacht, es ist aber durchaus möglich, <xsl:template>-Elemente zu erstellen, die sowohl ein match- als auch ein name-Attribut besitzen. | |
Kategorie | |
Element der obersten Ebene |
|
Obligatorische Attribute | |
Keine |
|
Optionale Attribute | |
|
|
Inhalt | |
Eine XSLT-Vorlage. |
|
Übergeordnetes Element | |
<xsl:stylesheet>. <xsl:template> ist ein Element der obersten Ebene und kann nur dem Element <xsl:stylesheet> untergeordnet werden. |
|
Definition | |
XSLT-Abschnitt 5.3, Definition von Template-Regeln |
|
Beispiel | |
Im Beispiel wird eine Vorlage verwendet, die alle Knoten vom Eingabedokument in das Ausgabedokument kopiert, mit einem wichtigen Unterschied: alle Attribute im Originaldokument werden in Elemente im Ausgabedokument kopiert. Die erzeugten Elemente tragen die Namen der ursprünglichen Attribute und der Textinhalt der einzelnen Elemente entspricht dem Wert des entsprechenden Attributs. Hier das Stylesheet: <?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> Das Stylesheet enthält nur eine <xsl:template>-Vorlage, die jeden Knoten im Originaldokument transformiert. Zur Umwandlung des nachfolgenden XML-Dokuments wird das Beispiel-Stylesheet verwendet: <?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> Hier die Ergebnisse der Transformation: <?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> |