xsl-list
[Top] [All Lists]

Re: find position of first occurrence in a node set

2005-08-02 10:24:54
Jay,

I feel like this is a rather elementary question and a bit embarrased to ask so I'm sending this to you off-list, I hope you don't mind.

Two questions in regards to your answer...


1) I'm not sure why you have the <xsl:template> instruction there other than to make sure the stylsheet you tested with is a proper one. For my use I am doing this:

<xsl:variable name="current_transaction_set" >
   <xsl:copy-of select="current-group()" />
</xsl:variable>
<xsl:variable name="first_hl_position">
   <xsl:number select="$current_transaction_set/*[(_at_)type='HL'][1]"/>
</xsl:variable>


This gives me the correct value I'm looking for from the <xsl:number> instruction. Am I missing something by not using the template instruction? Or is this just a different solution to the same problem (is one better than another)?

2) As you can see I'm having to copy in the current-group() to a variable before I can apply the <xsl:number> instruction. I tried this:

   <xsl:number select="current-group[(_at_)type='HL'][1]"/>

But the value I get in return is wrong. It seems to be counting the attributes as well as the <segment> elements. I really don't understand why that is. Would you please explain that to me? Is there a way to tell the "select" attribute of the <xsl:number> instruction to ignore the attributes of the <segement> elements so I don't have to worry about the $current_transaction_set variable?


Thanks again,

Jim Neff



JBryant(_at_)s-s-t(_dot_)com wrote:

Hi, James,

Did you change companies? I recall your e-mail used to be something else (or perhaps I mis-remember).

Anyway, you can use the xsl:number instruction to get what you want:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:template match="/">
   <xsl:number select="transaction_set/segment[(_at_)type='HL']"/>
 </xsl:template>

</xsl:stylesheet>

Just tested it with Saxon 8.4 and got 3.

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)




James Neff <jneff(_at_)tethyshealth(_dot_)com> 07/29/2005 01:08 PM
Please respond to
xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com


To
XSL list <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
cc

Subject
[xsl] find position of first occurrence in a node set






Greetings,

I have a node set that looks like this:

<transaction_set>

 <segment type='SL'>
   A
 </segment>

 <segment type='GS'>
   B
 </segment>

 <segment type='HL'>
   C
 </segment>

 <segment type='PR'>
   D
 </segment>

 ....

</transaction_set>


I need to find the position of the first <segment> element that has the type of 'HL'. So for my example above it should return 3.


Thanks you in advance,





--~------------------------------------------------------------------
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>
--~--



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