PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XSL - Verstehe eine Bedingung/Ausdruck nicht


Gast
2008-06-23, 16:08:38
Hi!

Ich arbeite gerade eine XML2Code-Guide durch (Quelle: https://www6.software.ibm.com/developerworks/education/x-codexslt/?/index.html ) und verstehe eine Stelle in einem XSL-Dokument nicht:


<xsl:template name="makeImport">
<xsl:param name="package"/>
<xsl:param name="wildcard" select="true()"/>

<xsl:choose>
<xsl:when test="$wildcard">
import <xsl:value-of select="$package"/>.*;
</xsl:when>
<xsl:otherwise>
import <xsl:value-of select="$package"/>;
</xsl:otherwise>
</xsl:choose>
</xsl:template>


Die fett markierte Stelle macht mir zu schaffen: Wo wird denn die Variable 'test' mit einem Wert versehen?

Oder wird auf diese Weise geprüft, ob der Parameter 'wildcard' überhaupt gesetzt wurde bei
<xsl:call-template...>
<xsl:with-parameter name="wildcard" select="true()">?

Besserwissend
2008-06-23, 19:12:00
Oder wird auf diese Weise geprüft, ob der Parameter 'wildcard' überhaupt gesetzt wurde bei
<xsl:call-template...>
<xsl:with-parameter name="wildcard" select="true()">?

Fast... es wird überprüft, ob der boolesche Parameter wildcard wahr ist
Das <xsl:choose> ist ähnlich eines switch-statements in "klassischen" Programmiersprachen
Das when-Attribut des test-Elements überprüft, ob der boolesche Ausdruck wahr (true) ist.

z.B.

<xsl:template match="/">
<xsl:variable name="zahl" select="3" />
<xsl:choose>
<xsl:when test="$zahl=1">
<xsl:text>eins</xsl:text>
</xsl:when>
<xsl:when test="$zahl=2">
<xsl:text>zwei</xsl:text>
</xsl:when>
<xsl:when test="$zahl=3">
<xsl:text>drei</xsl:text>
</xsl:when>
<xsl:when test="$zahl=4">
<xsl:text>vier</xsl:text>
</xsl:when>
<xsl:when test="$zahl &gt; 4">
<xsl:text>zahl größer als 4</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>Zahl nicht 1,2,3, 4 oder größer als 4</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>


In Deinem Beispiel ist der Parameter ein optionaler boolescher Parameter der auf "true()" gesetzt ist, falls Du kein Argument mit <xsl:with-param name="wildcard" ... /> übergibst