Re: [xsl] test="" not taking value of attribute

Subject: Re: [xsl] test="" not taking value of attribute
From: Florian Leifeld <leifeld@xxxxxxxxxxxxxxxx>
Date: Tue, 26 Aug 2008 17:17:56 +0200
Am 26.08.2008 um 17:08 schrieb Michael Kay:

[..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