XML类型函数

以下函数均继承自开源PG9.2。

  • xmlparse ( { DOCUMENT | CONTENT } value)

    描述:使用函数xmlparse, 来从字符数据产生xml类型的值。

    参数:数据类型为text

    返回值类型:xml

    示例:

    openGauss=# SELECT XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Manual</title><chapter>...</chapter></book>');
                          xmlparse                         
    ----------------------------------------------------------
     <book><title>Manual</title><chapter>...</chapter></book>
    (1 row)
    openGauss=# SELECT XMLPARSE (CONTENT 'abc<foo>bar</foo><bar>foo</bar>');
              xmlparse             
    ---------------------------------
     abc<foo>bar</foo><bar>foo</bar>
    (1 row)
    
  • xmlserialize( { DOCUMENT | CONTENT } value AS type )

    描述:使用函数xmlserialize, 来从xml产生一个字符串。

    参数:类型可以是character,character varying或text或其中某个的变种。

    返回值类型:xml

    示例:

    openGauss=# SELECT XMLSERIALIZE(CONTENT 'good' AS CHAR(10));
     xmlserialize 
    --------------
     good
    (1 row)
    openGauss=# SELECT xmlserialize(DOCUMENT '<head>bad</head>' as text);
       xmlserialize   
    ------------------
     <head>bad</head>
    (1 row)
    

    说明:

    • 当一个字符串值在没有通过XMLPARSE或XMLSERIALIZE的情况下,与xml类型进行转换时,分别的选择DOCUMENT与CONTENT由"XML option" 会话配置参数决定,这个配置参数可以由标准命令来设置:
    SET XML OPTION { DOCUMENT | CONTENT };
    

    或使用类似的语法来设置:

    SET xmloption TO { DOCUMENT | CONTENT };
    
  • xmlcomment(text)

    描述:创建一个XML值,并且它包含一个用指定文本作为内容的XML注释。该文本不包含“--”字符且不存在是“-”字符的结尾、符合XML注释的格式要求。且当参数为空时、结果也为空。

    参数:数据类型为text。

    返回值类型:xml

    示例:

    openGauss=# SELECT xmlcomment('hello');
      xmlcomment
    --------------
     <!--hello-->
    
  • xmlconcat(xml[, …])

    描述:将由单个XML值组成的列表串接成一个单独的值,该值包含一个XML的内容片断。其中空值会被忽略,并且只有当所有参数都为空时结果才为空。

    参数:数据类型为xml。

    返回值类型:xml

    示例:

    openGauss=# SELECT xmlconcat('<abc/>', '<bar>foo</bar>');
          xmlconcat
    ----------------------
     <abc/><bar>foo</bar>
    
  • xmlelement(name name [, xmlattributes(value [AS attname] [, … ])] [, content, …])

    描述:使用给定名称、属性和内容产生一个XML元素。

    返回值类型:xml

    示例:

    openGauss=# SELECT xmlelement(name foo);
     xmlelement
    ------------
     <foo/>
    
  • xmlforest(content [AS name] [, …])

    描述:使用给定名称和内容产生一个元素的XML序列。

    返回值类型:xml

    示例:

    openGauss=# SELECT xmlforest('abc' AS foo, 123 AS bar);
              xmlforest
    ------------------------------
     <foo>abc</foo><bar>123</bar>
    
  • xmlpi(name target [, content])

    描述:创建一个XML处理指令。若内容不为空、则内容不能包含字符序列。

    返回值类型:xml

    示例:

    openGauss=# SELECT xmlpi(name php, 'echo "hello world";');
                xmlpi
    -----------------------------
     <?php echo "hello world";?>
    
  • xmlroot(xml, version text | no value [, standalone yes|no|no value])

    描述:修改一个XML值的根结点的属性。如果指定了一个版本,它会替换根节点的版本声明中的值、如果指定了一个独立设置、它会替换根节点的独立声明中的值。

    示例:

    openGauss=# SELECT xmlroot('<?xml version="1.1"?><content>abc</content>',version '1.0', standalone yes);
                    xmlroot
    ----------------------------------------
     <?xml version="1.0" standalone="yes"?>
     <content>abc</content>
    
  • xmlagg(xml)

    描述:该函数是一个聚集函数、它将聚集函数调用的输入值串接起来,且支持跨行串接。

    参数:xml

    返回值类型:xml

    示例:

    openGauss=# CREATE TABLE xmltest (
                id int,
                data xml
               );
    openGauss=# INSERT INTO xmltest VALUES (1, '<value>one</value>');
    INSERT 0 1
    openGauss=# INSERT INTO xmltest VALUES (2, '<value>two</value>');
    INSERT 0 1
    openGauss=# SELECT xmlagg(data) FROM xmltest;
                    xmlagg                
    --------------------------------------
     <value>one</value><value>two</value>
    (1 row)
    
  • xmlexists(text passing [BY REF] xml [BY REF])

    描述:评价一个XPath 1.0表达式(第一个参数),以传递的XML值作为其上下文项。 如果评价的结果产生一个空节点集,该函数返回false,如果产生任何其他值,则返回true。 如果任何参数为空,则函数返回null。 作为上下文项传递的非空值必须是一个XML文档,而不是内容片段或任何非XML值。

    参数:xml

    返回值类型:bool

    示例:

    openGauss=# SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF '<towns><town>Toronto</town><town>Ottawa</town></towns>');
     xmlexists
    ------------
     t
    (1 row)
    
  • xml_is_well_formed(text)

    描述:检查text是不是正确的XML类型格式、返回值为布尔类型。

    参数:text

    返回值类型:bool

    示例:

    openGauss=# SELECT xml_is_well_formed('<>');
     xml_is_well_formed 
    --------------------
     f
    (1 row)
    
  • xml_is_well_formed_document(text)

    描述:检查text是不是正确的XML类型格式、返回值为布尔类型。

    参数:text

    返回值类型:bool

    示例:

    openGauss=# SELECT xml_is_well_formed_document('<pg:foo xmlns:pg="http://postgresql.org/stuff">bar</pg:foo>');
     xml_is_well_formed_document 
    -----------------------------
     t
    (1 row)
    
  • xml_is_well_formed_content(text)

    描述:检查text是不是正确的XML类型格式、返回值为布尔类型。

    参数:text

    返回值类型:bool

    示例:

    openGauss=# select xml_is_well_formed_content('k');
     xml_is_well_formed_content
    ----------------------------
     t
    (1 row)
    
  • xpath(xpath, xml [, nsarray])

    描述:在XML值xml上计算XPath 1.0表达式xpath (a text value)。它返回一个XML值的数组,该数组对应于该XPath表达式产生的结点集合。如果该XPath表达式返回一个标量值而不是一个结点集合,将会返回一个单一元素的数组。

    第二个参数必须是一个良构的XML文档。特殊地,它必须有一个单一根结点元素。

    该函数可选的第三个参数是一个名字空间映射的数组。这个数组应该是一个二维text数组,其第二轴长度等于2(即它应该是一个数组的数组,其中每一个都由刚好 2 个元素组成)。每个数组项的第一个元素是名字空间的名称(别名),第二个元素是名字空间的URI。并不要求在这个数组中提供的别名和在XML文档本身中使用的那些名字空间相同(换句话说,在XML文档中和在xpath函数环境中,别名都是本地的)。

    返回值类型:xml

    示例:

    openGauss=# SELECT xpath('/my:a/text()', '<my:a xmlns:my="http://example.com">test</my:a>',ARRAY[ARRAY['my', 'http://example.com']]);
     xpath  
    --------
     {test}
    (1 row)
    
  • xpath_exists(xpath, xml [, nsarray])

    描述:该函数是xpath函数的一种特殊形式。这个函数不是返回满足XPath 1.0表达式的单一XML值,它返回一个布尔值表示查询是否被满足(具体来说,它是否产生了空节点集以外的任何值)。这个函数等价于标准的XMLEXISTS谓词,不过它还提供了对一个名字空间映射参数的支持。

    返回值类型:bool

    示例:

    openGauss=# SELECT xpath_exists('/my:a/text()', '<my:a xmlns:my="http://example.com">test</my:a>',ARRAY[ARRAY['my', 'http://example.com']]);
     xpath_exists  
    --------------
     t
    (1 row)
    
  • query_to_xml(query text, nulls boolean, tableforest boolean, targetns text)

    描述:该函数将关系表的内容映射成 XML 值,可理解为XML的导出功能。

    返回值类型:xml

  • query_to_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)

    描述:返回 XML 模式文档,这些文档描述上述对应函数所执行的映射。

  • query_to_xml_and_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)

    描述:产生XML数据映射和对应的XML模式,并把产生的结果链接在一起放在一个文档中。

  • cursor_to_xml(cursor refcursor, count int, nulls boolean,tableforest boolean, targetns text)

    描述:该函数将关系表的内容映射成 XML 值,可理解为XML的导出功能。

    返回值类型:xml

  • cursor_to_xmlschema(cursor refcursor, nulls boolean, tableforest boolean, targetns text)

    描述:返回 XML 模式文档,这些文档描述上述对应函数所执行的映射。

    返回值类型:xml

  • schema_to_xml(schema name, nulls boolean, tableforest boolean, targetns text)

    描述:把模式中的表映射成XML值。

    返回值类型:xml

  • schema_to_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text)

    描述:把模式中的表映射成XML模式文档。

    返回值类型:xml

  • schema_to_xml_and_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text)

    描述:把模式中的表映射成XML值和模式文档。

    返回值类型:xml

  • database_to_xml(nulls boolean, tableforest boolean, targetns text)

    描述:把数据库的表映射成XML值。

    返回值类型:xml

  • database_to_xmlschema(nulls boolean, tableforest boolean, targetns text)

    描述:把数据库的表映射成XML模式文档。

    返回值类型:xml

  • database_to_xml_and_xmlschema(nulls boolean, tableforest boolean, targetns text)

    描述:把数据库的表映射成XML值和模式文档。

    返回值类型:xml

  • table_to_xml(tbl regclass, nulls boolean, tableforest boolean, targetns text)

    描述:该函数将关系表的内容映射成 XML 值,可理解为XML的导出功能。

    返回值类型:xml

  • table_to_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text)

    描述:返回 XML 模式文档,这些文档描述上述对应函数所执行的映射。

    返回值类型:xml

  • table_to_xml_and_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text)

    描述:产生XML数据映射和对应的XML模式,并把产生的结果链接在一起放在一个文档中。

    说明:

    • xpath相关函数仅支持 xpath() 和 xpath_exists()、由于其使用xpath语言查询XML文档,而这些函数都依赖于libxml2 库,且这个库仅在Xpath1.0提供、所以对XPath的限制为1.0。
    • 不支持xquery、xml extension、xslt。
意见反馈
编组 3备份
    openGauss 2024-04-26 00:47:23
    取消