AUF DIESER SEITE
Übersicht über XSLT-Vorlagen
Ein XSLT-Skript besteht aus einem oder mehreren Regelsätzen, die als Vorlagen bezeichnet werden. Jede Vorlage ist ein Codesegment, das Regeln enthält, die angewendet werden sollen, wenn ein bestimmter Knoten übereinstimmt. Sie verwenden das <xsl:template>
Element, um Vorlagen zu erstellen.
Es gibt zwei Arten von Vorlagen, benannte und unbenannte (oder übereinstimmende), die in den folgenden Abschnitten beschrieben werden.
Unbenannte (Übereinstimmungs-)Vorlagen
Unbenannte Vorlagen, auch als Übereinstimmungsvorlagen bezeichnet, enthalten ein match
Attribut, das einen XPath-Ausdruck enthält, um die Kriterien für Nodes anzugeben, auf denen die Vorlage aufgerufen werden soll. Im folgenden Beispiel gilt die Vorlage für das Element mit dem Namen route
, das ein untergeordnetes Element des aktuellen Kontexts ist und über ein untergeordnetes Element namens verfügt next-hop
, dessen Wert mit der Zeichenfolge 10.10.
beginnt.
<xsl:template match="route[starts-with(next-hop, '10.10.')]"> <!-- ... body of the template ... --> </xsl:template>
Wenn XSLT ein Dokument verarbeitet, durchläuft es standardmäßig rekursiv die gesamte Dokumenthierarchie, untersucht jeden Knoten und sucht nach einer Vorlage, die mit dem aktuellen Knoten übereinstimmt. Wenn eine passende Vorlage gefunden wird, wird der Inhalt dieser Vorlage ausgewertet.
Das <xsl:apply-templates>
Element kann innerhalb einer unbenannten Vorlage verwendet werden, um das standardmäßige, hierarchische Durchlaufen von Knoten durch XSLT einzuschränken und zu steuern. Wenn das <xsl:apply-templates>
Element über ein select
Attribut verfügt, werden nur Nodes durchlaufen, die dem durch das Attribut definierten XPath-Ausdruck entsprechen. Andernfalls werden alle untergeordneten Elemente des Kontextknotens durchlaufen. Wenn das select
Attribut enthalten ist, aber mit keinem Knoten übereinstimmt, wird nichts durchlaufen und es geschieht nichts.
Im folgenden Beispiel stimmt die Vorlagenregel mit dem <route>
Element in der XML-Hierarchie überein. Alle Knoten, die ein changed
Attribut enthalten, werden verarbeitet. Alle <route>
Elemente, die ein changed
Attribut enthalten, werden durch ein <new>
Element ersetzt.
<xsl:template match="route"> <new> <xsl:apply-templates select="*[@changed]"/> </new> </xsl:template>
Durch die Verwendung unbenannter Vorlagen kann das Skript die Position eines Tags in der XML-Hierarchie ignorieren. Wenn Sie z. B. alle <author>
Tags in <div class="author">
Tags konvertieren möchten, können Sie mithilfe von Vorlagen eine einzelne Regel schreiben, die alle <author>
Tags unabhängig von ihrer Position im XML-Eingabedokument konvertiert.
Weitere Informationen darüber, wie unbenannte Vorlagen in Skripten verwendet werden, finden Sie unter xsl:template match="/" Template.
Benannte Vorlagen
Benannte Vorlagen funktionieren wie Funktionen in herkömmlichen Programmiersprachen, jedoch mit einer ausführlichen Syntax. Wenn die Komplexität eines Skripts zunimmt oder ein Codesegment an mehreren Stellen angezeigt wird, können Sie den Code modularisieren und benannte Vorlagen erstellen. Wie Funktionen akzeptieren benannte Vorlagen Argumente und werden nur ausgeführt, wenn sie explizit aufgerufen werden.
Sie erstellen eine benannte Vorlage, indem Sie das <xsl:template>
Element verwenden und das name
Attribut definieren, das einem Funktionsnamen in herkömmlichen Programmiersprachen ähnelt. Verwenden Sie das <xsl:param>
Tag und sein name
Attribut, um Parameter für die benannte Vorlage zu definieren, und schließen Sie optional das select
Attribut ein, um Standardwerte für jeden Parameter zu deklarieren. Das select
Attribut kann XPath-Ausdrücke enthalten. Wenn das select
Attribut nicht definiert ist, ist der Parameter standardmäßig eine leere Zeichenfolge.
Im folgenden Beispiel wird eine Vorlage mit dem Namen my-template
und der Definition von drei Parametern erstellt, von denen einer standardmäßig die Zeichenfolge false
und einer standardmäßig den Inhalt des Elementknotens namens name
enthält, der dem aktuellen Kontextknoten untergeordnet ist. Wenn das Skript die Vorlage aufruft und keinen Parameter übergibt, wird der Standardwert verwendet.
<xsl:template name="my-template"> <xsl:param name="a"/> <xsl:param name="b" select="'false'"/> <xsl:param name="c" select="name"/> <!-- ... body of the template ... --> </xsl:template>
Um eine benannte Vorlage in einem Skript aufzurufen, verwenden Sie das <xsl:call-template>
-Element. Das name
Attribut ist erforderlich und definiert den Namen der Vorlage, die aufgerufen wird. Bei der Verarbeitung wird das <xsl:call-template>
Element durch den Inhalt des Elements ersetzt, das <xsl:template>
es betitelt.
Wenn Sie eine benannte Vorlage aufrufen, können Sie Argumente an die Vorlage übergeben, indem Sie das <xsl:with-param>
untergeordnete Element einschließen und das name
Attribut angeben. Der Wert des <xsl:with-param>
name
Attributs muss mit einem Parameter übereinstimmen, der in der aktuellen Vorlage definiert ist, andernfalls wird der Parameter ignoriert. Optional können Sie für jeden Parameter einen Wert mit dem select
Attribut oder dem Inhalt des <xsl:with-param>
Elements festlegen. Wenn Sie in der aufrufenden Umgebung keinen Wert für den Parameter definieren, übergibt das Skript den aktuellen Wert des Parameters, wenn er zuvor initialisiert wurde, oder es generiert einen Fehler, wenn der Parameter nie deklariert wurde. Weitere Informationen zum Übergeben von Parametern finden Sie unter Übersicht über XSLT-Parameter.
Im folgenden Beispiel wird die Vorlage my-template
mit dem Parameter c
aufgerufen, der den Inhalt des Elementknotens namens other-name
enthält, der dem aktuellen Kontextknoten untergeordnet ist.
<xsl:call-template name="my-template"> <xsl:with-param name="c" select="other-name"/> </xsl:call-template>
Ein Beispiel, das zeigt, wie benannte Vorlagen in einem Commit-Skript verwendet werden, finden Sie unter Beispiel: Require and Restrict Configuration Statements.