Opslag og position() på samme tid
I forbindelse med at konvertere en docbook-tabel til xhtm skal jeg hente nogle oplysninger fra et andet context end hvor jeg står.Jeg har brug for at lave et opslag i en række <colspec> elementer efter en colname-attribut. Når den er fundet skal jeg have positionen. Hvis colnum findes skal den overstyre positionen.
Tabellen ser sådan ud:
<table>
<title/>
<colspec colname="c1" />
<colspec colname="c2" />
<colspec colname="c3" />
<colspec colnum="5" colname="c5" />
<spanspec spanname="hspan" namest="c2" nameend="c3" />
<tgroup>
<tbody>
<row>
<entry spanname="hspan">Hello world</entry>
</row>
</tbody>
</tgroup>
</table>
Opgaven er følgende:
1. Har den en spanname attribut? Jep, det har den
2. Lav opslag i spanspec og find start- og slut-kolonnenavne.
3. Find position på colspec'erne hvor navnene passer, her hhv. 'c2' og 'c3'.
4. Find differencen: span = slutposition - startposition + 1
5. Lav en <td colspan="$span">
Jeg har problemer med syntaksen og dette er nærmest pseudo-kode:
<xsl:variable name="colstart" select="../../../colspec[name='@{$colstartname}']position()"/>