Нужен xpath 1.0, чтобы сопоставить опцию с идентификатором типа "receients-5342647-address"
У меня возникли проблемы с синтаксисом для запроса xpath в php, который пытается соответствовать элементу выбора html, который имеет атрибут id в следующем формате:
recipients-1234567-address
Числовая часть идентификатора изменится и может не всегда иметь одинаковую длину. Вот что я пробовал до сих пор:
$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. Любая помощь будет оценена.
1 ответ
Другой способ - попробовать это:
//select[translate(@id,'0123456789','')='recipients--address']