4
我有一個網頁,其中三個<input>
元素都具有相同的name
屬性。理想情況下,我想選擇這些元素中的第二個,除非有時頁面上只有一個元素,我想要選擇該元素。XPath選擇許多第二個元素,除非只有一個存在
我非常希望像
(//input[@name='myname'])[max(1, last()-1)]
我想,也許只是它產生的三個因素,我可以做類似下面的(因爲max
僞代碼不存在)
(//input[@name='myname'])[last()-1 or 1]
使用XPath完成此操作的最佳方法是什麼?
謝謝!這看起來應該起作用。我想我不明白我需要使用'position()'而不是'[1或2]'。我認爲一個整數被隱式視爲'position()= N' – Suever
@Suever - 不客氣。此外,如果您能夠使用XPath 2.0並將序列傳遞給['max()'](https://www.w3.org/TR/2010/REC-xpath-functions-20101214/),那麼您的第一個XPath將起作用#func-max)...'(//輸入[@ name ='myname'])[max((1,last() - 1))]' –
@Suever:整數N只被視爲()= N)當整個謂詞是一個整數。但在2.0中,你可以寫'[position()= 1 to 2]'。在1.0中,你可以寫'[position()< = 2]' –