On 13/06/2010 20:43, Alice Wei wrote:
Hi,
I have an XML snippet as in the following:
<music_songs>
<song>
<title>(I Just) Died In Your Arms</title>
<category>Rock</category>
<album>80 Popular Hits</album>
<artist>Cutting Crew</artist>
<date added="03-24-2009"/>
</song>
</music_songs>
This is one of the songs out of categories I have in my xml file, and
currently I use XPath expression as in the following:
/music_songs/song[category='Rock' as an example to find all the songs
in the Rock category.
whenever you use /a/b/c/[something='zzz']
you should think of doing
key('x','zzz')
instead, it can be surprising the speedup you can get
I need to also be able to pull the position index of the song elements
that I pull from the above expression, and use that in VB.NET for
process. I tried using count(), position(), but they seem to be able
to detect, but they cannot give me a list like
you don;t say if you are using xslt 1 or 2.
xslt 1 doesn't have a datatype that can store a sequence of integers.
You can get the numbers as for example
<xsl:for-each select="/music_songs/song[category='Rock']">
and then use
<xsl:number/>
or <xsl:value-of
select="count(preceding-sibling::song[category='Rock'])+1)"/>
Ib xslt2 you can store a list of integers
/music_songs/song[category='Rock']/count(preceding-sibling::song[category='Rock'])+1)
for example would work (although is paerhaps rather inefficient)
David
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--