HTMLファイルがあり、そのような変数IDを持つdivがあるのは非常に簡単です
<div id="abc_1"><div>
idの整数部分は可変であるため、abc_892、abc_553...などになります。
それを取得するための最良のクエリは何ですか?
//div[starts-with(@id, "abc_")]
現在受け入れられている回答は、次のような不要な要素を選択します。
<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
これは簡単に証明できます。
$xが整数の場合、上記の式はtrue()定義上評価されます。
上記の式がと評価された場合、これは、定義上、(それ自体を含む)どの値にも等しくないためtrue()、等式の両側がどちらでもないことを意味します。しかし、これはそれが数(isnt )であることを意味し、定義上、整数に等しい数は整数です。NaNNaN$xnumber($x)NaN$xfloor($x)
代替ソリューション:
//div
[@id[starts-with(., 'abc_')
and
'abc_' = translate(., '0123456789', '')
]
]