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 數據類型。