web-dev-qa-db-ja.com

XPATHで属性の部分文字列を取得する

与えられた

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

@bazの最後の4文字以外はどうすればよいですか?私の試みの1つは:

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

使用

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

式の3に注意してください。

以下は間違っています

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

これは、baz属性の文字列値の最後の5文字を​​返すためです。

20

これを試してください:substring-before(/foo/bar/@baz,"rld!")

8
ecciethetechie

それは実際にはそれほど悪くはありませんが、IIRC部分文字列は負のインデックスを好みません。私は試した

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

それは私に期待された結果を与えました。

4
Jan Thomä