Xml xsl:如何计算子项数不超过n的项数

Xml xsl:如何计算子项数不超过n的项数,xml,xslt,Xml,Xslt,xml文件: <faculty> <student name="a a" group="5"> <subject date="2013-02-01" name="science">124</subject> </student> <student name="q q" group="9"> <subject date="2013-02-01" name="my">124</subject&

xml文件:

<faculty>
<student name="a a" group="5">
    <subject date="2013-02-01" name="science">124</subject>
</student>

<student name="q q" group="9">
    <subject date="2013-02-01" name="my">124</subject>
</student>

<student name="z z" group="2">
</student>

<student name="v v" group="9">
    <subject date="2013-02-01" name="tro">tro</subject>
</student>
</faculty>

124
124
特罗
需要:如何计算不超过2个科目的项目数量

我知道如何显示所有这些项目和科目数量,但我不知道如何计算科目总数:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="name" match="subject" use="@name" />

<xsl:template match="subject">
    <xsl:if test="count(key('name', @name)) &lt; 2">
        subject: <xsl:value-of select="@name" />
        count: <xsl:value-of select="count(key('name', @name))" />
    </xsl:if>
</xsl:template>

主题:
计数:

提前感谢

以下内容将匹配少于2个
主题
元素子元素的
学生
元素:

student[count(subject) &lt; 2]
如果需要文档中
主题
元素的总数,请使用以下命令:

count(/faculty/student/subject)
如果需要
subject
元素中不同的
@name
值列表的计数:

count(/faculty/student/subject[generate-id()=generate-id(key('name', @name)[1])])

如果只需要显示只出现一次的
subject
元素,请注意下面的
和count(key('subject-name',@name))=1
部分:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:key name="subject-name" match="subject" use="@name" />
    <xsl:template match="faculty">
        <xsl:for-each select=".//subject[count(. | key('subject-name', @name)[1]) = 1 and count(key('subject-name', @name)) = 1]">
            <xsl:sort select="@name" />
            <xsl:value-of select="@name" />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

如果我试图回答您的问题:

Q1:“如何计算子项数不超过n的项目数”

这将是:
count(items[count(*)<=$n])

Q2:“如何计算不超过2个主题的项目数。”

从您的示例XML和xslt中不太清楚“项”应该是什么。我的解释是,这应该是主题名称。
Than:要计算出现次数不超过2次的主题名称,请尝试以下操作:

count(//subject[
         generate-id()=generate-id(key('name', @name)[1]) 
         and 
         count(key('name', @name) ) &lt;= 2  
       ] )

当你说“items”时,你的意思是想知道有多少
student
元素的子元素少于2个
subject
吗?你需要列出所有只出现一次的唯一主题名称吗?