如何通过另一个 XPATH 的所有值过滤属性

How to filter an attribute by all value of another XPATH

我在一个 XSL 页面中,我需要计算字段 Party 等于一个值的所有节点。

或者换个说法(我粗略的重建了逻辑……你应该明白了……) 我需要所有至少有 5 个学生的老师

我可以数,但我不会过滤... 我得到了这样的东西

count(/School/Students/@TeachersId = /School/Teachers/@Id)>5

但是这是在计算任何老师的学生人数!我只需要超过5个学生的老师

使用 @TeachersId 作为查找键在 Students 上创建一个 xsl:key

<xsl:key
    name="students-by-teacher-id"
    match="Students"
    use="@TeachersId"/>

然后对于每个 Teachers,您可以使用密钥 select 所有具有 Teachers/@Id 值的 Students @TeachersIdcount() 它们来测试谓词内部是否有超过 5 个。

 /School/Teachers/@Id[count(key('students-by-teacher-id', .)) > 5]