【问题标题】:XSLT: Check if any group of elements have a child element with a specified valueXSLT:检查任何一组元素是否具有具有指定值的子元素
【发布时间】:2010-03-05 02:59:45
【问题描述】:

考虑以下 XML:

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

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

如果任何 Data/Item1 包含值“A”,我想我需要编写一个 &lt;xsl:if test=""&gt; 语句以返回 true。

有谁知道如何使用 if 语句或任何其他方式来做到这一点?

提前谢谢你:)

-亚历克斯

【问题讨论】:

    标签: xml xslt


    【解决方案1】:
    <xsl:template match="AllMyDataz">
      <xsl:if test="Data/Item1[.='A']">
        <!-- now do something -->
      </xsl:if>
    </xsl:template>
    

    Data/Item1[.='A'] 选择所有匹配的&lt;Item1&gt; 节点,形成一个节点集。

    当在布尔上下文中使用节点集时,如果它是非空的,它评估为true,如果它是空的,它评估为false。正是你想要的。

    【讨论】:

    • 此“If”条件的现有值为 ... 如果假设我必须在 xml 中的此“If”条件中检查今天的日期。像: 仅显示那些在我的 xml 中具有今天日期的元素。 08/mar/2010 在 xml 文件中的位置。那我该怎么做呢?
    • @gsvirdi:这是一个单独的问题。既然你自己已经注意到了,所以我所能做的就是链接到它。 :) stackoverflow.com/questions/2400622/working-with-xml-xsl
    猜你喜欢
    • 1970-01-01
    • 2020-07-05
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2022-06-25
    • 1970-01-01
    相关资源
    最近更新 更多