xsl-list
[Top] [All Lists]

Re: Question:from Michael Kay's Book

2002-10-09 14:46:04
At 08:42 AM 6/26/2002, you wrote:
The following is what i read..
<<//@width/..>> selects all the elements in the document that have a width
attribute.

would this mean that if i have a xml file that looks like..
<rooms>
 <room width = "1">
  my room 1
 </room>
 <room width = "2">
  my room 2
 </room>
  <room width = "3">
  my room 3
 </room>
  <room width = "4">
  my room 4
 </room>
</rooms>

then an XSL code like
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="/">
<xsl:value-of select="//@width/.."/><br/>
</xsl:template>
</xsl:stylesheet>

should return me all the rooms text like
my room 1
my room 2
my room 3
my room 4..

xsl:value-of only returns the string version of the first match. You would need the xsl:for-each in order to get all of them. Try something like this:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="/">
    <xsl:for-each select="//@width/..">
      <xsl:value-of select="."/><br/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

> I am a bit confused about the above mentioned statement that
> i read in the book.  I shud be grateful if someone(possibly
> Mr Kay) clears my doubt..I think i am missing something here..

The selection is not the problem, the value-of is. The selection indeed selected all of the nodes (though your version of /rooms/room[(_at_)width] is faster). The value-of only grabbed the first one.


Greg Faron
Integre Technical Publishing Co.



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



<Prev in Thread] Current Thread [Next in Thread>
  • Re: Question:from Michael Kay's Book, Greg Faron <=