Определите ключ следующим образом:
<xsl:key name="categories" match="kategorie_knihy" use="@id_kategorie" />
(имя здесь может быть любым!)
Затем, чтобы использовать его в своем xsl:for-each
, сделайте это ...
<xsl:for-each select="key('categories', kategorie)">
<td>
<xsl:value-of select="nazev" />
</td>
</xsl:for-each>
Хотя этот xsl:for-each
должен быть вложен в предыдущий элемент kniha
.
Попробуйте это XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:key name="categories" match="kategorie_knihy" use="@id_kategorie" />
<xsl:template match="/">
<table width="100%" border="1">
<th>Nazev</th>
<th>Rok vydani</th>
<th>Pocet stran</th>
<xsl:for-each select="knihovna/knihy/kniha">
<tr>
<td>
<xsl:value-of select="nazev" />
</td>
<td>
<xsl:value-of select="rok_vydani" />
</td>
<td>
<xsl:value-of select="pocet_stran" />
</td>
<xsl:for-each select="key('categories', kategorie)">
<td>
<xsl:value-of select="nazev" />
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Обратите внимание, чтоесли книга может иметь только одну категорию, вам вообще не понадобится xsl:for-each
.Вы могли бы просто сделать это ...
<td>
<xsl:value-of select="pocet_stran" />
</td>
<td>
<xsl:value-of select="key('categories', kategorie)/nazev" />
</td>