Hi Sven,
Something like below should do it:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="step">
<table>
<xsl:apply-templates select="*[1]" mode="expectF"/>
</table>
</xsl:template>
<xsl:template match="mc[(_at_)type='F']" mode="expectF">
<tr>
<td><xsl:value-of select="@name"/></td>
<xsl:apply-templates select="following-sibling::*[1]"
mode="expectC"/>
</tr>
<xsl:apply-templates mode="expectF"
select="(following-sibling::*[1][(_at_)type='F']|following-sibling::*[2])[1]"/>
</xsl:template>
<xsl:template match="mc[(_at_)type='C']" mode="expectF">
<tr>
<td>-</td>
<td><xsl:value-of select="@name"/></td>
</tr>
<xsl:apply-templates select="following-sibling::*[1]" mode="expectF"/>
</xsl:template>
<xsl:template match="mc[(_at_)type='F']" mode="expectC">
<td>-</td>
</xsl:template>
<xsl:template match="mc[(_at_)type='C']" mode="expectC">
<td><xsl:value-of select="@name"/></td>
</xsl:template>
</xsl:stylesheet>
Regards,
George
---------------------------------------------------------------------
George Cristian Bina - http://aboutxml.blogspot.com/
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Sven Waibel wrote:
Hi,
i have a "little" problem.
I try to get a two column layout where all elements with type F live in
column one and elements with type C in column two. Special thing is that
you have watch the order. How can i achieve case 2 and 3?
Thanks in advance
Sven
xml:
case1:
<mc name="1" type="F"/>
<mc name="2" type="C"/>
<mc name="3" type="F"/>
<mc name="4" type="C"/>
<mc name="5" type="F"/>
<mc name="6" type="C"/>
=>
(first column always type F, second type C)
1 2
3 4
5 6
there is no problem, template works.
case2:
<mc name="1" type="C"/>
<mc name="2" type="C"/>
<mc name="3" type="F"/>
<mc name="4" type="C"/>
<mc name="5" type="F"/>
<mc name="6" type="C"/>
=>
- 1
- 2
3 4
5 6
case3:
<mc name="1" type="F"/>
<mc name="2" type="C"/>
<mc name="3" type="F"/>
<mc name="4" type="F"/>
<mc name="5" type="F"/>
<mc name="6" type="C"/>
=>
1 2
3 -
4 -
5 6
my xsl:
....
<xsl:template match="step">
<xsl:for-each select="descendant::mc[position() mod 2 = 1]">
<tr>
<td>
<xsl:value-of
select="self::node()[(_at_)type='F']/@name"/>
</td>
<td>
<xsl:value-of
select="following-sibling::node()[position()+1 and
@type='C']/@name"/>
</td>
</tr>
</xsl:for-each>
</xsl:template>
...
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--