代码之家  ›  专栏  ›  技术社区  ›  Alex

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

  •  4
  • Alex  · 技术社区  · 15 年前

    请考虑以下XML:

    <AllMyDataz>
        <Data>
           <Item1>A</Item1>
        </Data>
        <Data>
           <Item1>B</Item1>
        </Data>
        <Data>
           <Item1>A</Item1>
        </Data>
    </AllMyDataz>
    

    在我的转换中,我只想在任何“data”元素包含值为“a”的子元素item1时执行一些操作。我也只想做一次,即使多个“数据”元素符合条件。

    我想我需要写一个 <xsl:if test=""> 如果任何数据/项1包含值“a”,则返回true的语句。

    有人知道如何使用if语句或其他方式来实现这一点吗?

    提前谢谢:)

    -亚历克斯

    1 回复  |  直到 15 年前
        1
  •  7
  •   Tomalak    15 年前
    <xsl:template match="AllMyDataz">
      <xsl:if test="Data/Item1[.='A']">
        <!-- now do something -->
      </xsl:if>
    </xsl:template>
    

    这个 Data/Item1[.='A'] 选择所有匹配项 <Item1> 节点,产生一个节点集。

    在布尔上下文中使用节点集时,其计算结果为 true 如果它不是空的 false 如果是空的。正是你想要的。