[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

WG: [xsl] XPATH | union operator question


Subject: WG: [xsl] XPATH | union operator question
From: christof.hoeke@xxxxxxx
Date: Fri, 19 Dec 2003 17:44:51 +0100

thanks a lot, that makes sense.

btw (hope this is not off-topic), will there be a 2nd edition of the XSLT Programmer's Reference? (i could not found an answer to my question in the 1st edition, but i guess this is too specific anyway. 
but it is still the best book about xslt...)

chris


-----Ursprüngliche Nachricht-----
Von: Michael Kay [mailto:mhk@xxxxxxxxx]
Gesendet: Freitag, 19. Dezember 2003 16:55
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: RE: [xsl] XPATH | union operator question


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


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords