Subject: RE: XPATH | union operator question
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 19 Dec 2003 15:54:45 -0000
|
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@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> christof.hoeke@xxxxxxx
> Sent: 19 December 2003 15:06
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: 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
|