Получение подстроки атрибута в XPATH - PullRequest
21 голосов
/ 01 декабря 2010

С учетом

<foo>
  <bar baz="Hello, World!">
</foo>

Как мне все, кроме последних 4 символов @baz? Одна из моих попыток была:

/foo/bar/@baz[substring( ., 0, -4 )]

Ответы [ 3 ]

19 голосов
/ 01 декабря 2010

Использование :

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-3) 

Запишите 3 в выражении.

Следующее неверно :

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-4) 

, поскольку это возвращает последние 5 символов строкового значения атрибута baz.

8 голосов
/ 10 декабря 2012

попробуйте это: substring-before(/foo/bar/@baz,"rld!")

4 голосов
/ 01 декабря 2010

Это на самом деле не так уж и плохо, но подстрока IIRC не любит отрицательные индексы.Я пытался

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-4)

, что дало мне ожидаемый результат.

...