使用XQuery选择除XML之外的所有节点

时间:2016-02-11 13:32:29

标签: sql sql-server xml xpath xquery

我有以下XML文档:

<RapportV4Type xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:oio:ebst:diadem:4">
    <RapportResume xmlns="urn:oio:ebst:diadem:resume:1">
        <RapportvalgmulighedSamling>
            <Rapportvalgmulighed>
                <RapportResumeTekst>Ja</RapportResumeTekst>
                <RapportvalgmulighedIdentifikator xmlns="urn:oio:ebst:diadem:1">00000000-0000-0000-0000-000000000056</RapportvalgmulighedIdentifikator>
            </Rapportvalgmulighed>
            <Rapportvalgmulighed>
                <RapportResumeTekst>Ja</RapportResumeTekst>
                <RapportvalgmulighedIdentifikator xmlns="urn:oio:ebst:diadem:1">00000000-0000-0000-0000-000000000011</RapportvalgmulighedIdentifikator>
            </Rapportvalgmulighed>
        </RapportvalgmulighedSamling>
    </RapportResume>
</RapportV4Type>

我正在进行SQL查询,包括以下

Rapportvalgmulighed[diadem1:RapportvalgmulighedIdentifikator = "00000000-0000-0000-0000-000000000056"].

成功选择“RapportvalgmulighedIdentifikator”字段中值为00000000-0000-0000-0000-000000000056的节点。

“diadem1”定义为以下命名空间:“urn:oio:ebst:diadem:1”。

我想现在更改逻辑,并选择除我在选择器中定义的节点之外的所有节点。那么如何在RapportvalgmulighedIdentifikator字段中选择除值为00000000-0000-0000-0000-000000000056之外的所有节点?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,只需使用not()即可完成对特定逻辑的反转:

Rapportvalgmulighed[
    not(diadem1:RapportvalgmulighedIdentifikator = "00000000-0000-0000-0000-000000000056")
]

如果每个Rapportvalgmulighed只有一个RapportvalgmulighedIdentifikator子项,那么使用!=应该适用于:

Rapportvalgmulighed[
    diadem1:RapportvalgmulighedIdentifikator != "00000000-0000-0000-0000-000000000056"
]