はい、XPath 1.0 でそれを行う方法があります。
連結(
substring($s1, 1, number($condition) * string-length($s1)),
substring($s2, 1, number(not($condition)) * string-length($s2))
)
これは、相互に排他的な 2 つの文字列の連結に依存しています。最初の文字列は、条件が false ( 0 * string-length(...)
) の場合は空になり、2 番目の文字列は、条件が true の場合は空になります。これは"Becker's method"と呼ばれ、 Oliver Becker によるものです(元のリンクは現在無効で、Web アーカイブにはコピーがあります)。
あなたの場合:
連結(
部分文字列(
substring-before(//div[@id='head']/text(), ': '),
1、
番号(
で終わる(//div[@id='head']/text(), ':')
)
* string-length(substring-before(//div [@id='head']/text(), ': '))
)、
部分文字列(
//div[@id='head']/text(),
1、
数(ではない(
で終わる(//div[@id='head']/text(), ':')
)))
* 文字列の長さ(//div[@id='head']/text())
)
)
私は以前のすべてを取り除こうとしますが"//"
。
//div[@id='head']
また、複数のノードを返す可能性もあります。
ただ注意してください — 使用//div[@id='head'][1]
はより防御的です。