2010-06-18 27 views
1

J'utilise BaseX comme base de données XML. Je fais une requête simple commeBaseX récupère les sauts de ligne entre les données de noeud

xquery for $Book in 
/Libraray/Literaturelist/Literature/Title return fn:data($Book) 

Je reçois tous les titres, tout comme une chaîne qui n'a pas de sauts de ligne.

Existe-t-il un moyen d'ajouter des sauts de ligne avec XQuery après chaque noeud trouvé par la requête pour séparer les données? Cela ne dépend pas vraiment de mon fichier XML car je n'ajoute pas de sauts de ligne codés en dur dans les balises. ;)

Répondre

2

dépend de la façon dont vous récupérez les résultats de la requête. La manière la plus élégante consiste à utiliser l'itérateur, par exemple. montré dans:

http://basex.org/code/QueryExample 

En dehors de cela, vous pouvez prolonger votre XQuery en retournant une nouvelle ligne supplémentaire:

xquery for $Book in /Libbraray/Literaturelist/Literature/Title 
return (fn:data($Book), ' 
') 

Notez toutefois que le caractère d'espace en plus sortie ne peut pas être supprimée.

Best, Christian

PS: ne hésitez pas à utiliser la liste de diffusion basex-talk pour obtenir des commentaires plus rapidement.

+1

Pourquoi le caractère espace supplémentaire apparaît-il? – Sicco

+1

Sicco: http://www.w3.org/TR/xslt-xquery-serialization-30/ -> normalisation de séquence. Pourtant, vous pouvez surmonter cela en rejoignant la séquence manuellement (cela ne fonctionne que pour les chaînes, et signifie essentiellement renvoyer une nouvelle séquence de longueur 1): 'string-join (pour $ i dans 1 à 10 renvoie xs: string ($ i), " ") ' – michael

0

Une autre façon d'ajouter une nouvelle ligne est d'utiliser explicitement la référence de caractère pour une nouvelle ligne:

xquery for $Book in /Libbraray/Literaturelist/Literature/Title 
return (fn:data($Book), "
") 
0

La spécification XQuery 3.1 Serialization fournit le nouveau mode de sérialisation « adaptatif », qui sort chaque résultat XQuery sur une nouvelle ligne . Depuis BaseX 8, ce mode est utilisé comme nouveau défaut.