The union operator selects both attributes, the value-of instruction
then selects the one that's first in document order. To get the
innermost one, use
(@a | ../@a)[last()]
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
christof(_dot_)hoeke(_at_)e-7(_dot_)com
Sent: 19 December 2003 15:06
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XPATH | union operator question
hi,
i have a problem to understand why the following is happening:
###TODO
in the following xml: if the inner @color is there use it,
otherwise use the outer @color
###XML
<test>
<line color="outer1">
<x color="inner1"/>
</line>
</test>
so i tested the following XSLT:
###XSL
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/test">
<out>
<xsl:apply-templates/>
</out>
</xsl:template>
<xsl:template match="line">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="x">
<xsl:value-of select="@color |
parent::line/@color"/><br/>
<xsl:value-of
select="parent::line/@color | @color "/><br/>
<xsl:value-of select="(@color |
parent::line/@color)[1]"/><br/>
<xsl:value-of
select="(parent::line/@color | @color)[1] "/><br/>
</xsl:template>
</xsl:stylesheet>
###RESULT
<out>
outer1<br />
outer1<br />
outer1<br />
outer1<br />
</out>
i expected at least one inner1 to show up...
or i expected "inner1outer1" as a result.
what does the | operator in "@color | parent::line/@color"
select? only the most specific?
thanks a lot
chris
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list