2

を使用して複数のパスを選択できます.//div/h1/text() | .//div/h2/text().//div/ただし、両方のパスに共通する部分(この場合は毎回)を明示的に書き出さずにそれを行う方法があるかどうかを知りたいですか?

4

3 に答える 3

2

ショートカットに関しては、XPath 2.0を使用すると、たとえば//div/h1 | //div/h2に短縮でき//div/(h1 | h2)ますが、その構文はXPath1.0では許可されていません。そして、XPath3.0ではlet変数を定義する句が導入されると思います。だから私はあなたが例えばできると思いますlet $r := /html/body/div[3]/table[2]/tbody/tr[5] return ($r/span | $r/a)

または、XPath 2.0で修正したサンプルの場合、に短縮でき.//div/h1/text() | .//div/h2/text()ます.//div/(h1/text() | h2/text())。しかし、XPath 1.0でできることは、を使用することだけです.//div/*[self::h1 | self::h2]/text()

于 2012-12-07T10:04:34.900 に答える
1

使用:

    .//div/*[self::h1 or self::h2]/text()

Xpath 2.0 では、以下を使用できます

    .//div/(h1|h2)/text()
于 2012-12-07T13:36:13.457 に答える
0

.//div/*[(local-name() = 'h1') or (local-name() = 'h2')]/text()

トリックを行う必要があります

于 2012-12-07T10:22:08.593 に答える