<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 ein name-Attribut verfügt, kann es auch ein match-Attribut aufweisen.
  • match
    Ein Muster, das den oder die Quellknoten angibt, für die die Regel gilt. Das match-Attribut ist erforderlich, wenn das <xsl:template> -Element nicht über ein name-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 kein match-Attribut verfügt, darf es auch kein mode-Attribut aufweisen. Wenn ein <xsl:apply-templates>-Element über ein mode-Attribut verfügt, kann es nur auf Vorlagenregeln von <xsl:template>-Elementen angewendet werden, die über ein mode-Attribut mit demselben Wert verfügen. Wenn ein <xsl:apply-templates>-Element über kein mode-Attribut verfügt, wird es nur auf Vorlagenregeln von <xsl:template>-Elementen angewendet, die über kein mode-Attribut verfügen.

Elementinformationen

Anzahl der Vorkommen

Unbegrenzt

Übergeordnete Elemente

xsl:stylesheet, xsl:transform

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