XSLT:检查任何一组元素是否具有特定值的子元素

4
考虑以下XML示例:
<AllMyDataz>
    <Data>
       <Item1>A</Item1>
    </Data>
    <Data>
       <Item1>B</Item1>
    </Data>
    <Data>
       <Item1>A</Item1>
    </Data>
</AllMyDataz>

在我的转换中,只有当任何一个“Data”元素包含一个值为“A”的子元素Item1时,我才想做一些事情。即使多个“Data”元素符合条件,我也只想这样做一次。
我认为我需要编写一个语句,以便在任何Data/Item1包含值“A”时返回true。
有人知道如何使用if语句或其他方式来实现吗?
提前感谢您的帮助 :)
-Alex
1个回答

8
<xsl:template match="AllMyDataz">
  <xsl:if test="Data/Item1[.='A']">
    <!-- now do something -->
  </xsl:if>
</xsl:template>
< p > Data/Item1[.='A'] 选取所有匹配的 <Item1> 节点,生成一个节点集。

当节点集在布尔上下文中使用时,如果节点集为非空,则计算结果为true,如果为空,则计算结果为false。正是您想要的。


这个"If"条件已经有一个现有值<Item1>... 如果我想在xml中的这个"If"条件中检查今天的日期,该怎么办?例如:<xsl:if on=(Today's Date)>,以仅显示那些在我的xml中具有今天日期的元素。其中<on>08/mar/2010</on>在xml文件中。那我应该怎么做呢? - gsvirdi
@gsvirdi:这是一个单独的问题。既然您已经注意到了,那么我能做的就是链接它。 :) https://dev59.com/uUzSa4cB1Zd3GeqPmWzU - Tomalak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接