Subject: Re: Re: [xsl] Group various elements with empty tags (flat XML structure to hierarcial XML) From: António Mota <amsmota@xxxxxxxxx> Date: Fri, 7 Jan 2005 14:25:07 +0000 |
Yes, but isn4t that the default template beahviour? So, if you don't put that you'll have those nodes copied just the same. The interest is to define *what changes*, not what stays the same... On Thu, 06 Jan 2005 14:53:17 -0500, cknell@xxxxxxxxxx <cknell@xxxxxxxxxx> wrote: > Because you asked for them in your output. That is to say, your sample output showed them as being passed through to the output unchanged. > -- > Charles Knell > cknell@xxxxxxxxxx - email > > -----Original Message----- > From: Antsnio Mota <amsmota@xxxxxxxxx> > Sent: Thu, 6 Jan 2005 19:39:25 +0000 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] Group various elements with empty tags (flat XML structure to hierarcial XML) > > Why do you need > > > <xsl:template match="id|type|count|language"> > > <xsl:copy-of select="." /> > > </xsl:template> > > ?? > > On Thu, 06 Jan 2005 14:29:15 -0500, cknell@xxxxxxxxxx <cknell@xxxxxxxxxx> wrote: > > <?xml version="1.0" encoding="UTF-8" ?> > > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:output method="xml" indent="yes" encoding="UTF-8" /> > > <xsl:strip-space elements="*" /> > > > > <xsl:template match="/"> > > <xsl:apply-templates /> > > </xsl:template> > > > > <xsl:template match="Record"> > > <Record> > > <xsl:apply-templates /> > > </Record> > > </xsl:template> > > > > <xsl:template match="id|type|count|language"> > > <xsl:copy-of select="." /> > > </xsl:template> > > > > <xsl:template match="firstname"> > > <NAME> > > <xsl:copy-of select="." /> > > <xsl:copy-of select="following-sibling::lastname[1]" /> > > </NAME> > > </xsl:template> > > > > <xsl:template match="street"> > > <ADDRESS> > > <xsl:copy-of select="." /> > > <xsl:copy-of select="following-sibling::city[1]" /> > > <xsl:copy-of select="following-sibling::country[1]" /> > > <xsl:copy-of select="following-sibling::postal_code[1]" /> > > </ADDRESS> > > </xsl:template> > > > > <xsl:template match="initial|lastname|city|country|postal_code|amount1|amount2|amount3" /> > > > > </xsl:stylesheet> > > -- > > Charles Knell > > cknell@xxxxxxxxxx - email > > > > > > -----Original Message----- > > From: M Glenties <mglenties@xxxxxxxxxxx> > > Sent: Thu, 06 Jan 2005 13:55:59 -0500 > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > Subject: [xsl] Group various elements with empty tags (flat XML structure to hierarcial XML) > > > > I need to convert a flat xml document to something more hierarcial by > > surrounding some elements with other empty elements. > > > > Original XML: > > ------------ > > <Record> > > <id>102</id> > > <type>O</Type> > > <count>37</count> > > <firstname>Joe</firstname> > > <lastname>Smith</lastname> > > <initial>A</initial> > > <street>35 Main Street</street> > > <city>Moosejaw</city> > > <country>Sasaktchewan</country> > > <postal_code>TOEOPO</postal_code> > > <amount1>1.23</amount1> > > <amount2>4.56</amount2> > > <amount3>7.89</amount3> > > <language>E</language> > > </Record> > > > > Desired Output: > > -------------- > > <Record> > > <id>102</id> > > <type>O</Type> > > <count>37</count> > > <NAME> > > <firstname>Joe</firstname> > > <lastname>Smith</lastname> > > </NAME> > > <ADDRESS> > > <street>35 Main Street</street> > > <city>Moosejaw</city> > > <country>Saskatchewan</country> > > <postal_code>TOEOPO</postal_code> > > </ADDRESS> > > <language>E</language> > > </Record> > > > > My stylesheet: > > ------------- > > <xsl:stylesheet version="1.0" > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="node()|@*"> > > <xsl:copy> > > <xsl:apply-templates select="node()|@*"/> > > </xsl:copy> > > </xsl:template> > > > > <xsl:template match="Record"> > > <Record> > > <xsl:apply-templates select="lastname" mode="Name"/> > > <xsl:apply-templates select="postal_code" mode="PC"/> > > </Record> > > </xsl:template> > > > > <xsl:template match="lastname" mode="Name"> > > <NAME> > > <xsl:apply-templates > > select="preceding::firstname[generate-id(following::lastname[1]) > generate-id(current())]"/> > > <xsl:apply-templates select="."/> > > </NAME> > > </xsl:template> > > > > <xsl:template match="postal_code" mode="PC"> > > <ADDRESS> > > <xsl:apply-templates > > select="preceding::street[generate-id(following::postal_code[1]) > generate-id(current())]"/> > > <xsl:apply-templates select="."/> > > </ADDRESS> > > </xsl:template> > > > > <xsl:template match="Record/*"> > > <xsl:copy-of select="."/> > > </xsl:template> > > > > </xsl:stylesheet> > > > > My output: > > -------------- > > <NAME> > > <firstname>Joe</firstname> > > <lastname>Smith</lastname> > > </NAME> > > <ADDRESS> > > <street>35 Main Street</street> > > <postal_code>TOEOPO</postal_code> > > </ADDRESS> > > > > Can anyone tell me where I have gone wrong? I'm missing <id>, <type> etc, > > and my xsl returns only 2 elements when more are sometimes required. > > > > Thanks for your time, > > M Glenties > > > > _________________________________________________________________ > > MSN. Calendar keeps you organized and takes the effort out of scheduling > > get-togethers. > > http://join.msn.com/?pgmarket=en-ca&page=byoa/prem&xAPID=1994&DI=1034&SU=http ://hotmail.com/enca&HL=Market_MSNIS_Taglines > > Start enjoying all the benefits of MSN. Premium right now and get the > > first two months FREE*.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: Re: [xsl] Group various element, cknell | Thread | Re: [xsl] Group various elements wi, David Carlisle |
RE: [xsl] RE: Use XQuery or XSLT, Jim Neff | Date | Re: [xsl] Group various elements wi, David Carlisle |
Month |