XPath - 测试至少有一个节点是否给定了值

时间:2011-10-05 11:24:47

标签: xml xslt xpath

给出以下XML:

<catalog>
    <cd>
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <year>1985</year>
    </cd>
    <cd>
        <title>Greatest Hits</title>
        <artist>Dolly Parton</artist>
        <country>USA</country>
        <company>RCA</company>
        <price>9.90</price>
        <year>1982</year>
    </cd>
    <cd>
        <title>Still got the blues</title>
        <artist>Gary Moore</artist>
        <country>UK</country>
        <company>Virgin records</company>
        <price>10.20</price>
        <year>1990</year>
    </cd>
</catalog>

我想检查一下至少有一个节点是否具有例如'1982'的年份。类似的东西:

<xsl:if test="........" ><p>passed!</p></xsl:if>

3 个答案:

答案 0 :(得分:5)

在XPath 1.0和Xpath 2.0中

'1982' = /catalog/cd/year

<强>变体形式

XPath 1.0:

1982 = /catalog/cd/year

XPath 2.0:

1982 = /catalog/cd/year/number()

The XPath = operator 在其至少一个参数是节点集(或XPath 2.0中的序列)时非常强大。当且仅当节点集(序列)中至少一个节点的(雾化)值等于=的另一个参数时,结果才为真。这正是这个问题所要求的。

答案 1 :(得分:1)

试试test =“index-of(/ catalog / cd / year,1982)”。

答案 2 :(得分:0)

怎么样:

/catalog/cd/year = 1982

如果左侧至少有一个项目“匹配”右侧的一个项目,则此比较(称为一般比较)运算符返回true。