0

我在 php 中尝试匹配具有以下格式的 id 属性的 html select 元素的 xpath 查询的语法有问题:

recipients-1234567-address

id 的数字部分会改变,并且可能不总是相同的长度。这是我到目前为止所尝试的:

$select_el = 
   $xpath->query(".//select[@id[
                         starts-with(., 'recipients-')
                         AND
                         substring-before(substring(.,11),'-') = number(substring-before(substring(.,11),'-'))
                         AND
                         substring-after(substring-after(.,'-'),'-') = 'address' 
                         ]]");

我认为问题可能与我的节点上下文有关,所以我也尝试了这种变化......

$select_el = 
   $xpath->query(".//select[
                         starts-with(@id, 'recipients-')
                         AND
                         substring-before(substring(@id,11),'-') = number(substring-before(substring(@id,11),'-'))
                         AND
                         substring-after(substring-after(@id,'-'),'-') = 'address' 
                         ]");

这是我第一次使用复杂的 xpath 表达式,所以我不确定我是否在这里偏离了基础。xpath 查询必须遵守有效的 xpath 1.0 语法。任何帮助,将不胜感激。

4

1 回答 1

2

另一种方法是试试这个:

//select[translate(@id,'0123456789','')='recipients--address']
于 2014-05-09T05:27:27.063 回答