|
definiert ein Template zur Generation des Outputs. Es wird entweder
explizit über einen definierten Namen oder durch einen Vergleich
mit einem Namen eines Knotens im Input-Dokument aufgerufen.
Es wird aufgrund folgender Prioritäten ausgewählt:
- als erstes werden alle Templates ausgewählt, die ein [match] Attribut
besitzen
- aus dieser Liste werden dann nur solche ausgewählt, die den gleichen
Modus besitzten, wie das
<xsl:apply-templates>-Element
(besitzt dieses Element keinen Modus, muss auch das Template keinen Modus
besitzen, um ausgewählt zu werden)
- als nächstes erfolgt die Auswahl aufgrund der Entsprechung ihrer
Pattern mit den selektierten Knoten
- verbleiben nun mehrere Templates, die in Frage kommen, wird dasjenige
mit der höchsten Importpriorität ausgewählt
- bleiben jetzt immernoch mehrere Templates übrig, wird dasjenige
mit der höchsten, definierten Priorität ausgewählt
- wenn es dann noch mehrere Templates gibt, entscheidet der Prozessor,
ob er einen Fehler ausgibt oder, ob er das Template auswählt,
das als letztes im Stylesheet definiert wurde
- konnte kein entsprechendes Template gefunden werden, wird das Default-Template
aufgerufen
Nach der Auswahl des Templates, werden folgende Prozessschritte durchgeführt:
- ist das Template mit dem <xsl:apply-templates>
Element aufgerufen worden, wird der aktuelle Knoten oder das aktuelle
Knotenset intern gespeichert
- es wird ein neuer Zwischenspeicher generiert, der die lokalen Varibalen
halten kann
- alle Parameter, die mit den <xsl:param>
Elementen definiert worden sind, werden evaluiert; enthielt der
Template-Aufruf ein <xsl:with-param>,
wird dessen Name mit den hier definierten Parametern verglichen; falls
er übereinstimmt, wird ihm der Wert des <xsl:with-param>
Elements zugewiesen, anderenfalls wird der Wert direkt berechnet
- der Template-Body wird ausgeführt; Element- und Textknoten werden
der aktuellen Position des Output-Dokuments hinzugefügt
Nachdem der Prozess beendet wurde, wird der Zwischenspeicher des Templates
gelöscht. Alle lokalen Parameter gehen verloren und der Prozessor
springt an die Stelle des Template-Aufrufs zurück.
|