使用 xPath,我从 html 字段中获取数据,这些数据可以是这种格式(包括括号):
数据 |||| 我用来解释我的代码的符号
(出生地,出生日期-死亡日期)|||| (str, AB) = 注意 str 也可能包含 '-'
(出生地点, 出生日期) |||| (str, A)
(出生地) |||| (字符串)
(出生日期-死亡日期) |||| (AB)
(出生日期) |||| (一种)
或完全空
我正在尝试使用多个 if-else 语句将每个元素检索到单独的变量中,但它似乎不喜欢多行命令(我认为是这样)。
我已经制作了一个无法正常工作的代码:-/(它说期待返回,如果……则发现其他)
let $temp1 := data(normalize-space(substring-before(substring-after(//div/div[2]/h2/text(), '('), ')')))
if (contains($temp1,',')) (: (str, A-B) or (str, A) :)
then
let $bornPlace := substring-before($temp1, ',')
let $temp2 := substring-after($temp1, ',')
if (contains($temp2,'-'))
then
let $bornDate := substring-before($temp2, '-')
let $deathDate := substring-after($temp2, '-')
else
let $bornDate := $temp2
let $deathDate := data('')
else if (contains($temp1,'-'))
then (: (s-t-r) or (A-B) :)
let $temp2 := normalize-space(substring-before($temp1, '-'))
if (number($temp2)=$temp2) (: it's a number :)
then
let $bornDate := temp2
let $deathDate := normalize-space(substring-after($temp2, '-'))
let $bornPlace := data('')
else
let $bornPlace := $temp1
let $bornDate := data('')
let $deathDate := data('')
else (: (str) or (A) :)
if (number($temp1)=$temp1) (: it's a number :)
then
let $bornDate := temp1
let $deathDate := data('')
let $bornPlace := data('')
else
let $bornPlace := $temp1
let $bornDate := data('')
let $deathDate := data('')
另外,如果有更漂亮的方法可以做到这一点,我会接受它:D
在此先感谢您的帮助 :)