Subject: RE: [xsl] restructuring element hierarchy using xslt From: "Michael Kay" <mhk@xxxxxxxxx> Date: Mon, 29 Sep 2003 18:20:42 +0100 |
Why do I bother giving you a design when someone else gives you the code and tests it? Sigh. Michael Kay > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Dimitre Novatchev > Sent: 29 September 2003 15:23 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] restructuring element hierarchy using xslt > > > This transformation: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output omit-xml-declaration="yes" indent="yes"/> > > <xsl:variable name="Digits" select="1234567890"/> > > <xsl:template match="/*"> > <t> > <xsl:apply-templates > select="het[not(contains(@position, '.'))]"/> > </t> > </xsl:template> > > <xsl:template match="het"> > <xsl:copy> > <xsl:copy-of select="@*"/> > <xsl:apply-templates > select="../het[starts-with(@position, current()/@position) > and > string-length(translate(@position, > $Digits, > '' > ) > ) > = > 1 + > string-length(translate(current()/@position, > $Digits, > '' > ) > ) > ]"/> > </xsl:copy> > </xsl:template> > </xsl:stylesheet> > > > When applied to your source.xml: > > <t> > <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> > </t> > > produces the wanted result: > > > <t> > <het position="1"> > <het position="1.1"> > <het position="1.1.1"/> > <het position="1.1.2"/> > </het> > <het position="1.2"> > <het position="1.2.1"/> > </het> > </het> > <het position="2"> > <het position="2.1"> > <het position="2.1.1"/> > </het> > </het> > </t> > > > ===== > Cheers, > > Dimitre Novatchev. > http://fxsl.sourceforge.net/ -- the home of FXSL > > > > > 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. > > > > __________________________________ > Do you Yahoo!? > The New Yahoo! Shopping - with improved product search http://shopping.yahoo.com 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 -> |
---|---|---|
Re: [xsl] restructuring element hie, Dimitre Novatchev | Thread | [xsl] Re: restructuring element hie, Dimitre Novatchev |
RE: [xsl] Generating a Set of HTML-, Michael Kay | Date | [xsl] Best way to use global params, Kathy Burke |
Month |