Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ü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.

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.

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 falseund 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.

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.

Ein Beispiel, das zeigt, wie benannte Vorlagen in einem Commit-Skript verwendet werden, finden Sie unter Beispiel: Require and Restrict Configuration Statements.