Subject: Re: AW: [xsl] Merging common XML tree From: Michael Kay <mike@xxxxxxxxxxxx> Date: Thu, 08 Jul 2010 11:02:33 +0100 |
<xsl:template name="g"> <xsl:param name="in" as="element(dir)*"/> <xsl:for-each-group select="$in" group-by="name()"> <dir name="{@name}> <xsl:call-template name="g"> <xsl:with-param name="in" select="current-group()/dir"/> </ </ </ </
Michael Kay Saxonica
Hi,
You could try this:
<xsl:template match="dir"> <copy> <copy-of select="@*"> </copy> <xsl:if test="following::dir[@name = current()/@name]"> <xsl:apply-templates select="following::dir[@name = current()/@name]/*"/> </xsl:if> </xsl:template>
Haven't tested this but the solution should be something like this.
cheers
Patrick Szabo XSLT-Entwickler
Tel.: +43 (1) 534 52 - 1573 Fax: +43 (1) 534 52 - 146
Patrick.Szabo@xxxxxxxxxxxxx
LexisNexis Verlag ARD Orac GmbH& Co KG Marxergasse 25, 1030 Wien FN 8333f, Handelsgericht Wien http://www.lexisnexis.at/
-----UrsprC<ngliche Nachricht-----
Von: Mathieu Malaterre [mailto:mathieu.malaterre@xxxxxxxxx] Gesendet: Donnerstag, 08. Juli 2010 11:30 An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Betreff: [xsl] Merging common XML tree
Hi there,
I am trying to find a solution for the following problem. Let's assume that my input XML tree looks like:
<dirs> <dir name="A"> <dir name="B"> <file name="C"> </dir> </dir> <dir name="A"> <dir name="B"> <file name="D"> </dir> </dir> </dirs>
and my target output tree should looks like:
<dirs> <dir name="A"> <dir name="B"> <file name="C"> <file name="D"> </dir> </dir> </dirs>
Basically I am trying to represent a dir/file structure in XML, where I am not allowed to repeat common subdirectory. What XSL function could I use to do that (XSTL 1.0 if possible).
Thanks !
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
AW: [xsl] Merging common XML tree, Szabo, Patrick \(LNG | Thread | Re: [xsl] Merging common XML tree, Florent Georges |
Re: [xsl] Merging common XML tree, Florent Georges | Date | Re: [xsl] Merging common XML tree, Mathieu Malaterre |
Month |