<xsl:template>-Element
Definiert eine mehrmals verwendbare Vorlage, mit der die gewünschte Ausgabe für Knoten eines bestimmten Typs und Inhalts generiert werden kann.
<xsl:template
name= Qname
match = Pattern
priority = number
mode = QName
</xsl:template>
Attribute
- name
Der zu erweiternde Qualifizierte Namen. Wenn dieser über ein Präfix verfügt, wird das Präfix in einen URI-Verweis (Uniform Resource Identifier) erweitert. Dabei werden die Namespacedeklarationen verwendet, die für das Attribut gültig sind, in dem der Name auftritt. Der erweiterte Name, bestehend aus dem lokalen Teil des Namens und dem URI-Verweis, der auch NULL sein kann, wird als Name der Vorlage verwendet. Der Standardnamespace wird nicht für Namen ohne Präfix verwendet. Wenn ein<xsl:template>
-Element über einname
-Attribut verfügt, kann es auch einmatch
-Attribut aufweisen.
- match
Ein Muster, das den oder die Quellknoten angibt, für die die Regel gilt. Dasmatch
-Attribut ist erforderlich, wenn das<xsl:template>
-Element nicht über einname
-Attribut verfügt. Der Inhalt des<xsl:template>
-Elements ist die Vorlage, die beim Anwenden der Vorlagenregel instantiiert wird.
priority
Die Prioritätszahl für die Vorlage. Alle übereinstimmenden Vorlagenregeln, die eine niedrigere Priorität als die entsprechende(n) Vorlagenregel(n) mit der höchsten Priorität aufweisen, werden nicht berücksichtigt. Der Wert muss einer positiven oder negativen reellen Zahl von 0–9 entsprechen, die mit der Produktionsnummer übereinstimmt und optional ein vorangestelltes Minuszeichen (-) aufweist. Die Standardpriorität wird wie folgt berechnet:Wenn das Muster mehrere Alternativen enthält, die durch | getrennt sind, wird es wie eine Gruppe von Vorlagenregeln behandelt, eine für jede Alternative.
Wenn das Muster die Form eines qualifizierten Namens (QName) oder des Verarbeitungsanweisungsliterals aufweist, dem jeweils der Achsenspezifizierer eines untergeordneten Knotens oder eines Attributs vorangestellt ist, ist die Priorität 0.
Wenn das Muster ein Name ist, dem der Achsenspezifizierer eines untergeordneten Knotens oder Attributs vorangestellt ist, ist die Priorität -0,25.
Andernfalls, wenn das Muster nur aus einem Knotentest besteht, dem der Achsenspezifizierer eines untergeordneten Knotens oder Attributs vorangestellt ist, ist die Priorität -0,5.
Andernfalls ist die Priorität 0,5.
Daher hat die am häufigsten verwendete Musterart (ein Muster, das einen Test auf einen Knoten mit einem bestimmten Typ und einem bestimmten erweiterten Namen durchführt) die Priorität 0. Die nächste, weniger spezifische Musterart (ein Muster, das einen Test auf einen Knoten mit einem bestimmten Typ und einem erweiterten Namen mit einem bestimmten Namespace-URI durchführt) hat die Priorität -0,25. Muster, die weniger spezifisch sind als dieses (Muster, die nur auf Knoten mit bestimmten Typen testen) haben die Priorität -0,5. Muster, die eine höhere Spezifizierung als die am häufigsten verwendete Musterart aufweisen, haben die Priorität 0,5.
- mode
Der mode-Wert. Mit diesem Wert kann ein Element mehrfach verarbeitet werden, wobei jedes Mal ein anderes Ergebnis erzielt wird. Wenn<xsl:template>
über keinmatch
-Attribut verfügt, darf es auch keinmode
-Attribut aufweisen. Wenn ein<xsl:apply-templates>
-Element über einmode
-Attribut verfügt, kann es nur auf Vorlagenregeln von<xsl:template>
-Elementen angewendet werden, die über einmode
-Attribut mit demselben Wert verfügen. Wenn ein<xsl:apply-templates>
-Element über keinmode
-Attribut verfügt, wird es nur auf Vorlagenregeln von<xsl:template>
-Elementen angewendet, die über keinmode
-Attribut verfügen.
Elementinformationen
Anzahl der Vorkommen |
Unbegrenzt |
Übergeordnete Elemente |
|
Untergeordnete Elemente |
xsl:apply-imports,xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:param, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, Ausgabeelemente |
Hinweise
Beachten Sie, dass die Vorlage kein vollständiges XML-Dokument generieren muss (dies gilt auch für die Stammvorlage, außer bei Verwendung von transformNodeToObject
), sondern dass möglicherweise nur ein XML-Fragment generiert wird. Es ist möglich, nicht eingeschlossenen Text oder mehrere von der Vorlage definierte Dokumentelemente einzuschließen. Dies vereinfacht die Generierung von nicht formatiertem Text oder XML-Fragmenten, die von einer Anwendung (z. B. in eine HTML-Seite eingefügte HTML-Fragmente) weiterverarbeitet werden können.
Der Wert des name
-Attributs ist ein erweiterter QName. Wenn dieser über ein Präfix verfügt, wird dieses in einen URI-Verweis erweitert. Dabei werden die Namespacedeklarationen verwendet, die für das Attribut gültig sind, in dem der Name auftritt. Der erweiterte Name, bestehend aus dem lokalen Teil des Namens und dem URI-Verweis, der auch NULL sein kann, wird als Name der Vorlage verwendet. Der Standardnamespace wird nicht für Namen ohne Präfix verwendet.
Wenn ein <xsl:template>
-Element über ein name
-Attribut verfügt, kann es auch ein match
-Attribut aufweisen. Ein <xsl:call-template>
-Element ruft eine Vorlage anhand des Namens auf. Sie verfügt über ein erforderliches name
-Attribut, das die aufzurufende Vorlage identifiziert. Im Unterschied zu <xsl:apply-templates>
ändert <xsl:call-template>
den aktuellen Knoten oder die aktuelle Knotenliste nicht.
Wenn ein Stylesheet mehrere Vorlagen mit demselben Namen enthält, tritt ein Fehler auf.
Beispiel
Diese Vorlagenregel verfügt über ein Muster, das <stock>
-Elemente angibt und ein Ausgabeelement <DIV>
mit dem Attribut STYLE="font-weight:bold"
erstellt:
XML-Datei (portfolio.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="templ.xsl"?>
<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes" xml:space="preserve">
<stock exchange="nyse">
<name>zacx corp</name>
<symbol>ZCXM</symbol>
<price dt:dt="number">28.875</price>
</stock>
<stock exchange="nasdaq">
<name>zaffymat inc</name>
<symbol>ZFFX</symbol>
<price dt:dt="number">92.250</price>
</stock>
<stock exchange="nasdaq">
<name>zysmergy inc</name>
<symbol>ZYSZ</symbol>
<price dt:dt="number">20.313</price>
</stock>
</portfolio>
XSLT-Datei (templ.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="stock">
<DIV STYLE="font-weight:bold">
Symbol: <xsl:value-of select="symbol" />,
Price: <xsl:value-of select="price" />
</DIV>
</xsl:template>
</xsl:stylesheet>
Ausgabe
Dies ist die formatierte Ausgabe:
Symbol: ZCXM, Price: 28.875
Symbol: ZFFX, Price: 92.250
Symbol: ZYSZ, Price: 20.313