Subject: Re: [xsl] test="" not taking value of attribute From: Florian Leifeld <leifeld@xxxxxxxxxxxxxxxx> Date: Tue, 26 Aug 2008 17:17:56 +0200 |
[..snip.] <xsl:variable name="veranstaltungen" select="//news/month" /> <xsl:when test="$veranstaltungen[@year=../@date]/@name = substring (@name,1,3)"> do something </xsl:when> [..snip.]
Why does the "../@date" in the while clause not contain (at least it seems so) anything?
You haven't shown us your XML source, but my guess is that you are imagining that ../@date selects the same thing inside the predicate as it would select outside the predicate. In fact the context node changes inside the predicate. Perhaps you want
test="$veranstaltungen[@year=current()/../@date]
Michael Kay http://www.saxonica.com/
You are right. I need to show you more. Both the XSL and the 2 XML. And as an extra I'll show you what i want to achieve (archive):
2008 | Jan | Feb | Mdr | Apr | May | Jun (with Link) | Jul (with Link) | Aug (with Link) | Sep | Okt | Nov | Dez 2007 | Jan | Feb | Mdr (with Link) | Apr | May | Jun | Jul | Aug | Sep | Okt | Nov | Dez
XSL: <dl class="archiv"> <xsl:variable name="veranstaltungen" select="//news/month" /> <xsl:for-each select="document('/var/www/vhosts/feuerbach.de/ httpdocs/relaunch/external_xml/datum.xml')//year[@date = $veranstaltungen/@year]"> <xsl:sort select="@date" order="descending"/> <dt><a href=""><xsl:value-of select="@date" /></a></dt> <xsl:for-each select="monat"> <xsl:choose> <xsl:when test="$veranstaltungen[@year=../@date]/@name = substring (@name,1,3)"> <dd><a href="" title=""><xsl:value-of select="substring(@name, 1,3)" /></a></dd> </xsl:when> <xsl:otherwise> <dd class="empty"><xsl:value-of select="substring(@name,1,3)" / ></dd> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:for-each> </dl>
XML 1: <news count="007" offset="001" month="" letzter="007"> <month id="3" name="Mdr" year="2007" events="1"/> <month id="7" name="Jul" year="2008" events="2"/> <month id="8" name="Aug" year="2008" events="3"/> <month id="9" name="Sep" year="2008" events="1"/> </news>
XML 2 from document(): <year date="2007"> <monat name="Januar" number="01" start="1" days="31" /> <monat name="Februar" number="02" start="4" days="28" /> <monat name="Mdrz" number="03" start="4" days="31" /> <monat name="April" number="04" start="7" days="30" /> <monat name="Mai" number="05" start="2" days="31" /> <monat name="Juni" number="06" start="5" days="30" /> <monat name="Juli" number="07" start="7" days="31" /> <monat name="August" number="08" start="3" days="31" /> <monat name="September" number="09" start="6" days="30" /> <monat name="Oktober" number="10" start="1" days="31" /> <monat name="November" number="11" start="4" days="30" /> <monat name="Dezember" number="12" start="6" days="31" /> </year>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] test="" not taking value , Michael Kay | Thread | Re: [xsl] test="" not taking value , Florian Leifeld |
RE: [xsl] test="" not taking value , Michael Kay | Date | Re: [xsl] test="" not taking value , Florian Leifeld |
Month |