A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Das xsl:variable-Element definiert eine Variable die mit einem Namen als Referenz versehen wird und der Werte, Strings oder ganzer Code zugeordnet werden kann. Hierbei kann xsl:variable als Instruktion innerhalb einer Template-Regel auftauchen (lokale Variable) oder aber als Deklaration als Toplevel Element (globale Variable). Dabei darf das xsl:variable-Element im Gegensatz zu xsl:param überall im Template bzw. Stylesheets stehen. Nur vor den xsl:param-Elementen und den xsl:import-Deklarationen darf das xsl:variable-Element nicht stehen. Die Variable kann nur innerhalb des Templates (lokal) bzw. des Stylesheets (global) verwendet werden, in dem sie definiert wurde.
Der Name der Variablen wird mit dem Attribut name zugeordnet. Innerhalb des Gültigkeitsbereiches kann die Variable mit $name (name für den Namen der Variablen) an Stelle eines XPath-Ausdruck abgerufen werden.
Innerhalb des Templates bzw. Stylesheets kann der Variablen nur genau ein Wert zugeordnet werden. Dieser kann allerdings durch eine Konstruktion, bei der einer lokalen Variablen der Wert eines Parameters der Variablen übegeben wird, welcher wiederum außerhalb des Templates definiert werden und mit der Instruktion xsl:with-param bei einem Aufruf des Templates übergeben werden. Wird also ein Template mehrmals aufgerufen, kann die Variable durch die externe Ermittlung des Parameter-Wertes bei diesen Aufrufen durchaus unterschiedliche Werte erhalten.
Die Wertzuweisung kann mit dem select Attribut erfolgen. Hat ein xsl:variable-Element ein Attribut select, muss es leer sein. Alternativ zum select Attribut kann der Wert durch den Inhalt des Elements bestimmt werden. So können der Variablen ganze Template-Codes zugeordnet werden.
Zusätzlich kann seit XSLT 2.0 der Datentyp, dem die Werte entsprechen müssen (as) angegeben werden. Durch die Ähnliche Funktsionsweise wie die Parameter-Instruktion xsl:param kann es geschehen, dass es eine Variable und Parameter mit dem gleichen Namen im gleichen Gültigkeitsbereich abrufbar sind. Wird nun mit $name der entsprechende Name angegeben wird immer die Variable abgerufen, es sei denn es ist innerhalb des Variablenelements, dass die betreffende Variable definieren soll. Hier gilt die Variable als noch nicht definiert und der Parameter wird übergeben.
Attribute
name, select, as<?xml version="1.0"encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="section"> <xsl:variable name="style" select="following-sibling::para/@style"> </xsl:variable> <p style="{$style}"> <xsl:value-of select="."></xsl:value-of> </p> </xsl:template> </xsl:stylesheet>
<?xml version="1.0"encoding="UTF-8"?> <root> <section> <para style="bold"> Als Gregor Samsa eines Morgens aus unruhigen Träumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. </para> </section> <section> <para style="italic"> Er lag auf seinem panzerartig harten Rücken und sah, wenn er den Kopf ein wenig hob, seinen gewölbten, braunen, von bogenförmigen Versteifungen geteilten Bauch, auf dessen Höhe sich die Bettdecke, zum gänzlichen Niedergleiten bereit, kaum noch erhalten konnte. </para> </section> <section> <para> Seine vielen, im Vergleich zu seinem sonstigen Umfang kläglich dünnen Beine flimmerten ihm hilflos vor den Augen. </para> </section> </root>
<?xml version="1.0"encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="section"> <xsl:variable name="style" select="preceding-sibling::section[1]/para/@style"> </xsl:variable> <p style="{$style}"> <xsl:value-of select="."></xsl:value-of> </p> </xsl:template> </xsl:stylesheet>
<?xml version="1.0"encoding="UTF-8"?> <root> <section> <para style="bold"> Als Gregor Samsa eines Morgens aus unruhigen Träumen erwachte, fand er sich in seinem Bett zu einem ungeheueren Ungeziefer verwandelt. </para> </section> <section> <para style="italic"> Er lag auf seinem panzerartig harten Rücken und sah, wenn er den Kopf ein wenig hob, seinen gewölbten, braunen, von bogenförmigen Versteifungen geteilten Bauch, auf dessen Höhe sich die Bettdecke, zum gänzlichen Niedergleiten bereit, kaum noch erhalten konnte. </para> </section> <section> <para> Seine vielen, im Vergleich zu seinem sonstigen Umfang kläglich dünnen Beine flimmerten ihm hilflos vor den Augen. </para> </section> </root>
<?xml version="1.0"encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:variable name="style" select="root/section/para/@style"></xsl:variable> <xsl:template match="section"> <p style="{$style}"> <xsl:value-of select="."></xsl:value-of> </p> </xsl:template> </xsl:stylesheet>
| > nach oben | |
| > zurück zur alphabetischen Liste der XSLT Elemente |