xquery multi if-else

À l'aide de xPath, je suis l'obtention de données de champ html, ces données peuvent être dans ce format (y compris les parenthèses):

De DONNÉES |||| symboles que j'utilise pour expliquer mon code

(bornPlace, bornDate-DeathDate) |||| (str, A-B) = remarque que str peut également contenir '-'

(bornPlace, bornDate) |||| (str, A)

(bornPlace) |||| (str)

(bornDate-DeathDate) |||| (A-B)

(bornDate) |||| (Un)

Ou complètement vide

Je suis en train de récupérer chaque élément distinct de la variable à l'aide de plusieurs if-else, mais il semble que ça ne marche pas comme multi-ligne de commandes (je pense que oui).

J'ai déjà fait un code qui ne fonctionne pas :-/(il dit attendre de retour, trouvé d'autre si ....)

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('')

Aussi si il y a une plus belle façon de le faire, je vais le prendre 😀

Merci d'avance pour votre aide 🙂

OriginalL'auteur Enissay | 2012-07-26