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