Subject: Re: [xsl] Numbering new nodes using consecutive integers From: Michael Ludwig <mlu@xxxxxxxxxxxxx> Date: Fri, 27 Mar 2009 18:53:32 +0100 |
you don't need xsl:number here as you're doing all the grouping by hand so the number you want is I think <xsl:attribute name="no"> <xsl:value-of select="position()+ ceiling(count(../preceding-sibling::G1/M) div $M-per-G2) "/> </xsl:attribute>
Thanks. However, this doesn't guarantee unique numbers. By increasing M-per-G2 to 12 and adding some <G1> elements:
... <M>zwvlf</M> </G1> <G1><!-- new groups from here --> <M>usw</M> </G1> <G1> <M>usw</M> </G1> <G1> <M>usw</M> </G1><!-- three new groups --> </Groups>
<xsl:template match="M" mode="group"> <G2><!-- I want this GR to be numbered sequentially. --> <xsl:attribute name="no"> <xsl:number level="any"/> </xsl:attribute> <xsl:attribute name="david"> <xsl:value-of select=" position() + ceiling( count(../preceding-sibling::G1/M) div $M-per-G2)"/> </xsl:attribute> <xsl:copy-of select=" . | following-sibling::M[position() < $M-per-G2]"/> </G2> </xsl:template>
There is a certain tedium to the problem. I thought there might be a standard idiom to sequentially number the result tree. Wendell probably suggested it: Do it in two passes.
<?xml version="1.0" encoding="iso-8859-1"?> <Groups> <G1> <G2 no="1" david="1"> <M>eins</M> <M>zwei</M> <M>drei</M> <M>vier</M> <M>f|nf</M> <M>sechs</M> <M>sieben</M> </G2> </G1> <G1> <G2 no="8" david="2"> <M>acht</M> <M>neun</M> <M>zehn</M> <M>elf</M> <M>zwvlf</M> </G2> </G1> <G1> <G2 no="13" david="2"> <M>usw</M> </G2> </G1> <G1> <G2 no="14" david="3"> <M>usw</M> </G2> </G1> <G1> <G2 no="15" david="3"> <M>usw</M> </G2> </G1> </Groups>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Numbering new nodes using, David Carlisle | Thread | Re: [xsl] Numbering new nodes using, David Carlisle |
Re: [xsl] atom:content @type="html", Martin Honnen | Date | Re: [xsl] length of string from a s, Martin Honnen |
Month |