Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


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

From: James Neff <jneff@---------------->
To:
Date: 8/2/2005 5:25:00 PM
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/*[@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[@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@xxxxxxxxx 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[@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@xxxxxxxxxxxxxxxx> 
07/29/2005 01:08 PM

Please respond to

xsl-list@xxxxxxxxxxxxxxxxxxxxxx




To
XSL list <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
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,


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent