{"kind": "type", "slug": "xml", "name": "xml", "major": "18", "snapshot": {"casts": [{"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "text", "castcontext": "a"}, {"castfunc": "xml", "castmethod": "f", "castsource": "text", "casttarget": "xml", "castcontext": "e"}, {"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "varchar", "castcontext": "a"}, {"castfunc": "xml", "castmethod": "f", "castsource": "varchar", "casttarget": "xml", "castcontext": "e"}, {"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "bpchar", "castcontext": "a"}, {"castfunc": "xml", "castmethod": "f", "castsource": "bpchar", "casttarget": "xml", "castcontext": "e"}], "facts": [{"label": "目录名称", "value": "pg_catalog.xml"}, {"label": "类型 OID", "value": "142"}, {"label": "类型种类", "value": "基础类型"}, {"label": "声明长度", "value": "变长（varlena）"}, {"label": "存储策略", "value": "扩展"}, {"label": "输入函数", "value": "xml_in"}, {"label": "输出函数", "value": "xml_out"}], "ranges": [], "aliases": [], "catalog": {"oid": "142", "descr": "XML content", "typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "xml", "typsend": "xml_send", "typtype": "b", "typalign": "i", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "xml_in", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "xml_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "xml_recv", "typstorage": "x", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "-", "typdefaultbin": "_null_", "array_type_oid": "143", "typispreferred": "f", "array_type_name": "_xml"}, "related": [{"url": "/wiki/catalog/pg_type/?v=18", "label": "pg_type 系统目录"}, {"url": "/wiki/catalog/pg_cast/?v=18", "label": "pg_cast 系统目录"}, {"url": "/wiki/catalog/pg_operator/?v=18", "label": "pg_operator 系统目录"}, {"url": "/wiki/catalog/pg_opclass/?v=18", "label": "pg_opclass 系统目录"}, {"url": "/wiki/type/arrays/?v=18", "label": "数组"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_files": {"doc/src/sgml/datatype.sgml": "86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700", "src/include/catalog/pg_am.h": "3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e", "src/include/catalog/pg_am.dat": "b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969", "src/include/catalog/pg_cast.h": "de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053", "src/include/catalog/pg_proc.h": "f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5", "src/include/catalog/pg_type.h": "8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e", "src/include/catalog/pg_range.h": "45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4", "src/include/catalog/pg_cast.dat": "97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2", "src/include/catalog/pg_proc.dat": "1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a", "src/include/catalog/pg_type.dat": "5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9", "src/include/catalog/pg_opclass.h": "9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf", "src/include/catalog/pg_range.dat": "5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4", "src/include/catalog/pg_operator.h": "621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4", "src/include/catalog/pg_opfamily.h": "e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0", "src/include/catalog/pg_opclass.dat": "4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668", "src/include/catalog/pg_operator.dat": "5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703", "src/include/catalog/pg_opfamily.dat": "3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311"}, "manual_sha256": {"arrays.html": "0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df", "domains.html": "82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2", "datatype.html": "e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254", "rowtypes.html": "74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9", "rangetypes.html": "e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33", "datatype-bit.html": "c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37", "datatype-oid.html": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "datatype-xml.html": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "datatype-enum.html": "cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8", "datatype-json.html": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5", "datatype-uuid.html": "292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246", "datatype-money.html": "8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964", "functions-info.html": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "catalog-pg-type.html": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "datatype-binary.html": "0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904", "datatype-pg-lsn.html": "339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af", "datatype-pseudo.html": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "datatype-boolean.html": "b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956", "datatype-numeric.html": "b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500", "sql-createdomain.html": "e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b", "datatype-datetime.html": "e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699", "datatype-character.html": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "datatype-geometric.html": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9", "datatype-net-types.html": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "datatype-textsearch.html": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c"}, "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "https://pg.center/docs/18/datatype-xml.html", "path": "datatype-xml.html", "label": "PostgreSQL 18 English manual", "sha256": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "language": "en", "original_url": "/docs/18/datatype-xml.html"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "coverage": "source inventory; exact declared input types for operator classes", "sections": [], "operators": [], "signature": "xml", "description": ["XML 数据"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-XML\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\" lang=\"zh\">\n<div>\n<div>\n<h2 class=\"title\" style=\"clear: both\">8.13. <acronym class=\"acronym\">XML</acronym>类型 </h2>\n</div>\n</div>\n</h2>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">xml</code> 数据类型可用于存储 XML 数据。与把 XML 数据存储在 <code class=\"type\">text</code> 字段中相比，它的优势在于会检查输入值的良构性，并且提供了可执行类型安全操作的支持函数；见<a class=\"xref\" href=\"/docs/18/functions-xml.html\" title=\"9.15. XML 函数\">第 9.15 节</a>。使用该数据类型要求构建时使用 <code class=\"command\">configure --with-libxml</code>。</p>\n<p lang=\"zh\"><code class=\"type\">xml</code> 类型既可以存储 XML 标准所定义的良构<span class=\"quote\">“<span class=\"quote\">文档</span>”</span>，也可以存储<span class=\"quote\">“<span class=\"quote\">内容</span>”</span>片段；后者是参照 XQuery 和 XPath 数据模型中更宽松的<a class=\"ulink\" href=\"https://www.w3.org/TR/2010/REC-xpath-datamodel-20101214/#DocumentNode\" target=\"_top\"><span class=\"quote\">“<span class=\"quote\">文档节点</span>”</span></a>概念来定义的。粗略地说，这意味着内容片段可以拥有多个顶层元素或字符节点。表达式 <code class=\"literal\"><em class=\"replaceable\"><code>xmlvalue</code></em> IS DOCUMENT</code> 可用于判断某个特定的 <code class=\"type\">xml</code> 值是完整文档，还是仅仅是一个内容片段。</p>\n<p lang=\"zh\">关于 <code class=\"type\">xml</code> 数据类型的限制和兼容性说明，见<a class=\"xref\" href=\"/docs/18/xml-limits-conformance.html\" title=\"D.3. XML 的限制以及对 SQL/XML 的符合性\">第 D.3 节</a>。</p>\n<div class=\"sect2\" id=\"DATATYPE-XML-CREATING\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/datatype-xml.html#DATATYPE-XML-CREATING\">8.13.1. 创建XML值</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\">要从字符数据生成 <code class=\"type\">xml</code> 类型的值，可以使用函数 <code class=\"function\">xmlparse</code>：<a class=\"indexterm\" id=\"id-1.5.7.21.6.2.3\" name=\"id-1.5.7.21.6.2.3\"></a></p>\n<pre class=\"synopsis\">XMLPARSE ( { DOCUMENT | CONTENT } <em class=\"replaceable\"><code>value</code></em>)\n</pre>\n<p lang=\"zh\">示例：</p>\n<pre class=\"programlisting\">XMLPARSE (DOCUMENT '&lt;?xml version=\"1.0\"?&gt;&lt;book&gt;&lt;title&gt;Manual&lt;/title&gt;&lt;chapter&gt;...&lt;/chapter&gt;&lt;/book&gt;')\nXMLPARSE (CONTENT 'abc&lt;foo&gt;bar&lt;/foo&gt;&lt;bar&gt;foo&lt;/bar&gt;')\n</pre>\n<p lang=\"zh\">按照 <acronym class=\"acronym\">SQL</acronym> 标准，这是把字符串转换为 XML 值的唯一方法；但 PostgreSQL 特有的下列语法：</p>\n<pre class=\"programlisting\">xml '&lt;foo&gt;bar&lt;/foo&gt;'\n'&lt;foo&gt;bar&lt;/foo&gt;'::xml\n</pre>\n<p lang=\"zh\">也可以使用。</p>\n<p lang=\"zh\">即使输入值指定了文档类型声明（DTD），<code class=\"type\">xml</code> 类型也不会根据 DTD 来验证输入值<a class=\"indexterm\" id=\"id-1.5.7.21.6.3.2\" name=\"id-1.5.7.21.6.3.2\"></a>。目前也没有内置支持可依据其他 XML 模式语言（如 XML Schema）来执行验证。</p>\n<p lang=\"zh\">反向操作，也就是从 <code class=\"type\">xml</code> 生成字符串值，则使用函数 <code class=\"function\">xmlserialize</code>：<a class=\"indexterm\" id=\"id-1.5.7.21.6.4.3\" name=\"id-1.5.7.21.6.4.3\"></a></p>\n<pre class=\"synopsis\">XMLSERIALIZE ( { DOCUMENT | CONTENT } <em class=\"replaceable\"><code>value</code></em> AS <em class=\"replaceable\"><code>type</code></em> [ [ NO ] INDENT ] )\n</pre>\n<p lang=\"zh\"><em class=\"replaceable\"><code>type</code></em> 可以是 <code class=\"type\">character</code>、<code class=\"type\">character varying</code> 或 <code class=\"type\">text</code>（或它们的别名）。同样，根据 SQL 标准，这是在 <code class=\"type\">xml</code> 与字符类型之间进行转换的唯一方式，但 <span class=\"productname\">PostgreSQL</span> 也允许你直接进行类型转换。</p>\n<p lang=\"zh\"><code class=\"literal\">INDENT</code> 选项会让结果以美化格式输出，而 <code class=\"literal\">NO INDENT</code>（默认值）则只输出原始输入字符串。直接转换为字符类型时，也会得到原始字符串。</p>\n<p lang=\"zh\">如果将字符串转换为 xml 时未经过 XMLPARSE，或将 xml 转换为字符串时未经过 XMLSERIALIZE，则使用 DOCUMENT 还是 CONTENT 由“XML option”会话配置参数决定。此参数可通过以下标准命令设置：</p>\n<pre class=\"synopsis\">SET XML OPTION { DOCUMENT | CONTENT };\n</pre>\n<p lang=\"zh\">或使用更接近 PostgreSQL 风格的语法</p>\n<pre class=\"synopsis\">SET xmloption TO { DOCUMENT | CONTENT };\n</pre>\n<p lang=\"zh\">默认值是 <code class=\"literal\">CONTENT</code>，因此允许所有形式的 XML 数据。</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-XML-ENCODING-HANDLING\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/datatype-xml.html#DATATYPE-XML-ENCODING-HANDLING\">8.13.2. 编码处理</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\">在客户端、服务器以及其间传输的 XML 数据上处理多种字符编码时，必须格外小心。使用文本模式向服务器发送查询并把查询结果返回给客户端时（这是通常使用的模式），<span class=\"productname\">PostgreSQL</span> 会将客户端与服务器之间传输的所有字符数据转换为目标端的字符编码，参见<a class=\"xref\" href=\"/docs/18/multibyte.html\" title=\"23.3. 字符集支持\">第 23.3 节</a>。这也包括表示 XML 值的字符串，如上例所示。这通常意味着，由于字符数据在客户端和服务器之间传输时可能被转换为其他编码，XML 数据中包含的编码声明可能会失效，因为内嵌的编码声明本身并不会被修改。为处理这种情况，表示 <code class=\"type\">xml</code> 类型输入值的字符串中所包含的编码声明会被<span class=\"emphasis\"><em>忽略</em></span>，其内容被假定为当前服务器编码。因此，为了正确处理，客户端发出的 XML 数据字符串必须采用当前客户端编码。客户端负责在将文档发送给服务器之前把它们转换为当前客户端编码，或适当调整客户端编码。输出时，<code class=\"type\">xml</code> 类型值不会带有编码声明，而客户端应假定所有数据都采用当前客户端编码。</p>\n<p lang=\"zh\">若使用二进制模式把查询参数传给服务器并把查询结果返回客户端，则不会执行编码转换，因此情况有所不同。在这种情况下，XML 数据中的编码声明会被识别；如果缺少编码声明，则该数据会被假定为 UTF-8（这是 XML 标准的要求；另请注意 PostgreSQL 不支持 UTF-16）。输出时，除非客户端编码是 UTF-8（此时编码声明会被省略），否则数据会带有一个指明客户端编码的编码声明。</p>\n<p lang=\"zh\">如果 XML 数据编码、客户端编码和服务器编码相同，PostgreSQL 处理 XML 数据时会更高效，也更不容易出错。XML 数据在内部使用 UTF-8 处理，因此服务器编码也为 UTF-8 时，计算效率最高。</p>\n<div class=\"caution\">\n<h3 class=\"title\" lang=\"zh\">小心</h3>\n<p lang=\"zh\">服务器编码不是 UTF-8 时，部分 XML 相关函数可能完全无法处理非 ASCII 数据；已知 xmltable() 和 xpath() 尤其存在此问题。</p>\n</div>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-XML-ACCESSING-XML-VALUES\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\" lang=\"zh\"><span class=\"sect2\"><a href=\"/docs/18/datatype-xml.html#DATATYPE-XML-ACCESSING-XML-VALUES\">8.13.3. 访问XML值</a></span></h3>\n</div>\n</div>\n</div>\n<p lang=\"zh\"><code class=\"type\">xml</code> 数据类型有些特殊，因为它不提供任何比较操作符。这是因为对 XML 数据并不存在良定义且通用的比较算法。其结果是，你无法通过把某个 <code class=\"type\">xml</code> 列与搜索值比较来检索行。因此，XML 值通常应伴随一个独立的键字段，例如 ID。另一种比较 XML 值的办法，是先把它们转换成字符串；但请注意，字符串比较对 XML 的比较需求通常帮助不大。</p>\n<p lang=\"zh\">由于 <code class=\"type\">xml</code> 数据类型没有可用的比较操作符，因此无法直接在这种类型的列上创建索引。如果需要在 XML 中快速搜索，可行方案包括：将表达式转换为字符串类型后为其建立索引，或者为某个 XPath 表达式建立索引。当然，实际查询也必须相应调整为使用该被索引的表达式。</p>\n<p lang=\"zh\"><span class=\"productname\">PostgreSQL</span> 的文本检索功能也可用于加速 XML 数据的全文检索。不过，目前 PostgreSQL 发行版中仍缺少所需的预处理支持。</p>\n</div>\n</div>", "manual_path": "datatype-xml.html", "localization": {"status": "complete", "sources": [{"url": "/docs/18/datatype-xml.html", "method": "same-major semantic node", "sha256": "a9851965cb2ca49a4d923609659f374bf377965016d716cba29c66fe0f20d685", "language": "zh", "matched_nodes": ["#DATATYPE-XML/div[0]", "#DATATYPE-XML/div[1]/dl[0]/dt[0]", "#DATATYPE-XML/div[1]/dl[0]/dt[1]", "#DATATYPE-XML/div[1]/dl[0]/dt[2]", "#DATATYPE-XML/div[6]/p[11]", "#DATATYPE-XML/div[6]/p[12]", "#DATATYPE-XML/div[6]/p[15]", "#DATATYPE-XML/div[6]/p[17]", "#DATATYPE-XML/div[6]/p[1]", "#DATATYPE-XML/div[6]/p[3]", "#DATATYPE-XML/div[6]/p[5]", "#DATATYPE-XML/div[6]/p[7]", "#DATATYPE-XML/div[6]/p[8]", "#DATATYPE-XML/div[6]/p[9]", "#DATATYPE-XML/div[7]/div[4]/h3[0]", "#DATATYPE-XML/div[7]/p[1]", "#DATATYPE-XML/div[7]/p[2]", "#DATATYPE-XML/div[8]/p[1]", "#DATATYPE-XML/div[8]/p[2]", "#DATATYPE-XML/div[8]/p[3]", "#DATATYPE-XML/p[3]", "#DATATYPE-XML/p[4]", "#DATATYPE-XML/p[5]"]}, {"url": "/docs/18/functions-matching.html", "method": "same-major semantic node", "sha256": "704120d783880b39b956c073d1a82ba1f40b35068b4d3b9a195f543b86c3a22a", "language": "zh", "matched_nodes": ["#FUNCTIONS-MATCHING/div[9]/div[51]/p[2]/em[2]"]}], "language": "zh", "original_text": {"/versions/18/description/0": "XML data", "/versions/18/facts/0/label": "Catalog name", "/versions/18/facts/1/label": "Type OID", "/versions/18/facts/2/label": "Type kind", "/versions/18/facts/2/value": "Base type", "/versions/18/facts/3/label": "Declared length", "/versions/18/facts/3/value": "Variable length (varlena)", "/versions/18/facts/4/label": "Storage strategy", "/versions/18/facts/4/value": "extended", "/versions/18/facts/5/label": "Input function", "/versions/18/facts/6/label": "Output function", "/versions/18/related/0/label": "pg_type catalog", "/versions/18/related/1/label": "pg_cast catalog", "/versions/18/related/2/label": "pg_operator catalog", "/versions/18/related/3/label": "pg_opclass catalog", "/versions/18/related/4/label": "Arrays"}, "fallback_fields": [], "source_language": "en", "original_snapshot_sha256": "d41175969631b56bcbcc694bcb978d2783c03a5ac4a7e712ed557543fa1a8f94"}, "comparison_data": {"casts": [{"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "bpchar", "castcontext": "a"}, {"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "text", "castcontext": "a"}, {"castfunc": "0", "castmethod": "b", "castsource": "xml", "casttarget": "varchar", "castcontext": "a"}, {"castfunc": "xml", "castmethod": "f", "castsource": "bpchar", "casttarget": "xml", "castcontext": "e"}, {"castfunc": "xml", "castmethod": "f", "castsource": "text", "casttarget": "xml", "castcontext": "e"}, {"castfunc": "xml", "castmethod": "f", "castsource": "varchar", "casttarget": "xml", "castcontext": "e"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.xml"}, {"label": "Declared length", "value": "Variable length (varlena)"}, {"label": "Input function", "value": "xml_in"}, {"label": "Output function", "value": "xml_out"}, {"label": "Storage strategy", "value": "extended"}, {"label": "Type OID", "value": "142"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "-1", "typelem": "0", "typname": "xml", "typsend": "xml_send", "typtype": "b", "typalign": "i", "typarray": "_xml", "typbyval": "f", "typdelim": ",", "typinput": "xml_in", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "xml_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "xml_recv", "typstorage": "x", "typbasetype": "0", "typcategory": "U", "typcollation": "0", "typisdefined": "t", "typsubscript": "-", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_xml"}, "operators": [], "operator_classes": []}, "comparison_hash": "be0324e2842d599b3e15e8f3a3fd3eb024ab5b684df76ace6afa9e3562470bce", "manual_language": "zh", "operator_classes": [], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}