Thomas J.S.: <xsl:sort> Parameter für select="" und oder="" verwenden

Beitrag lesen

Hallo,

(Der Wert von select muss ein XPath-Ausdruck "Expr." sein, was letzen Endes auf: 'AxisSpecifier', 'NodeTest' und 'Predicate' ausläuft http://www.w3.org/TR/xpath#NT-Expr)

Ich übergebe Ihm also einen "banalen" String und deshalb wird es nicht angewendet. Wenn ich es ohne Parameter mache, also direkt rein schreibe, sieht es der Prozessor als XPath-Ausdruck an?!

Der Ausdruck muss eben den REgeln von "Expr." entsprechen und der kann letzen endes nur aus 'AxisSpecifier' (parent::, etc.), 'NodeTest' (Element, Attribut etc.) und 'Predicate' ([...]) bestehen.

Du kannst es so machen:
<xsl:sort select="*[local-name() = $SORT_COL]" order="{$ORDER}"/> falls $SORT_COL der Namen eines Elementes darstellt und beachte bitte das {} im order=""! Der wert von $ORDER muss zwingend ascending oder descending sein.

So, ich habe es jetzt mal probiert. Das Element wird nun richtig selectiert. Egal was (ascending/descending) ich in $ORDER habe, es wird immer absteigend sortiert.

Bei meinem Test macht libxslt und saxon die Sortierung richtig.
Schreibe mal einfach direkt ascending oder descending hinein und schau ob die Sortierung dann klappt.

Grüße
Thomas