8.14. Support des documents XML

Le support de XML (Extensible Markup Language) n'est pas une capacité, mais un ensemble de fonctionnalités supporté par le SGBD. Ces fonctionnalités incluent le stockage, l'import/export, la validation, l'indexage, des modifications facilitées, la recherche, la transformation et une correspondance XML vers SQL. PostgreSQL™ supporte certaines de ces fonctionnalités XML. Les prochaines versions de PostgreSQL™ continueront d'améliorer le support d'XML. Pour un aperçu de l'utilisation d'XML dans les bases, voir http://www.rpbourret.com/xml/XMLAndDatabases.htm.

Stockage

PostgreSQL n'a pas un type de données spécialisé pour le XML. Les utilisateurs devraient stocker les documents XML dans des champs TEXT ordinaires. Si vous avez besoin de diviser le document en plusieurs parties correspondant aux éléments du document XML, de façon à ce que chaque élément soit stocké séparément, vous devez utiliser une solution tierce. Une fois cela fait, les données deviennent relationnelles et peuvent être traitées comme d'habitude.

Import/Export

Il n'existe pas de fonctionnalité pour établir la correspondance entre XML et des tables relationnelles. Un outil externe doit être utilisé pour cela. Une façon simple d'exporter en XML est d'utiliser psql en mode HTML (\pset format html), puis de convertir la sortie XHTML en XML avec l'aide d'un outil externe.

Validation

/contrib/xml2 a une fonction appelée xml_is_well_formed() qui peut être utilisée dans une contrainte CHECK pour s'assurer qu'un champ contient du XML bien formé. Elle ne supporte pas la validation d'un schéma XML spécifique. Un langage côté serveur avec des fonctionnalités XML peut être utilisé pour des vérifications de schémas XML spécifiques.

Indexage

Les fonctions de /contrib/xml2 peuvent être utilisées dans des index d'expression pour indexer des champs XML spécifiques. Pour indexer le contenu complet des documents XML, l'outil d'indexage en texte complet /contrib/tsearch2 peut être utilisé. Bien sûr, les index Tsearch2 ne sont pas conscients du XML donc des vérifications supplémentaires avec /contrib/xml2 devront être ajoutées aux requêtes.

Modification

Si un UPDATE ne modifie pas un champ XML, la donnée XML est partagée entre anciennes et nouvelles lignes. Néanmoins, si l'UPDATE modifie un champ XML, une copie entièrement modifiée du champ XML doit être traitée en interne.

Recherche

Les recherches XPath sont implémentées en utilisant /contrib/xml2. Elle traite les documents texte XML et renvoient les résultats basés sur la requête.

Transformation

/contrib/xml2 supporte XSLT (Extensible Stylesheet Language Transformation).

Correspondance XML vers SQL

Ceci implique la convertion de données XML vers ou à partir de structures relationnelles. PostgreSQL™ n'a pas de support interne pour une telle correspondance et se base sur des outils externes pour ce type de conversions.

Fonctionnalités manquantes

Les fonctionnalités manquantes incluent XQuery, la syntaxe SQL/XML (ISO/IEC 9075-14) et un type de données XML optimisé pour le stockage XML.