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:with-param

Mit der Sub-Instruktion xsl:with-param kann einem im Template bereits definierten lokalen Parameter ein Wert übergeben werden. Die Sub-Instruktion wird bei den Templateaufrufen xsl:call-template, xsl:apply-templates, xsl:apply-imports und xsl:next-match verwendet. Ist der benannte Parameter in den aufgerufenen Template nicht definiert, wird ein Fehler ausgegeben. Der Parameter wird mit dem name-Attribut des xsl:with-param-Elements benannt. Diese muss den gleichen Parameternamen enthalten, wie einer der definierten Parameter.

Wird dem definierten Parameter bereits ein Wert zugewiesen, wird dieser durch den übergebenen Wert der xsl:with-param-Instruktion überschrieben. Der Wert der übergeben werden soll, wird durch das Attribut select angegeben oder durch den Inhalt des xsl:with-param-Elements. Hat das Element ein select-Attribut, muss es leer sein. Hat es weder Inhalte noch ein select-Attribut, wird ein leerer Wert übergeben und der Defaultwert des Parameters wird entfernt.

Zusätzlich kann seit XSLT 2.0 der Datentyp, dem die übergebenen 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, name, tunnel

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="/">
        <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>

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:template match="/">
        <root>
            <xsl:call-template name="test">
                <xsl:with-param name="zaehler" select="1"></xsl:with-param>
            </xsl:call-template>
        </root>
    </xsl:template>
    <xsl:template name="test">
        <xsl:param name="zaehler" select="1"></xsl:param>
        Paragraph <xsl:value-of select="$zaehler"></xsl:value-of>,
        <xsl:if test="$zaehler<count(//para)">
            <xsl:call-template name="test">
                <xsl:with-param name="zaehler" select="$zaehler+1"></xsl:with-param>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>
<?xml version="1.0"encoding="UTF-8"?>
<root>
        Paragraph 1,        
        Paragraph 2,        
        Paragraph 3,
</root>

 

 

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