XML(可扩展标记语言)支持不是一种单一的能力,而是需要数据库系统支持一系列的特性,包括存储、导入/导出、验证、索引、修改、搜索、转换、XML 到 SQL 映射,PostgreSQL 只支持其中的一部分,未来的版本将提供更多的 XML 支持。关于在数据库中使用 XML 的概览,请查看 http://www.rpbourret.com/xml/XMLAndDatabases.htm 。
PostgreSQL 没有专门的 XML 数据类型。用户应当将 XML 文档存储在普通的 TEXT 字段中。如果需要将文档分割成各个组成部分以便于将每个元素分别存储,必须使用中间层解决方案。但是一旦完成,数据将变成关系并且必须这样处理。
必须使用外部工具才能将 XML 映射为关系表。一个导出 XML 的简单途径是以 HTML 模式使用 psql(\pset format html),然后使用外部工具将 XHTML 输出转换为 XML 。
/contrib/xml2 中有一个 xml_is_well_formed()
函数可以在 CHECK 约束中使用以确保字段中保存的内容是格式良好的 XML ,但是它不支持根据特定的 XML 模式进行校验。可以使用具有 XML 功能的服务端语言根据特定的 XML 模式进行校验。
/contrib/xml2 中的函数可以用于表示特定 XML 字段的索引。要对 XML 文档全文进行索引,可以使用全文索引工具 /contrib/tsearch2 。由于 Tsearch2 索引对 XML 一无所知,所以必须在查询中添加额外的 /contrib/xml2 检查。
如果 UPDATE 没有修改 XML 字段,那么 XML 数据在新旧行之间是共享的。但是,如果 UPDATE 修改了 XML 字段,那么必须在内部创建一个完整的已修改的该 XML 字段副本。
可以使用 /contrib/xml2 实现 XPath 搜索。它用于处理 XML 文本文档并根据被请求的查询返回结果。
/contrib/xml2 支持 XSLT (Extensible Stylesheet Language Transformation)。
在 XML 数据和关系结构之间相互转换。PostgreSQL 没有这种映射功能的内部支持,必须依靠外部工具。
不支持的特性包括:XQuery 、SQL/XML 语法(ISO/IEC 9075-14)、专用于 XML 存储的 XML 数据类型。