当年度小于或等于2005年时,我试图计算学生人数。 到目前为止,这是我所拥有的,但它返回xml文件中的学生总数,而不仅仅是年份小于或等于2005年的学生。
<xsl:value-of select="count(students/student)"/>
我也尝试过if语句但是没有用。
<xsl:if test="year <=2005">
<xsl:value-of select="count(/student[year]) <=2005"/>
</xsl:if>
答案 0 :(得分:0)
您可能需要考虑表达式
count(/student[year]) <=2005
装置。它将count(/student[year])
与2005
进行比较,并返回true或false。表达式
count(/student[year])
反过来计算表达式值
中的项目数/student[year]
是谓词/student
为真的[year]
的子集。
表达式/student
匹配一组元素,这些元素是(a)文档节点的子元素和(b)默认命名空间中的student
(在这种情况下,我将假设默认情况下,未命名的命名空间与表达式匹配,其扩展名称为{}student
)。
由于在任何格式良好的XML文档中,只能有一个元素是文档节点的子元素(一个最外层元素),因此这里有几种可能的情况:
有几个最外面的元素;输入不是XML,转换出错。
有一个最外面的元素,名称不是学生。 \student
的值是空集,并且按[year]
过滤它不能使它更小,因此您的count(...)
表达式的值为0,并且我们开始的XPath表达式具有值true
。
有一个最外面的元素,名为student。 \student
的值是一个元素集,并按[year]
过滤它将成功(元素具有名为year
的子元素)或失败(它没有这样的子元素)。如果过滤器成功,则count(...)
表达式的值为1,并且我们开始使用的XPath表达式的值为true
,因为1小于或等于2005.如果过滤器失败,则{ {1}}表达式的值为0,我们开始使用的XPath表达式的值为count(...)
,因为0小于或等于2005
我认为阅读和反思XPath的基础教程可能会有所帮助。