Subject: AW: Merging common XML tree
From: "Szabo, Patrick \(LNG-VIE\)" <patrick.szabo@xxxxxxxxxxxxx>
Date: Thu, 8 Jul 2010 11:39:40 +0200
|
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: 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 !
--
Mathieu
|