Hallo,
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:
<xsl:when test="$Parameter='wert1' or 'wert2' or 'wert3'">
Syntaktisch wird meine Lösung vom XSLT-Parser akzeptiert
Ja, deine XPath-Ausdruck ist syntaktisch absolut korrekt.
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?
(ich gehe dafon aus, dass dies [<xsl:when test="$Parameter=''wert1">] nr Tipp-, Copy&Past-Fehler ist)
Der Parser "denkt" so:
test: $Parameter='wert1'?
ja: führe Anweisungen aus, beende <choose>.
nein: test: $Parameter='wert2'?
ja: führe Anweisungen aus, beende <choose>.
nein: test: $Parameter='wert3'?
ja: führe Anweisungen aus, beende <choose>.
nein: gehe zu nächsten <when> oder zu <otherwise>.
Sobald also der erste Ausdruck erfüllt ist, werden die Anweisungen ausgeführt und xsl:choose beendet.
Ich vermute, dass du entweder etwas in deinem XML/XSL noch hast, was bewirkt, dass der (Parameter) Test immer mit "ja" beantwortet wird, oder du werwendest diese Abfrage an der falschen stelle.
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.
Ja, aber ich verstehe nciht ganz, was du möchstest.
geht es dir nur darum eventuell "zu viele" <when>s zusammenzufassen, oder um die Ausführung der XPath-Ausdrucks?
Grüße
Thomas