Hallo,
im Buch 'Jetzt lerne ich XML' http://www.mut.de/main/main.asp?page=bookdetails&isbn=382725924X&TOKEN=%7BEB6FA4AA%2DB2C9%2D453B%2D9423%2DAFBBDCDD6F4D%7D&SID=%7BAF90667B%2DF27F%2D414C%2D9D2F%2DD7C698782F50%7D
ist so ein Beispiel
<xsl:when test="$einParameter[.> 2 and .< 5]">hier 'Anweisungen'</xsl:when>
aufgeführt. Damit soll bewirkt werden, dass die 'Anweisungen' bei Werten in [...] zwischen 2 und 5 ausgeführt werden.
Ich möchte aber eine Reihe von ODER-Bedingungen prüfen wie hier:
<choose>
<xsl:when test="$Parameter=''wert1">
'Anweisungen 1'
</xsl:when>
<xsl:when test="$Parameter=''wert2">
'Anweisungen 1'
</xsl:when>
<xsl:when test="$Parameter=''wert3">
'Anweisungen 1'
</xsl:when>
xsl:otherwise
'Anweisungen 2'
</xsl:otherwise>
</choose>
Also 'Anweisungen 1' werden bei Werten wert1, wert2 und wert3 ausgeführt.
Ich habe versucht anlehnend auf das Beispiel aus dem Buch 'Jetzt lerne ich XML' und der Beschreibung für XPath-Operatoren
http://de.selfhtml.org/xml/darstellung/xpathsyntax.htm#operatoren
die <choose>-Tests durch so eine ODER-Bedingung zu ersetzen:
<choose>
<xsl:when test="$Parameter='wert1' or 'wert2' or 'wert3'">
'Anweisungen 1'
</xsl:when>
xsl:otherwise
'Anweisungen 2'
</xsl:otherwise>
</choose>
Syntaktisch wird meine Lösung vom XSLT-Parser akzeptiert (getestet mit TransformerFactory (Package javax.xml.transform.*) und Microsoft XML Parser (MSXML 3.0, Service Pack 4) ) aber der Parser führt die 'Anweisungen 1' immer aus! Unabhängig davon, ob die Bedingungen test="$Parameter='wert1' or 'wert2' or 'wert3'" erfüllt sind oder nicht!? Wo ist der Fehler?
Wie gesagt, mir geht es an dieser Stelle darum, mehrere Überprüfungen dieser Art
<xsl:when test="$Parameter=''wert*">
'Anweisungen 1'
</xsl:when>
im <choose> ...</choose>-Konstrukt durch eine kompaktere übersichtlichere ODER-Anweisung zu ersetzen. Wenn sowas in XSLT machbar ist.