Subject: RE: [xsl] can restructure xml?? From: Jarno.Elovirta@xxxxxxxxx Date: Wed, 15 Jan 2003 15:00:47 +0200 |
Hi, Yes, but hard coding the structure like that is evil. I don't know what's the best practice on these kinds of grouping problems nowadays (i.e. how to use xsl:key etc.), but I would recommend something like this: <xsl:key name="title" match="list/*[not(self::title)]" use="generate-id(preceding-sibling::title[1])" /> <xsl:template match="list"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:apply-templates select="title" mode="group"/> </xsl:copy> </xsl:template> <xsl:template match="title" mode="group"> <item> <xsl:attribute name="num"> <!-- you could use position() here, too --> <xsl:number count="title"/> </xsl:attribute> <xsl:apply-templates select=".|key('title', generate-id())"/> </item> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> Cheers, Jarno - Feindflug: Vollstreckung > -----Original Message----- > From: ext Laura [mailto:xsl_list@xxxxxxxxxxx] > Sent: 15 January, 2003 14:28 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] can restructure xml?? > > > You could do simple things like > <?xml version="1.0"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/> > <xsl:template match="/"> > <root> > <list> > <xsl:for-each select="/root/list/title"> > <item num = "{position()}"> > <title> > <xsl:value-of select="."/> > </title> > <writer> > <xsl:value-of > select="following-sibling::writer"/> > </writer> > <type> > <xsl:value-of > select="following-sibling::type"/> > </type> > <remark> > <xsl:value-of > select="following-sibling::remark"/> > </remark> > </item> > </xsl:for-each> > </list> > </root> > </xsl:template> > </xsl:stylesheet> > this gets first writer,type and remark elements after each > title element and > puts them under the item element. The number attribute takes > the value of > the position() function. so the number of <item> elements you > would have > will be the number of <title> element you have. > But as Jarno suggested, you could as well modify the code > that generates the > XML to produce the right kind of structure > Hope this helps > Vasu > -- Original Message ----- > From: "a847356549/mail.h7.dion.ne.jp" <motom@xxxxxxxxxxxxx> > To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx> > Sent: Wednesday, January 15, 2003 11:32 AM > Subject: [xsl] can restructure xml?? > > > > hello. > > I just started putting my data into xml. > > now I only have a xml like --- > > > > <root> > > <list> > > <title>aaa</title> > > <writer>bbb</writer> > > <type>ccc</type> > > <remark>ddd</remark> > > <title>eee</title> > > <writer>fff</writer> > > <type>ggg</type> > > <remark>hhh</remark> > > ... > > </cd> > > </list> > > > > my ideal structure is like --- > > > > <root> > > <list> > > <item num="1"> > > <title>aaa</title> > > <writer>bbb</writer> > > <type>ccc</type> > > <remark>ddd</remark> > > </item> > > <item num="2"> > > <title>eee</title> > > <writer>fff</writer> > > <type>ggg</type> > > <remark>hhh</remark> > > </item> > > ... > > </list> > > </root> > > > > is there a way to do this throgh xsl? any advice and hint will > > be grateful. > > > > ttkaya > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > 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] can restructure xml??, Jarno . Elovirta | Thread | Re: [xsl] can restructure xml??, michael . h . kay |
Re: [xsl] can restructure xml??, Laura | Date | [xsl] I need Tags..., Asim Tozlu |
Month |