XSLT - 如何有条件地计算节点?

时间:2012-11-20 17:41:20

标签: xml xslt xpath xslt-1.0

我一直围绕着这个问题,我很确定必须有一个基本的解决方案。

我正在尝试使用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”,它......爆炸了。但是,如果我在没有计数的情况下执行此操作,则会显示正确的元素,因此语法不能错误。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您想要计算节点,而不是测试。试试这个:

<xsl:value-of select="count(//fD:golo[@marcador = $id])"/>