Le support du XML (Extensible Markup Language) n'est pas une capacité, mais un ensemble de fonctionnalités supporté par un SGBD. Ces fonctionnalités incluent le stockage, l'import/export, la validation, l'indexation, l'efficacité des modifications, la recherche, la transformation et la mise en correspondance du XML vers SQL. PostgreSQL™ supporte certaines de ces fonctionnalités. Les prochaines versions de PostgreSQL™ continueront d'améliorer le support du XML. Pour avoir un aperçu de l'utilisation d'XML dans les bases de données, consulter http://www.rpbourret.com/xml/XMLAndDatabases.htm .
PostgreSQL ne dispose pas d'un type de données spécialisé pour le XML. Les utilisateurs peuvent stocker les documents XML dans des champs TEXT ordinaires. Si le document doit être scindé en plusieurs parties correspondant aux éléments du document XML, de façon à ce que chaque élément soit stocké séparément, une solution tiers doit être utilisée. Une fois cela fait, les données deviennent relationnelles et doivent être traitées en conséquence.
Il n'y a pas de fonctionnalité permettant d'établir la correspondance entre le XML et les 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.
/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 n'assure pas la validation au regard d'un schéma XML spécifique. Un langage côté serveur disposant de fonctionnalités XML peut être utilisé pour les vérifications au regard de schémas XML spécifiques.
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é. Les index Tsearch2 n'ont évidemment pas conscience du XML ; des vérifications supplémentaires avec /contrib/xml2 doivent donc être ajoutées aux requêtes.
Si un UPDATE ne modifie pas un champ XML, la donnée XML est partagée entre anciennes et nouvelles lignes. Mais si l' UPDATE modifie un champ XML, une copie entièrement modifiée du champ XML doit être créée en interne.
Les recherches XPath sont implantées en utilisant /contrib/xml2. Cette contribution traite les documents texte XML et renvoient les résultats en fonction de la requête.
/contrib/xml2 supporte XSLT (Extensible Stylesheet Language Transformation).
Ceci implique la conversion de données XML vers ou à partir de structures relationnelles. PostgreSQL™ n'offre pas de support interne pour une telle mise en correspondance et se repose sur des outils externes pour ces conversions.
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.