0

次の XML を考慮する

<xml>
  <tag/>
  <tag version="2.1"/>
</xml>

<tag version="2.1"/>バージョン 2.1 を<tag/>検索した場合とバージョン 2.2 を検索した場合に返される XPath 1.0 式が必要です。

これまでのところ、私は試しました

/xml/tag[@version = '%version%' or not(@version)]

where%version%は 2.1 または 2.2 のいずれかの文字列ですが、2.1%version%の場合は両方のノードを返します。

4

2 に答える 2

3

|(または)を使用して、このようなものを使用できます

    /xml[not(tag[@version="2.1"])]/tag[not(@version)] |
    /xml[tag[@version="2.1"]]/tag[@version="2.1"]
  • のいずれかxmlが を持たない場合は、属性なしtagversion="2.1"を返しますtagversion
  • または、 にxmlが含まれている場合は、これらtagversion="2.1"返します

だからそれはあなたの場合になります

    /xml[not(tag[@version='%version%'])]
        /tag[not(@version)]
    |
    /xml[tag[@version='%version%']]
        /tag[@version='%version%']
于 2013-10-04T12:55:00.950 に答える