当我使用带有硬编码变量的XPath表达式时,它给出了正确的结果:
<xsl:value-of select="count(//n-gram[@frequency > 50])"/>
但是当我使用模板的参数时,它会给我一个完全不同的结果:
<xsl:value-of select="count(//n-gram[@frequency > $freq])"/>
有人可以告诉我我做错了吗?
完整代码作为参考(我正在使用XSL生成XAML文件):
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>
答案 0 :(得分:2)
$freq
真的是一个数字吗?
使用[@frequency > number($freq)]
强制投射参数