Wie kann ich die Reihenfolge ändern, mit einem xsl for-each?

Brauche ich, um die Reihenfolge zu ändern, in dem meine for-each wird nur dann ausgeführt, wenn einige Bedingungen erfüllt sind.

Hier ist, was mein XML sieht so aus :

<OptionList>
    <Option name="My First Option" />
    <Option name="My Second Option" />
</OptionList>

Jedoch in einigen Fällen, meine XML kann wie diese :

<OptionList>
    <Option />
    <Option name="My Second Option" />
</OptionList>

In meinem XSL, ich mache eine für-jeden wie dieser :

<xsl:for-each select="//OptionList/Option">
    {...}
</xsl:for-each>

Ich weiß, ich kann ändern, die Bestellungen der Option Knoten mit dieser Zeile in meiner for-each :

<xsl:sort select="position()" data-type="number" order="descending" />

Das problem ist, dass ich möchte, dass meine um werden absteigende nur, wenn meine erste Option Knoten leer ist und nicht über das name-Attribut. Ansonsten will ich weiterhin die Standardeinstellung aufsteigend.

Jeden Eingang an, wie kann ich erreichen, dass? So weit, alles, was ich versuchte, endete mit "Variable out of scope", oder ungültige Verwendung von xpath-Funktionen.

  • Gute Frage (+1). Siehe meine Antwort für eine vollständige und Natürliche Lösung.
  • Wäre es möglich für die person, die unten stimmten dieser Frage zu (5 Jahre und eine Hälfte, nachdem es veröffentlicht worden ist und beantwortet), um sich erklären?
InformationsquelleAutor Gabriel | 2010-08-04
Schreibe einen Kommentar