4

変更を加えるには、この XML 構造の最初のノードに移動する必要があります。

<root-node>
    <child mandatory="val">
        ...
    </child>
    <child mandatory="val" optional1="opt1">
        ...
    </child>
    <child mandatory="val" optional1="opt2" optional2="opt3">
        ...
    </child>
</root-node>

すべての子には、すべてのケースで同じ値を持つ必須属性と、1 つ以上のオプション属性があることに注意してください。しかし、私がXPathを実行する//root-node/child[@mandatory='val']と、他のノードへの参照も取得するのではないかと心配しています。これには触れたくありません。

構造に特定の属性が存在するノードをより具体的に除外する方法はありますか?

4

1 に答える 1

7

次の XPath は、属性が定義されていて属性が定義されていないchild要素を返します。mandatoryvaloptional1

//child[@mandatory='val' and not(@optional1)]

最初の要素だけが必要な場合は、[1]式に追加するだけです:

root-node/child[@mandatory='val' and not(@optional1)][1]
于 2013-06-17T08:13:01.697 に答える