# XML谓词
本节的函数用于检查xml值的属性。
#### xml IS DOCUMENT
描述：如果参数XML值是一个正确的XML文档，则IS DOCUMENT返回真；如果非正确XML文档，则返回假；参数为空时返回空。
返回值类型：bool
```
SELECT '<abc/>' is document;
 ?column?
----------
 t
(1 row)
```
#### xml IS NOT DOCUMENT
描述：如果参数XML值不是一个正确的XML文档，则IS NOT DOCUMENT返回真；如果是正确XML文档，则返回假；参数为空时返回空。
返回值类型：bool
```
SELECT 'abc' is document;
 ?column?
----------
 f
(1 row)
```
#### XMLEXISTS(text PASSING \[BY REF\] xml \[BY REF\])
描述：如果第一个参数中的XPath表达式返回任何节点，则函数XMLEXISTS返回真，否则返回假（如果哪一个参数为空，则结果就为空）。BY REF子句没有作用，用于保持SQL兼容性。
返回值类型：bool
示例：
```
SELECT xmlexists('//town[text() = ''TScity'']' PASSING BY REF '<towns><town>TScity</town><town>TOcity</town></towns>');
 xmlexists
-----------
 t
(1 row)
```
#### xml_is_well_formed(text)
描述：检查text字符串是不是格式良好的XML值，返回布尔结果。如果xmloption参数设置为DOCUMENT则检查文档，如果设置为CONTENT则检查内容。
返回值类型：bool
示例：
```
SET xmloption TO DOCUMENT;
SET
SELECT xml_is_well_formed('<>');
 xml_is_well_formed
--------------------
 f
(1 row)
SELECT xml_is_well_formed('<abc/>');
 xml_is_well_formed
--------------------
 t
(1 row)
SET xmloption TO CONTENT;
SELECT xml_is_well_formed('abc');
 xml_is_well_formed
--------------------
 t
(1 row)
```
#### xml_is_well_formed_document(text)
描述：检查text字符串是不是格式良好的文档，返回布尔结果。
返回值类型：bool
示例：
```
SELECT xml_is_well_formed_document('<test:foo xmlns:test="http://test.com/test">bar</test:foo>');
 xml_is_well_formed
--------------------
 t
(1 row)
SELECT xml_is_well_formed_document('<test:foo xmlns:test="http://test.com/test">bar</my:foo>');
 xml_is_well_formed_document
-----------------------------
 f
(1 row)
```
#### xml_is_well_formed_content(text)
描述：检查text字符串是不是格式良好的内容，返回布尔结果。
返回值类型：bool
示例：
```
SELECT xml_is_well_formed_content('content');
 xml_is_well_formed_content
----------------------------
 t
(1 row)
SELECT xml_is_well_formed_content('<content');
 xml_is_well_formed_content
----------------------------
 f
(1 row)
```
