|
Subject: [xsl] From flat to hierarchical structure From: "nick public nickpubl@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 22 Oct 2014 11:22:48 -0000 |
Hi people
I need to convert a flat structure like this
<root>
<H>1</H>
<I>1-1</I>
<I>1-2</I>
<I>1-3</I>
<H>2</H>
<I>2-1</I>
<I>2-2</I>
</root>
in one like this
<root>
<H>
1
<I>1-1</I>
<I>1-2</I>
<I>1-3</I>
</H>
<H>
2
<I>2-1</I>
<I>2-2</I>
</H>
</root>
I'm tring the approch for-each on the source structure in this way
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="root">
<root>
<xsl:for-each select="child::node()">
<xsl:if test="self::H">
<H>
<xsl:copy-of select="@* | node()"/>
<xsl:call-template name="copyI"/>
</H>
</xsl:if>
</xsl:for-each>
</root>
</xsl:template>
<xsl:template name="copyI">
<xsl:for-each select="following-sibling::node()">
<xsl:choose>
<xsl:when test="self::H">
<!-- Should be fantastic to exit from the loop! -->
</xsl:when>
<xsl:when test="self:(idea)">
<I>
<xsl:copy-of select="@* | node()"/>
</I>
<xsl:text> </xsl:text>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Unfortunately, the best result that I can reach is this
<root>
<H>
1
<I>1-1</I>
<I>1-2</I>
<I>1-3</I>
<I>2-1</I> wrong!
<I>2-2</I> wrong!
</H>
<H>
2
<I>2-1</I>
<I>2-2</I>
</H>
</root>
where <I>2-1</I> and <I>2-2</I> under H1 are wrong.
The problem is that I cannot escape from the template copyI when it finds and H.
Since the source structure is flat (all siblings), I'm afraid that a
recursive copyI doesn't help.
Any suggestion?
Thanks a lot.
Nicola
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] XSLT Streaming versus SAX, Wolfgang Laun wolfga | Thread | Re: [xsl] From flat to hierarchical, Martin Honnen martin |
| Re: [xsl] XSLT Streaming versus SAX, Wolfgang Laun wolfga | Date | Re: [xsl] From flat to hierarchical, Martin Honnen martin |
| Month |