使用XSLT如何查找节点的第一个元素

时间:2016-06-07 14:37:20

标签: xml xslt

<ZoneLane>
    <OriginDestinationPointTypeCode>Z</OriginDestinationPointTypeCode>
    <ZoneLaneReference>ALL</ZoneLaneReference>
    <CountryCode>**</CountryCode>
    <CountryName>ALL</CountryName>
    <Zone>ALL</Zone>
</ZoneLane>

<ZoneLane>  
    <OriginDestinationPointTypeCode>Z</OriginDestinationPointTypeCode>
    <ZoneLaneReference>032</ZoneLaneReference>
    <CountryCode>**</CountryCode>
    <CountryName>ALL</CountryName>
    <Zone>32</Zone>
</ZoneLane>

我使用的代码是:

<xsl:variable name="svAllZoneOnly">
    <xsl:choose>
        <xsl:when test ="ZoneLane[*[2]] and not(ZoneLane/ZoneLaneReference = 'ALL')">
            N
        </xsl:when>
        <xsl:otherwise>
            Y
        </xsl:otherwise>
    </xsl:choose>

我需要定义一个变量,当只有Zone'ALL'存在时,该变量返回'Y'。不是当我有区域'ALL'和其他区域的组合时。

有没有解决方案?

2 个答案:

答案 0 :(得分:0)

怎么样:

test ="Zone[. = 'ALL'] and count(Zone) = 1"

答案 1 :(得分:0)

您可以使用

$X//Zone[.='ALL'] and not($X//Zone[. != 'ALL'])

其中$X定义条件必须为真的范围。

与@ michael.hor257k的答案不同,如果有两个区域元素都具有值&#39; ALL&#39;,则此答案将成立。我们都在猜测你想要测试的条件。