kuk i nested for-each.
Jeg har nogle problemer med at lave en nested for-each sætning, hvor første niveau af XML strukturen har formen:<TEI.2>
<pb id="x" />
...
<pb id="z" />
...
</TEI.2>
Sætningen virker fint når første niveau har formen:
<TEI.2>
<pb id="x">
.....
</pb>
<pb id="z">
.....
</pb>
</TEI.2>
Mit problem er bare jeg skal bruge den øverste form!
----------- XML fil ------------------------
<TEI.2>
<pb id="1r" />
<l id="1" id2="1">1.1 det er en prøve, Ivan Loeveridder</l>
<l id="2" id2="2">1.2 det er en prøve, Ivan Loeveridder</l>
<l id="3" id2="30">1.3 det er en prøve, Ivan Loeveridder</l>
<l id="4" id2="31">1.4 det er en prøve, Ivan Loeveridder</l>
<l id="5" id2="32">1.5 det er en prøve, Ivan Loeveridder</l>
<l id="6" id2="33">1.6 det er en prøve, Ivan Loeveridder</l>
<pb id="1v" />
<l id="7" id2="36">2.1 det er en prøve, Ivan Loeveridder</l>
<l id="8" id2="37">2.2 det er en prøve, Ivan Loeveridder</l>
<l id="9" id2="38">2.3 det er en prøve, Ivan Loeveridder</l>
<l id="10" id2="41">2.4 det er en prøve, Ivan Loeveridder</l>
<l id="11" id2="42">2.5 det er en prøve, Ivan Loeveridder</l>
<pb id="2r" />
<l id="12" id2="43">3.1 det er en prøve, Ivan Loeveridder</l>
<l id="13" id2="44">3.2 det er en prøve, Ivan Loeveridder</l>
<l id="14" id2="45">3.3 det er en prøve, Ivan Loeveridder</l>
<l id="15" id2="46">3.4 det er en prøve, Ivan Loeveridder</l>
<l id="16" id2="47">3.5 det er en prøve, Ivan Loeveridder</l>
<l id="17" id2="48">3.6 det er en prøve, Ivan Loeveridder</l>
</TEI.2>
------------ XSL fil ----------------------
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1"/>
<xsl:param name="linenumberN" />
<xsl:param name="linenumberB" />
<xsl:param name="pageNumber" />
<xsl:template match="/">
<table bgcolor="#eeeeee">
<xsl:for-each select="TEI.2/pb">
<xsl:if test="@id = $pageNumber or $pageNumber = alle">
<tr>
<th bgcolor="#aaaabb">
Normal:
</th>
<th bgcolor="#bbbbaa">
Brandt:
</th>
<th bgcolor="#aaaaaa">
Side: <xsl:value-of select="@id" />
</th>
</tr>
<xsl:for-each select="l">
<tr>
<xsl:choose>
<xsl:when test="$linenumberN = @id or $linenumberB=@id2">
<xsl:attribute name="bgcolor">#cacaca</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="bgcolor">#fefefe</xsl:attribute>
</xsl:otherwise>
</xsl:choose>
<td>
<xsl:if test="@id mod 5 = 0 or not(@id = (number(preceding::l[1]/@id)+1)) or position() = 1">
<xsl:value-of select="@id" />
</xsl:if>
</td>
<td>
<xsl:if test="@id2 mod 5 = 0 or not(@id2 = (number(preceding::l[1]/@id2)+1)) or position() = 1">
<xsl:value-of select="@id2" />
</xsl:if>
</td>
<td>
<xsl:value-of select="." />
</td>
</tr>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
---------- output -------------------
<table bgcolor="#eeeeee">
<tr>
<th bgcolor="#aaaabb">
Normal:
</th>
<th bgcolor="#bbbbaa">
Brandt:
</th>
<th bgcolor="#aaaaaa">
Side: 2r
</th>
</tr>
</table>