在不使用foreach的情况下为所有子节点测试条件

本文关键字:子节点 测试 条件 情况下 foreach | 更新日期: 2023-09-27 18:13:18

我有一个XML

<Students>
  <Student id ="Stu1" />
  <Student id ="Stu2" />
  <Student id ="Stu3" />
</Students>

我正在尝试使用XSLT转换它。

只有当它的一个子元素的id包含"2"时,我才需要选择student元素。

我使用了以下XSLT

<xsl:if test="contains(Student/@id, '2')">
</xsl:if>

如果Stu2出现在第一个子元素中,则可以正常工作。

在不使用foreach的情况下,是否有办法测试所有子的条件?

在不使用foreach的情况下为所有子节点测试条件

使用谓词中包含的内容,例如<xsl:if test="Student[contains(@id, '2')]">...</xsl:if>

我需要选择一个Students元素,只有当它的一个子元素有id包含"2"。

不清楚在什么上下文中你需要"选择"它-但你可以使用:

 ...select="Students[Student[contains(@id, '2')]]"

选择(或匹配)所有这样的Students元素。