我一直围绕着这个问题,我很确定必须有一个基本的解决方案。
我正在尝试使用XSLT 1.0将xml文件转换为XHTML,我希望有一个部分,对于每个播放器(XML文件中的fD:jogador),代码将查看其@id属性,然后检查目标元素及其目标子元素(fD:golos和fD:golo),并计算玩家得分的所有目标,其中@id等于我们正在处理的玩家。
我现在拥有的是在与播放器匹配的模板中,
<xsl:call-template name="calcgolos">
<xsl:with-param name="id" select="@id"/>
</xsl:call-template>
模板本身如下所示:
<xsl:template name="calcgolos">
<xsl:param name="id"/>
<xsl:value-of select="count(//fD:golo/@marcador = $id)"/>
</xsl:template>
这只是每次都返回0,这不是我正在寻找的东西!
当我尝试在eclipse的XPath处理器中输入这个表达式时,$ id被实际id替换,在这种情况下,“POR_NANI”,它......爆炸了。但是,如果我在没有计数的情况下执行此操作,则会显示正确的元素,因此语法不能太错误。
提前感谢您的帮助!
答案 0 :(得分:1)
您想要计算节点,而不是测试。试试这个:
<xsl:value-of select="count(//fD:golo[@marcador = $id])"/>