xPath を使用して、html フィールドからデータを取得しています。このデータは、次の形式 (かっこを含む) にすることができます。
データ |||| コードを説明するために使用している記号
(bornPlace、bornDate-DeathDate) |||| (str, AB) = 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
あなたの助けを前もってありがとう:)