xsl-list
[Top] [All Lists]

WG: XPATH | union operator question

2003-12-19 09:44:51
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(_at_)mhk(_dot_)me(_dot_)uk]
Gesendet: Freitag, 19. Dezember 2003 16:55
An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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(_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


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



<Prev in Thread] Current Thread [Next in Thread>