xml - XSLT following-sibling output not as expected -


i want elements between first sale , next sale. initial xml

<parent>     <sale seqno="1"/>     <discount seqno="2"/>     <coupon seqno="4"/>     <coupondetail seqno="5"/>     <sale seqno="6"/>     <sale seqno="7"/>     <sale seqno="8"/>     <payment seqno="9"/> </parent> 

desired xml:

<discount seqno="2"/> <coupon seqno="4"/> <coupondetail seqno="5"/> 

i have following applying template

following-sibling::*[(number(@seqno) &lt; number(following::sale[1]/@seqno))] 

output getting:

<discount seqno="2"/> <coupon seqno="4"/> <coupondetail seqno="5"/> <sale seqno="6"/> <sale seqno="7"/> <sale seqno="8"/> <payment seqno="9"/> 

if hardcode in sequence number of next sale item correct output

following-sibling::*[(number(@seqno) &lt; number(6))] 

output:

<discount seqno="2"/> <coupon seqno="4"/> <coupondetail seqno="5"/> 

what missing? appreciated.

the issue context in predicate being evaluated - it's particular element child of parent being tested whether should included in resulting node-set. in context, following::sale[1] gives first sale element following element being tested, have higher @seqno, if sale element.

what need store sequence number of interest in xsl:variable prior doing select, instance:

<xsl:variable name="end_seq_no" select="following-sibling::sale[1]/@seqno"/> <xsl:apply-templates select="following-sibling::*[@seqno &lt; $end_seq_no]"/> 

Comments

Popular posts from this blog

c++ - Creating new partition disk winapi -

Android Prevent Bluetooth Pairing Dialog -

VBA function to include CDATA -