xslt - adding Lp. to node -


i'm new in xslt, i've problems adding lp transformation.

this's simple xml data:

 <booking>     <bookingid>ww1</bookingid>     <vouchernumber>r-108</vouchernumber>   </booking>   <booking>     <bookingid>ww2</bookingid>     <vouchernumber>r-108</vouchernumber>   </booking>   <booking>     <bookingid>ww3</bookingid>     <vouchernumber>r-108</vouchernumber>   </booking>   <booking>     <bookingid>ww4</bookingid>     <vouchernumber>r-109</vouchernumber>   </booking>   <booking>     <bookingid>ww5</bookingid>     <vouchernumber>r-109</vouchernumber>   </booking>   <booking>     <bookingid>ww6</bookingid>     <vouchernumber>r-110</vouchernumber>   </booking> 

the key vouchernumber, need add lp same vouchernumber i'need output text file this:

id;vn,lp ww1;108;1 ww2;108;2 ww3;108;3 ww4;109;1 ww5;109;2 ww6;110;1 

i add key on vouchernumber

<xsl:key name="x" match="booking" use="vouchernumber"/> 

in for-each statement i've add code: it's adding me on last position (i know can change position) number of count items same vouchernumber, how can add number lp other items?

<xsl:choose> <xsl:when test="generate-id(.) =generate-id(key('x',vouchernumber)[last()])"> <xsl:value-of select="count(key('x',vouchernumber)) "/> </xsl:when> <xsl:otherwise> -- need lp other items --  </xsl:otherwise> </xsl:choose> 

i can use version 1.0 of xslt stylesheet. thank advice best regards

it looks trying use muenchian grouping here, should start off selected booking elements first occurrence of each distinct vouchernumber

<xsl:for-each select="booking[generate-id() = generate-id(key('x',vouchernumber)[1])]"> 

then, have nested xsl:for-each booking elements within group (i.e. booking elements same vouchernumber)

<xsl:for-each select="key('x', vouchernumber)"> 

then, within next xsl:for-each can use position() function count of record within specific group

try xslt

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0">     <xsl:output method="text" />      <xsl:key name="x" match="booking" use="vouchernumber"/>      <xsl:template match="/*">       <xsl:for-each select="booking[generate-id() =generate-id(key('x',vouchernumber)[1])]">           <xsl:for-each select="key('x', vouchernumber)">               <xsl:value-of select="bookingid" />               <xsl:text>,</xsl:text>               <xsl:value-of select="substring-after(vouchernumber, '-')" />               <xsl:text>,</xsl:text>               <xsl:value-of select="position()" />               <xsl:text>&#10;</xsl:text>           </xsl:for-each>       </xsl:for-each>     </xsl:template> </xsl:stylesheet> 

note, assumed actual xml well-formed , there single root element containing booking elements.


Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -