Hallo André,
Ich möchte Paramater für die Attribute select und order verwenden. Die Paramter übergebe ich dem XSLT-Prozessor und werden mir auch korrekt ausgegeben.
Leider interesiert sich xsl:sort nicht dafür. Es wird einfach nicht angewendet. Es kommt keine Fehlermeldung.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="SORT_COL"/> <!-- name -->
<xsl:param name="ORDER"/> <!-- descending --><xsl:value-of select="$SORT_COL"/>
<xsl:value-of select="$ORDER"/>xsl:apply-templates
<xsl:sort select="$SORT_COL" order="$ORDER"/>
</xsl:apply-templates></xsl:template>
</xsl:stylesheet>
Es geht (so) auch nicht.
(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>)
Angewendet wird deine Sortierung schon, aber der Wert (und der wird beim <xsl:sort> zu eninem String konvertiert) von $SORT\_COL ist für jedes der zu sortierenden Elemente ein und dasselbe, also wird die Liste weiterhin unsortiert ausgegeben.
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.
Grüße
Thomas