web-dev-qa-db-fra.com

Différence entre XPath, XQuery et XPointer

Quelle est la différence entre XPath, XQuery et XPointer? Pour autant que je sache, XQuery est une version étendue de XPath. J'ai quelques connaissances de base sur XPath. Y a-t-il une fonctionnalité disponible dans XPath qui n'est pas dans XQuery? Hier, j'ai entendu un nouveau mot, XPointer. Je suis confus. Quelle langue est utilisée dans quel but?

62
Shashi

Wikipedia est un bon point de départ pour des questions comme celle-ci. Généralement, XPath est un langage utilisé pour localiser avec précision les nœuds XML exacts dans un DOM. XQuery est un sur-ensemble de XPath qui fournit également la syntaxe FLWOR , qui est semblable à SQL. Enfin, XPointer inclut XPath, mais fournit également un schéma d'adressage basé sur la position plus simple.

Bien sûr, vous pouvez toujours lire les spécifications du W3C pour plus de détails.

59
Matthew Flaschen

Bien que la réponse de Matthew donne une bonne première impression, il y a beaucoup plus à dire sur les normes mentionnées, et il y en a beaucoup d'autres qui sont liées. Il y a un article de Nice du magazine du groupe d'utilisateurs XML Holland mis à disposition en ligne, qui en dit long sur l'histoire de XQuery et met en perspective diverses de ces normes. La première partie est tout à fait pertinente ici:

XQuery signifie XML Query Language . Cela dit déjà l'essence. Il s'agit d'un langage permettant de sélectionner des sous-ensembles et des sous-structures à partir d'un large ensemble de fichiers XML. Le résultat peut être manipulé en quelque chose qui peut être utilisé, par exemple, dans un processus ultérieur, ou affiché dans un navigateur Web. XPath est beaucoup utilisé dans XQuery.

Toutes les normes XML ont leur propre portée. J'en nommerai quelques-uns. XSLT est un langage pour transformer XML en un autre format. XPointer est une extension de XPath pour adresser plus précisément les nœuds au sein de fragments XML ou même de sous-parties de nœuds. XLink est une norme pour définir les relations. XInclude est un standard pour composer plusieurs morceaux de XML en un seul en utilisant par exemple des relations XLink. Et XProc est un standard avec lequel on peut décrire comment les documents XML doivent être traités pour arriver au résultat final souhaité. Il s'exprime lui-même en XML et décrit le processus étape par étape, également appelé XML Pipelines. Dans XProc, vous utilisez a.o. Langages XQuery, XSLT et XInclude (et donc indirectement XPath, XPointer et XLink également) pour exprimer ce qui doit être fait exactement à chaque étape.

Toutes ces normes sont liées. Ils sont liés et dépendent les uns des autres. Le chevauchement entre certaines des normes XML mentionnées est assez bien résumé dans l'image suivante que vous pouvez également trouver sur W3Schools :

What is XPath

L'article complet peut être trouvé ici: http://grtjn.blogspot.nl/2011/10/xquery-novelties-revisited.html

HTH!

53
grtjn

Eh bien, je pense que XQuery mérite d'être distingué. XPath et XPointer sont presque les mêmes et sont utilisés pour la sélection des nœuds XML. XQuery, d'autre part, est une extension assez importante de XPath. Par exemple, il donne la possibilité de déclarer des fonctions personnalisées. Il s'agit donc plutôt d'un langage de programmation, qui fonctionne nativement avec XML. Vous pouvez consulter quelques exemples ici: embedding-xquery-in-Java

Cordialement

17
Rafal Rusin

XPath est intentionnellement limité à la lecture des nœuds existants.

En tant que XSLT, XQuery peut créer des nœuds. Il peut également mettre à jour les nœuds (avec XQuery Update Facility).

Du point de vue de mon implémenteur XQuery ;-)

5
Alain Couthures