Когда я использую свое выражение XPath с жестко закодированной переменной, это дает мне правильный результат:
<xsl:value-of select="count(//n-gram[@frequency > 50])"/>
Но когда я использую параметр моего шаблона, он дает мне совершенно другой результат:
<xsl:value-of select="count(//n-gram[@frequency > $freq])"/>
Может кто-нибудь сказать мне, что я делаю не так?
Полный код в качестве ссылки (я создаю XAML-файл с XSL):
XML-файл:
<n-grams>
<n-gram frequency="3">r n u</n-gram>
<n-gram frequency="1">o H e</n-gram>
<n-gram frequency="2">r n t</n-gram>
<n-gram frequency="2">N i c</n-gram>
<n-gram frequency="2">a u l</n-gram> ...
XSL шаблоны:
<xsl:template name="fill-table">
<xsl:param name="freq"/>
<xsl:param name="startRow"/>
<xsl:param name="startCol"/>
<xsl:call-template name="get-textblock">
<xsl:with-param name="row">
<xsl:value-of select="$startRow "/>
</xsl:with-param>
<xsl:with-param name="column">
<xsl:value-of select="$startCol + 1"/>
</xsl:with-param>
<xsl:with-param name="text">
<xsl:value-of select="count(//n-gram[@frequency > $freq])"/>
</xsl:with-param>
<xsl:with-param name="type">
<xsl:value-of select="'ValueText'"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="get-textblock">
<xsl:param name="row"/>
<xsl:param name="column"/>
<xsl:param name="text"/>
<xsl:param name="type"/>
<xsl:param name="colspan" select="1"/>
<xsl:element name="TextBlock">
<xsl:attribute name="Grid.Column">
<xsl:value-of select="$column"/>
</xsl:attribute>
<xsl:attribute name="Grid.Row">
<xsl:value-of select="$row"/>
</xsl:attribute>
<xsl:attribute name="Style">
<xsl:value-of select="concat('{StaticResource ',$type,'}')"/>
</xsl:attribute>
<xsl:attribute name="Grid.ColumnSpan">
<xsl:value-of select="$colspan"/>
</xsl:attribute>
<xsl:value-of select="$text"/>
</xsl:element>
</xsl:template>