Hallo,
ich muss Elemente sortieren und dann das erste Element dieser Liste auswählen, damit ich davon ein Subelement abfragen kann. Ist wahrscheinlich trivial, aber ich bekomms nicht hin.
1. Kann mir jemand eine generelle Vorgehensweise für dieses Problem nennen?
2. Mein aktueller Versuch
Ich verstehe nicht warum nach "bla:" und "date:" nichts ausgegeben wird.
In den Artikel zu node-set steht, dass die Funktion ein Result Tree Fragment in ein node-set umwandelt und man mit einem XPath Ausdruck wie $Variable/bla auf Kind-Knoten zugreifen kann.
In den Artikeln die ich mir bisher angeschaut habe wird aber meist mit (etwas weltfremden) Beispielen wie:
operiert. Was ist der Unterschied zu der Variablen die ich definiert habe? Liefert die kein Result Tree Fragment zurück?
Vielen Dank für jeden Hinweis
ich muss Elemente sortieren und dann das erste Element dieser Liste auswählen, damit ich davon ein Subelement abfragen kann. Ist wahrscheinlich trivial, aber ich bekomms nicht hin.
1. Kann mir jemand eine generelle Vorgehensweise für dieses Problem nennen?
2. Mein aktueller Versuch
Code:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="C:\Programmierung\xslt\SortDate2.xsl"?> <bafoeg> <bwz> <date>2008-12-01</date> <bla>blafasel</bla> </bwz> <bwz> <date>2009-01-05</date> <bla>jüngstes</bla> </bwz> <bwz> <date>2007-06-05</date> <bla>bluber</bla> </bwz> <bwz> <date>2006-07-05</date> <bla>quatsch</bla> </bwz> </bafoeg>
Code:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl" > <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:variable name="youngestbwz"> <xsl:for-each select="/descendant::bwz"> <xsl:sort order="descending" select="substring(date,1,4)"/> <!-- year sort --> <xsl:sort order="descending" select="substring(date,6,2)"/> <!-- month sort --> <xsl:sort order="descending" select="substring(date,9,2)"/> <!-- day sort --> <xsl:if test="position()=1"> <xsl:value-of select="." /> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:template match="/"> <xsl:text>Variable :</xsl:text><xsl:value-of select="$youngestbwz" /> <xsl:text>Nodeset :</xsl:text><xsl:value-of select="exsl:node-set($youngestbwz)" /> <xsl:text>bla: </xsl:text><xsl:value-of select="exsl:node-set($youngestbwz)/bla"/><xsl:text> </xsl:text> <xsl:text>date: </xsl:text><xsl:value-of select="exsl:node-set($youngestbwz)/date"/><xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet>
In den Artikel zu node-set steht, dass die Funktion ein Result Tree Fragment in ein node-set umwandelt und man mit einem XPath Ausdruck wie $Variable/bla auf Kind-Knoten zugreifen kann.
In den Artikeln die ich mir bisher angeschaut habe wird aber meist mit (etwas weltfremden) Beispielen wie:
Code:
<xsl:variable name="author"> <firstname>Jirka</firstname> <surname>Kosek</surname> <email>[email protected]</email> </xsl:variable>
Vielen Dank für jeden Hinweis
Comment