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

Beitrag lesen

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:template

<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