Нужен 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']
Другие вопросы по тегам