Я думаю, это звучит так, как будто вам нужно прочитать ключи . Если вы хотите найти элементы Turn
для текущего Speaker
, вы можете определить ключ, например,
<xsl:key name="turns" match="Turn" use="@speaker" />
Затем в вашем xsl:for-each
, который получает колонки, вы можете использовать клавишу для подсчета количества turn
элементов, например:
<xsl:value-of select="count(key('turns', @id)/tour/motBDL)" />
(я пропустил проверку @lexeme='JE'
, потому что в вашем XML нет подходящего значения)
Попробуйте этот XSLT в качестве отправной точки:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:key name="turns" match="Turn" use="@speaker" />
<xsl:template match="/">
<table>
<xsl:for-each select="Trans/Speakers/Speaker[@check='yes']">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="count(key('turns', @id)/tour/motBDL)" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
И, в качестве примера, вы также можете определить ключ для поиска самих элементов Speaker
, если вы хотите перечислить отдельные повороты.
Например ....
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:key name="speakers" match="Speaker" use="@id" />
<xsl:template match="/">
<table>
<xsl:for-each select="Trans/Episode/Section/Turn[@speaker != '']">
<tr>
<td><xsl:value-of select="key('speakers', @speaker)/@name"/></td>
<td><xsl:value-of select="@startTime" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>