Hi!
Sorry, zu deinem eigentlichen Problem kann ich leider nichts sagen,
Aber ich vielleicht. Variablen in XSL sind quasi Konstanten. Ihr Wert lässt sich nur ein einziges Mal und an einer einzigen Stelle festlegen. Deswegen kann man bedingte Inhalte nicht à la
if (bedingung)
<var name=foo>x</var>
else
<var name=foo>y</var>
notieren, sondern nur nach dem Prinzip
<var name=foo>
if (bedingung)
x
else
y
</var>
Wie auch immer Javascript ein Ergebnis an XSL zurückliefert, es muss innerhalb von xsl:variable...</xsl:variable> geschehen.
return (navigator.userAgent.search(/4(0[89]|1[01])/)>0);
(Die Klammern um die Bedingung kann man auch noch weglassen, ich schreibe sie wegen der besseren Les- und Erfassbarkeit des Codes.)
Für mich wäre das keine Verbesserung sondern eine Verschlechterung. Klammern, die nicht zwingend aus syntaktischen Gründen gesetzt werden müssen, wie zum Einklammern der if-Bedingung, dienen der Priorisierung eines Teilausdrucks entgegen der Operatorenrangfolge. Ich sehe da also eine Klammer und fange an, nach dem priorisierten Teil zu suchen, und ... April, April ... keiner da, nur ein weiteres Klammernpaar, das bei der Findung von Klammern-Zugehörigkeiten zusätzlich berücksichtigt werden muss.
Lo!