[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] restructuring element hierarchy using xslt
Subject: RE: [xsl] restructuring element hierarchy using xslt From: Americo Albuquerque <melinor@xxxxxxxx> Date: Mon, 29 Sep 2003 17:46:57 +0100 |
Hi This is agrouping problem, you are grouping by @position, each '.' adding a new group level. You can use the Meunchian grouping to obtain your desired output Each key defines a new group level, if you want a new level you'll have to add a new key and a new template with mode="level[next level]" Stylesheet: <xsl:key match="het" name="hets" use="substring-before(concat(@position,'.'),'.')"/> <xsl:key match="het" name="hets" use="concat(substring-before(concat(@position,'.'),'.'),'-',substring-be fore(concat(substring-after(@position,'.'),'.'),'.'))"/> <xsl:key match="het" name="hets" use="concat(substring-before(concat(@position,'.'),'.'),'-',substring-be fore(concat(substring-after(@position,'.'),'.'),'.'),'-',substring-befor e(concat(substring-after(substring-after(@position,'.'),'.'),'.'),'.'))" /> <xsl:template match="doc"> <xsl:apply-templates mode="level1" select="het[generate-id()=generate-id(key('hets',substring-before(concat (@position,'.'),'.')))][not(generate-id()=generate-id(current()))]"/> </xsl:template> <xsl:template match="het" mode="level1"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates mode="level2" select="key('hets',substring-before(concat(@position,'.'),'.'))[generate -id()=generate-id(key('hets',concat(substring-before(concat(@position,'. '),'.'),'-',substring-before(concat(substring-after(@position,'.'),'.'), '.'))))][not(generate-id()=generate-id(current()))]"/> </xsl:copy> </xsl:template> <xsl:template match="het" mode="level2"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates mode="level3" select="key('hets',concat(substring-before(concat(@position,'.'),'.'),'- ',substring-before(concat(substring-after(@position,'.'),'.'),'.')))[gen erate-id()=generate-id(key('hets',concat(substring-before(concat(@positi on,'.'),'.'),'-',substring-before(concat(substring-after(@position,'.'), '.'),'.'),'-',substring-before(concat(substring-after(substring-after(@p osition,'.'),'.'),'.'),'.'))))][not(generate-id()=generate-id(current()) )]"/> </xsl:copy> </xsl:template> <xsl:template match="het" mode="level3"> <xsl:copy> <xsl:copy-of select="@*"/> </xsl:copy> </xsl:template> Regards, Americo Albuquerque > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > james walker > Sent: Monday, September 29, 2003 1:00 PM > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] restructuring element hierarchy using xslt > > > I have an xml document like this: > > <het position="1"></het> > <het position="1.1"></het> > <het position="1.1.1"></het> > <het position="1.1.2"></het> > <het position="1.2"></het> > <het position="1.2.1"></het> > <het position="2"></het> > <het position="2.1"></het> > <het position="2.1.1"></het> > > and i was trying to get it to look like this: > > <het position="1"> > <het position="1.1"> > <het position="1.1.1"> > </het> > <het position="1.1.2"> > </het> > </het> > <het position="1.2"> > <het position="1.2.1"> > </het> > </het> > </het> > <het position="2"> > <het position="2.1"> > <het position="2.1.1"> > </het> > </het> > </het> > > In other words make it nested. I can get the first set of > elements out by > doing a contains() function in a predicate (<xsl:template > match="het[contains(@position, '.')=false]">) but i am having > a problem with > template matching, i know i can't put a template match within > a template > match and this is causing me a bit of trouble. > > _________________________________________________________________ > Get Hotmail on your mobile phone http://www.msn.co.uk/msnmobile > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] restructuring element hierarc, james walker | Thread | RE: [xsl] restructuring element hie, Michael Kay |
Re: [xsl] how to import access data, Brook Ellingwood | Date | Re: [xsl] how to import access data, puja thakral |
Month |