Précédent   Forum du club des développeurs et IT Pro > Autres langages > XML/XSL et SOAP > XQUERY/SGBD
XQUERY/SGBD Le langage XQUERY et tout ce qui a trait aux relations XML et bases de données : BDD XML native, intégration/extraction de XML, XML dans BDD relationnelle... Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/04/2012, 15h30   #1
dmacs
Invité de passage
 
Inscription : janvier 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 28
Points : 2
Points : 2
Par défaut XQuery et collections

Bonjour,

J'ai une question à propos de XQuery et d'un fichier collection.xml qui regroupe plusieurs fichiers à analyser :

Code :
1
2
3
4
5
6
 
<collection>
   <doc href="student1.xml"/>
   <doc href="student2.xml"/>
   <doc href="student3.xml"/>
   </collection>
Cf
http://www.abbeyworkshop.com/howto/x...ics/index.html

Dans mon code java, j'ai la requête suivante :
Code :
1
2
3
4
5
6
7
 
<major_list>
   {
       for $doc in collection('student_collection.xml')
       return $doc/student/major
   }
   7:</major_list>
Ma question est la suivante : est il possible de paramétrer XQuery pour que le fichier de collection ait une structure différente (ajout d'autres éléments dans le fichiers, modification des balises collection, doc et des attributs href) ?

Par exemple, le fichier pourrait être le suivant :
Code :
1
2
3
4
5
6
7
8
9
 
<collection>
   <folder>
      <file path="student1.xml"/>
      <file path="student2.xml"/>
      <file path="student3.xml"/>
      </collection>
   </folder>
   <a />
dmacs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2012, 18h56   #2
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 423
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 423
Points : 698
Points : 698
Si vous venez de commencer à travailler sur fn:collection() à partir de ligne de commande comme celui présenté dans le tuto, je dirais d'abord cette fonction est laissée une très parti à l'implémentation. En Saxon, avec la ligne de commande, on est en fait utiliser une Collection classe et plus précisément en appellant StandardCollectionURIResolver. Dans le cas plus général, dans un programme java, on peut en principe implémenter un Resolver plus général pour faire ça, CollectionURIResolver au lieu de StandardCollectionURIResolver. Donc, en principe, c'est possible mais pas possible avec le moyen d'une ligne de commande. Mais ça reste au niveau de principe, je ne peux pas vous donner de conseil concret comment faire.

Si vous voulez le faire avec une ligne de commende intérpréter un fichier xq, vous pouvez pourtant le faire comme ça, mais cette fois, vous débarrassez même la fonction fn:collection(). Du coup, vous débarrassez la dépendance d'implémentation en échangeant quelque chose qui peut être moins optimisée.
Code :
1
2
3
4
(: for $doc in collection('student_collection.xml') :)
for $path in doc('student_collection.xml')/collection/folder/file/@path
let $doc:=doc($path)
return $doc/student/major
Voilà.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 14h44   #3
dmacs
Invité de passage
 
Inscription : janvier 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 28
Points : 2
Points : 2
Merci pour ta réponse
En fait, je me suis basé sur l'exemple pour tout ce qui concerne les données à traiter (fichiers xml et requête)

Sinon, je dois utiliser un programme Java et non la ligne de commande.

En fait, l'idée est d'utiliser comme fichier xml qui liste la collection un fichier déjà utilisé par autre outil et donc de pouvoir utiliser une structure différente que celle de l'exemple.
dmacs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 15h51   #4
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 423
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 423
Points : 698
Points : 698
Bien entendu. Mais, il me semble j'ai répondu la question de tout les angles. Pas ça? ou bien tu n'as rien compris?
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 16h37   #5
dmacs
Invité de passage
 
Inscription : janvier 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 28
Points : 2
Points : 2
Je t'avoue que j'étais un perdu dans ton message et je n'avais pas bien saisi ce qui concernait le mode ligne de commande du mode java...

Si je résume, si je veux remplacer l'élément collection du fichier xml (fichier listant les autres fichiers à analyser) il faut implémenter notre propre classe Resolver et utiliser cette dernière dans le programme java ?
dmacs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2012, 16h46   #6
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 423
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 423
Points : 698
Points : 698
Tu peux concentrer au deuxième paragraphe: le premier paragraphe semble ne pas être pour toi pour le mement.

Mais la solution explicitée quand même exige une certaine compréhension générale comment fonctionne xquery en général sans quoi je ne peux rien faire.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h16.


 
 
 
 
Partenaires

Hébergement Web