XSLT-Elemente

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

 

 

xsl:param

Das xsl:param-Element definiert einen Parameter der mit einem Namen als Referenz versehen wird und dem Werte, Strings oder ganzer Code zugeordnet werden kann. Hierbei kann xsl:param als Instruktion innerhalb einer Template-Regel auftauchen (lokaler Parameter) oder aber als Deklaration als Toplevel Element (globaler Parameter). Dabei darf das xsl:param-Element kein Geschwisterelement auf der Preceding-Sibling-Achse haben. Ausnahme dabei ist u.a. ein anderes xsl:param-Element und die xsl:import-Deklaration. Der Parameter kann nur innerhalb des Templates (lokal) bzw. des Stylesheets (global) verwendet werden, in dem er definiert wurde.

Der Name des Parameters wird mit dem Attribut name zugeordnet. Innerhalb des Gültigkeitsbereiches kann der Parameter mit $name (name für den Namen des Parameters) an Stelle eines XPath-Ausdruck abgerufen werden.

Innerhalb des Templates bzw. Stylesheets kann dem Parameter nur genau ein Wert zugeordnet werden. Dieser kann allerdings im Falle des lokalen Parameters 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 der lokale Parameter durch die externe Ermittlung bei diesen Aufrufen durchaus unterschiedliche Werte erhalten.

Dem Parameter kann mit dem select Attribut ein Defaultwert zugewiesen werden. Wird kein Wert mit xsl:with-param beim Aufruf des Templates übergeben, erhält der Parameter diesen Wert. Hat ein xsl:param-Element ein Attribut select, muss es leer sein. Alternativ zum select Attribut kann der Defaultwert durch den Inhalt des Elements bestimmt werden. So können dem Parameter ganze Template-Codes zugeordnet werden. Wird dem Parameter jedoch beim Aufruf des Templates ein Wert übergeben, werden alle diese Wert-Zuordnungen überschrieben.

Zusätzlich kann seit XSLT 2.0 der Datentyp, dem die Werte entsprechen müssen (as) angegeben werden sowie ob eine Übergabe eines Wertes obligatorisch ist (required) und ob es sich bei dem Parameter um einen Tunnel-Parameter handelt (tunnel).

Attribute

name, select, as, required, tunnel

Beispiel 1

<?xml version="1.0"encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:template match="/">
        <xsl:call-template name="hallo">
            <xsl:with-param name="style"></xsl:with-param>
        </xsl:call-template>
    </xsl:template>
    <xsl:template match="section" name="hallo">
        <xsl:param name="style" select="para/@style"></xsl:param>
        <p style="{$style}">
            <xsl:value-of select="$style"></xsl:value-of>
        </p>
    </xsl:template>
</xsl:stylesheet>

Beispiel 2

<?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:param name="style" select="para/@style"></xsl:param>
        <p style="{$style}">
            <xsl:value-of select="$style"></xsl:value-of>
        </p>
    </xsl:template>
</xsl:stylesheet>

Beispiel 3

<?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:param name="style" select="root/section/para/@style"></xsl:param>
   <xsl:template match="section">
      <p style="{$style}">
         <xsl:value-of select="$style"></xsl:value-of>
      </p>
   </xsl:template>
</xsl:stylesheet>

Beispiel 4

<?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="/">
        <xsl:apply-templates>
            <xsl:with-param name="style" select="root/section[1]/para/@style">
      </xsl:with-param>
        </xsl:apply-templates>
    </xsl:template>
    <xsl:template match="section">
        <xsl:param name="style" select="para/@style"></xsl:param>
        <p style="{$style}">
            <xsl:value-of select="$style"></xsl:value-of>
        </p>
    </xsl:template>
</xsl:stylesheet>

 

 

  > nach oben
   
  > zurück zur alphabetischen Liste der XSLT Elemente