Subject: RE: [xsl] combining the children of similar nodes under one node From: "Jim Fuller" <jim.fuller@xxxxxxxxxxxxxx> Date: Sun, 7 Mar 2004 18:04:10 -0000 |
> -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > David Montalvo > Sent: 07 March 2004 00:12 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] combining the children of similar nodes under one node > > > in the following example code, notice that all three nodes have the > same name. I want to combine all nodes with the same name > into one node > with all of their <style>s and <types>s, where <style> and <type> are > not duplicated. > You could do something like <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method = "xml"/> <xsl:template match="/"> <xsl:variable name="list" select="/inventory/product/node()[not(.=following::product/node())]" /> <product> <xsl:copy-of select="$list"/> </product> </xsl:template> </xsl:stylesheet> Gl, Jim Fuller > <inventory> > <product> > <name>chair</name> > <style>rocking</style> > </product> > > <product> > <name>chair</name> > <type>rocking</type> --> same value as <style> above > </product> > <product> > <name>chair</name> > <style>folding</style> > <type>lawn</type> > </product> > </inventory> > > When I'm in the first node, I grab it, when I'm in the second node, I > can check the preceding <style> value and skip it, when I'm in the > third node I grab it. That gives me: > > <product> > <name>chair</name> > <style>rocking</style> > </product> > <product> > <name>chair</name> > <style>folding</style> > <type>lawn</type> > </product> > > I figured out that, while in the second of these nodes, I can > check if > the preceding name is the same and, if so, get the preceding <style> > and add it to the second product node, giving me: > > <product> > <name>chair</name> > <style>rocking</style> > </product> > <product> > <name>chair</name> > <style>rocking</style> > <style>folding</style> > <type>lawn</type> > </product> > > but I still have 2 products with the name "chair". how can I get the > result: > > <product> > <name>chair</name> > <style>rocking</style> > <style>folding</style> > <type>lawn</type> > </product> > > One of the problems is that <style> and <type> are being used > interchangeably, but I think I compensated for that. My big > problem is > getting everything listed under one name with no duplicates. > > -dave > > > > > 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] combining the children of, Andreas L. Delmelle | Thread | RE: [xsl] need to get value of requ, Jarno . Elovirta |
Re: [xsl] combining the children of, David Montalvo | Date | RE: [xsl] What is the best XSLT boo, Jim Fuller |
Month |