Найти имена атрибутов, начинающиеся с определенного шаблона
Я ищу, чтобы найти все атрибуты элемента, которые соответствуют определенному шаблону.
Итак, для элемента
<element s2="1" name="aaaa" id="1" />
<element s3="1" name="aaaa" id="2" />
Мне бы хотелось найти все атрибуты, начинающиеся с 's' (возвращающее значение s1 для первого элемента и s3 для значения второй элемент).
Если это за пределами возможностей xpath, пожалуйста, дайте мне знать.
Ответы
Ответ 1
Использование
element/@*[starts-with(name(), 's')]
Это выражение XPath выбирает все атрибутивные узлы, имя которых начинается со строки 's'
и которые являются атрибутами элементов с именем element
, которые являются дочерними элементами текущего node.
starts-with()
является стандартной функцией в XPath 1.0
Ответ 2
element/@*[substring(name(), 1,1) = "s"]
будет соответствовать любому атрибуту, начинающемуся с 's'.
Функция starts-with()
может выглядеть лучше, чем при использовании substring()