4

HTMLファイルがあり、そのような変数IDを持つdivがあるのは非常に簡単です

<div id="abc_1"><div>

idの整数部分は可変であるため、abc_892、abc_553...などになります。

それを取得するための最良のクエリは何ですか?

4

2 に答える 2

6
//div[starts-with(@id, "abc_")]
于 2012-04-26T14:46:38.157 に答える
2

現在受け入れられている回答は、次のような不要な要素を選択します。

<div id="abc_xyz"/>

ただしdiv、そのような要素のみを受け入れる必要があります。その要素は、でid始まるだけで"abc_"なく、に続く部分文字列が_整数の表現です。

このXPath式を使用します

//div
   [@id[starts-with(., 'abc_') 
      and 
        floor(substring-after(.,'_')) 
       = 
        number(substring-after(.,'_')) 
       ]
   ]

これにより、文字列値が文字列で始まり、後の部分文字列が整数の有効な表現である属性をdiv持つ要素が選択されます。id"abc_"-

説明

ここでは、XPath1.0でこのXPath式が次のようになっているという事実を使用しています。

floor($x) = number($x)

が整数のtrue()場合に正確に評価されます。$x

これは簡単に証明できます。

  1. $xが整数の場合、上記の式はtrue()定義上評価されます。

  2. 上記の式がと評価された場合、これは、定義上、(それ自体を含む)どの値にも等しくないためtrue()、等式の両側がどちらでもないことを意味します。しかし、これはそれが数(isnt )であることを意味し、定義上、整数に等しい数は整数です。NaNNaN$xnumber($x)NaN$xfloor($x)

代替ソリューション

//div
   [@id[starts-with(., 'abc_') 
      and 
        'abc_' = translate(., '0123456789', '')
       ]
   ]
于 2012-04-26T15:53:15.677 に答える