The normal <xsl:apply-templates/> processes the children in the XML
tree. All that you need is an <xsl:apply-templates that processes the
children in the logical tree.
Start by processing the top level elements:
<xsl:apply-templates select="het[string-length(@position)=1]"/>
And when you process a <het> element, process it's logical children.
These are the nodes whose @position (a) starts with the @position of the
current node, and (b) contain one more "." than the @position of the
current node:
<xsl:template match="het">
<xsl:copy>
<xsl:apply-templates select="following-sibling::het[
starts-with(@position, current()/@position) and
number-of-dots(@position) =
number-of-dots(current()/@position)+1]"/>
</xsl:copy>
</xsl:template>
Here number-of-dots(X) should be expanded as:
string-length(X) - string-length(translate(X, '.', ''))
Untested.
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
james walker
Sent: 29 September 2003 13:00
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] restructuring element hierarchy using xslt
I have an xml document like this:
<het position="1"></het>
<het position="1.1"></het>
<het position="1.1.1"></het>
<het position="1.1.2"></het>
<het position="1.2"></het>
<het position="1.2.1"></het>
<het position="2"></het>
<het position="2.1"></het>
<het position="2.1.1"></het>
and i was trying to get it to look like this:
<het position="1">
<het position="1.1">
<het position="1.1.1">
</het>
<het position="1.1.2">
</het>
</het>
<het position="1.2">
<het position="1.2.1">
</het>
</het>
</het>
<het position="2">
<het position="2.1">
<het position="2.1.1">
</het>
</het>
</het>
In other words make it nested. I can get the first set of
elements out by
doing a contains() function in a predicate (<xsl:template
match="het[contains(@position, '.')=false]">) but i am having
a problem with
template matching, i know i can't put a template match within
a template
match and this is causing me a bit of trouble.
_________________________________________________________________
Get Hotmail on your mobile phone http://www.msn.co.uk/msnmobile
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list