I call this problem "positional grouping".
There are two solutions. One is to treat it as a value-based grouping
problem, using the generate-id() of the node that starts each group as
the grouping key.
The other is the "anchored sibling" construct:
following-sibling::y[generate-id(preceding-sibling::x[1]) = $anchor]
which finds all the following sibling nodes provided that their most
recent X is the anchor node.
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
-----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
Christian Timmerer (ITEC)
Sent: 27 September 2002 13:41
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] problems with nested templates
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hi all,
i have some problems when creating a hierarchy of elements
from a flat structure ... assume we have following xml
fragment (note that inside the B's and C's are also some
elements which content should be copied to the result tree.
there it will become an attribute and not an element):
the numbers are help entries and not part of the xml file
<A>
<B>...</B> 0
<C>...</C> 1
<C>...</C> 2
<C>...</C> 3
<C>...</C> 4
<C>...</C> 5
<C>...</C> 6
<C>...</C> 7
<C>...</C> 8
<C>...</C> 9
...
</A>
der result should look like this:
- the root element is nearly the same
- B will be copied to B1 ... no problem (line 0 from above)
- C (line 1) to C1 (no hierarchy needed - also not the problem)
- C (line 2) here i'm beginning to introduce the hierarchy
the C's (line 2, 3, 4) should be as shown below (the
first element containing inside C1's ... and so on
<A1>
<B1>...</B1>
<C1>...</C1>
<C1>
<C1>...</C1>
<C1>...</C1>
<C1>...</C1>
</C1>
<C1>...</C1>
<C1>...</C1>
<C1>...</C1>
<C1>
<C1>...</C1>
<C1>...</C1>
</C1>
<C1>...</C1>
...
</A1>
for achieving this i use <xsl:apply-templates
select="following-sibling::C[position() < $someValue]/>
the problem is that i found the same elements copied into the
hierarchy after the element where the hierarchy structure
begins. how can i skip this elements? the number of element
inside one hierarchy structure differs and will be controlled
by another xml document which i include with the document() function.
i've also tried an iterative approach, but there i can't use the
position() function which i need to determine where the
nested structure begins ...
any hint/help would be appreciated
best regards
christian
ps: the complete structure is rather extensive to post it in
the forum ;-)
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.0.4
iQA/AwUBPZRR7FGdEpLWuz2sEQJpNQCgu78q8q+hfUmLIJShNIbL7h7z8AkAnik9
+GugaigK6RkUxEpIlPZYrUzp
=8WV3
-----END PGP SIGNATURE-----
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list