PostgreSQL 9.6.0 �ֲ�
| |||
---|---|---|---|
��һҳ | ��һ�� | �� 9. �����Ͳ����� | ��һҳ |
�����������ĺ����Լ��ຯ���ı���ʽ��������xml��ֵ�ϲ���������xml����ϸ��Ϣ��μ��� 8.13 ����������ֵ������xml֮��ת�����ຯ���ı���ʽxmlparse
��xmlserialize
�Ͳ��������ظ����ܡ�ʹ�ô󲿷���Щ����Ҫ��װʱʹ����configure --with-libxml���б��롣
��һ�麯�����ຯ���ı���ʽ���������� SQL ���ݲ��� XML ���ݡ������ر��ʺ��ڽ���ѯ�����ʽ���� XML �ĵ��Ա����ڿͻ���Ӧ���д�����
xmlcomment
(text)
����xmlcomment
������һ�� XML ֵ��������һ��ʹ��ָ���ı���Ϊ���ݵ� XML ע�͡����ı�������"--"����Ҳ������һ��"-"��β����������Ľṹ��һ���Ϸ��� XML ע�͡��������Ϊ�գ����ҲΪ�ա�
���ӣ�
SELECT xmlcomment('hello'); xmlcomment -------------- <!--hello-->
xmlconcat
(xml[, ...])
����xmlconcat
���ɵ��� XML ֵ��ɵ��б����ӳ�һ��������ֵ�����ֵ����һ�� XML ����Ƭ�ϡ���ֵ�ᱻ���ԣ�ֻ�е�û�в���Ϊ�ǿ�ʱ�����Ϊ�ա�
���ӣ�
SELECT xmlconcat('<abc/>', '<bar>foo</bar>'); xmlconcat ---------------------- <abc/><bar>foo</bar>
��� XML �������ڣ����ǻᰴ������ķ�ʽ����ϡ�������еIJ���ֵ������ͬ�� XML �汾�������ð汾�������ڽ���У����򽫲�ʹ�ð汾��������в���ֵ�ж�������ֵ"yes"����ô��ֵ�������ڽ���С�������в���ֵ����һ����������ֵ����������һ��Ϊ"no"����"no"�����ڽ���С��������н�û�ж���������������������ҪҪ��һ��������������û�а汾����������ʹ��һ���汾 1.0 �İ汾��������Ϊ XML Ҫ��һ�� XML ����Ҫ����һ���汾���������������ᱻ���Բ�������������ж��ᱻ�Ƴ���
���ӣ�
SELECT xmlconcat('<?xml version="1.1"?><foo/>', '<?xml version="1.1" standalone="no"?><bar/>'); xmlconcat ----------------------------------- <?xml version="1.1"?><foo/><bar/>
xmlelement
(name name [, xmlattributes(value [AS attname] [, ... ])] [, content, ...])
����ʽxmlelement
ʹ�ø������ơ����Ժ����ݲ���һ�� XML Ԫ�ء�
���ӣ�
SELECT xmlelement(name foo); xmlelement ------------ <foo/> SELECT xmlelement(name foo, xmlattributes('xyz' as bar)); xmlelement ------------------ <foo bar="xyz"/> SELECT xmlelement(name foo, xmlattributes(current_date as bar), 'cont', 'ent'); xmlelement ------------------------------------- <foo bar="2007-01-26">content</foo>
���ǺϷ� XML ���ֵ�Ԫ�������������������ݣ����ݵķ����ǽ�Υ�����ַ�������_xHHHH_�滻������HHHH�DZ��滻�ַ��� Unicode ������ʮ�����Ʊ�ʾ�����磺
SELECT xmlelement(name "foo$bar", xmlattributes('xyz' as "a&b")); xmlelement ---------------------------------- <foo_x0024_bar a_x0026_b="xyz"/>
�������ֵ��һ�������ã�����Ҫָ��һ����ʽ����������������������е����ֽ���Ĭ���������Ե����֡�����������£����Ա��뱻����һ����ʽ���ơ������������ǺϷ��ģ�
CREATE TABLE test (a xml, b xml); SELECT xmlelement(name test, xmlattributes(a, b)) FROM test;
����������Щ���Ϸ���
SELECT xmlelement(name test, xmlattributes('constant'), a, b) FROM test; SELECT xmlelement(name test, xmlattributes(func(a, b))) FROM test;
���ָ����Ԫ�����ݣ����ǽ����������������͸�ʽ����������ݱ���Ҳ������xml���Ϳ��Թ������ӵ� XML �ĵ������磺
SELECT xmlelement(name foo, xmlattributes('xyz' as bar), xmlelement(name abc), xmlcomment('test'), xmlelement(name xyz)); xmlelement ---------------------------------------------- <foo bar="xyz"><abc/><!--test--><xyz/></foo>
�������͵����ݽ�����ʽ��Ϊ�Ϸ��� XML �ַ����ݡ�����ζ���ַ� <, >, �� & ����ת��Ϊʵ�塣���������ݣ���������bytea��������ʾ�� base64 ��ʮ�����Ʊ��룬����ȡ�������ò���xmlbinary�����á�Ϊ�˽� SQL �� PostgreSQL �������ͺ� XML ģʽ�������룬�����ڴ������������͵��ض���Ϊ�ܹ��Ľ�������ʱ�������һ����Ϊ��ȷ��������
xmlforest
(content [AS name] [, ...])
����ʽxmlforest
ʹ�ø������ƺ����ݲ���һ��Ԫ�ص� XML É�֣����У���
���ӣ�
SELECT xmlforest('abc' AS foo, 123 AS bar); xmlforest ------------------------------ <foo>abc</foo><bar>123</bar> SELECT xmlforest(table_name, column_name) FROM information_schema.columns WHERE table_schema = 'pg_catalog'; xmlforest ------------------------------------------------------------------------------------------- <table_name>pg_authid</table_name><column_name>rolname</column_name> <table_name>pg_authid</table_name><column_name>rolsuper</column_name> ...
�������ڵڶ����������������������ֵ��һ�������ã�Ԫ�����ƿ��Ա����ԣ����������Ĭ��ʹ�����������򣬱���ָ��һ�����֡�
������xmlelement
��ʾ���Ƿ� XML ���ֵ�Ԫ�����ᱻ���ݡ����Ƶأ���������Ҳ�ᱻ�����������Ϸ��� XML ���ݣ��������Ѿ���һ��xml���͡�
ע����� XML É���ɶ���һ��Ԫ����ɣ���ô�����ǺϷ��� XML �ĵ��������xmlelement
�а�װxmlforest
����ʽ�����ô���
xmlpi
(name target [, content])
����ʽxmlpi
����һ�� XML ����ָ�����������ݣ����ݲ��ܰ����ַ�����?>��
���ӣ�
SELECT xmlpi(name php, 'echo "hello world";'); xmlpi ----------------------------- <?php echo "hello world";?>
xmlroot
(xml, version text | no value [, standalone yes|no|no value])
����ʽxmlroot
�޸�һ�� XML ֵ�ĸ��������ԡ����ָ����һ���汾�������滻���ڵ�İ汾�����е�ֵ�����ָ����һ���������ã������滻���ڵ�Ķ��������е�ֵ��
SELECT xmlroot(xmlparse(document '<?xml version="1.1"?><content>abc</content>'), version '1.0', standalone yes); xmlroot ---------------------------------------- <?xml version="1.0" standalone="yes"?> <content>abc</content>
xmlagg
(xml)
����������������������ͬ������xmlagg
��һ���ۼ������������ۼ��������õ�����ֵ�����������dz���xmlconcat
���������飬���˴����ǿ��з����Ķ������ڵ�һ�еĶ������ʽ�Ϸ������ۼ�����ʽ�ĸ�����Ϣ����� 9.20 ����
���ӣ�
CREATE TABLE test (y int, x xml); INSERT INTO test VALUES (1, '<foo>abc</foo>'); INSERT INTO test VALUES (2, '<bar/>'); SELECT xmlagg(x) FROM test; xmlagg ---------------------- <foo>abc</foo><bar/>
Ϊ�˾������ӵ�˳�򣬿���Ϊ�ۼ���������һ��ORDER BY�Ӿ䣬���� 4.2.7 �������������磺
SELECT xmlagg(x ORDER BY y DESC) FROM test; xmlagg ---------------------- <bar/><foo>abc</foo>
�����Ƽ�����ǰ�İ汾��ʹ�����зDZ�׼�����������������ض��������Ȼ���ã�
SELECT xmlagg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS tab; xmlagg ---------------------- <bar/><foo>abc</foo>
��һ�������ı���ʽ���xmlֵ�����ԡ�
xml IS DOCUMENT
������� XML ֵ��һ����ȷ�� XML �ĵ�����IS DOCUMENT�����棬��������򷵻ؼ٣�������һ������Ƭ�ϣ��������Dz���Ϊ��ʱ���ؿա��ĵ�������Ƭ��֮������������ 8.13 ����
XMLEXISTS
(text PASSING [BY REF] xml [BY REF])
�����һ�������е� XPath ����ʽ�����κν�㣬����xmlexists
�����棬���򷵻ؼ٣������һ������Ϊ�գ�������Ϊ�գ���
���ӣ�
SELECT xmlexists('//town[text() = ''Toronto'']' PASSING BY REF '<towns><town>Toronto</town><town>Ottawa</town></towns>'); xmlexists ------------ t (1 row)
BY REF�Ӿ��� PostgreSQL ��û�����ã�����Ϊ�˺�����ʵ�ֱ��� SQL һ���Ժͼ����Ի������������֡�ÿһ�� SQL ��׼����һ��BY REF�DZ�Ҫ��ģ����ڶ������ǿ�ѡ�ġ�ҲҪע�� SQL ��׼ָ��xmlexists
�ṹ����һ�� XQuery ����ʽ��Ϊ��һ���������� PostgreSQL Ŀǰֻ֧�� XPath������ XQuery��һ���Ӽ���
xml_is_well_formed
(text)xml_is_well_formed_document
(text)xml_is_well_formed_content
(text)
��Щ�������һ��text���Dz���һ�������� XML������һ�����������xml_is_well_formed_document
���һ���������ĵ�����xml_is_well_formed_content
������������ݡ����xmloption���ò���������ΪDOCUMENT��xml_is_well_formed
������һ�������Ĺ�����������ò���������ΪCONTENT��xml_is_well_formed
�����ڶ��������Ĺ���������ζ��xml_is_well_formed
���ڼ��һ��������xml�ļ������Ƿ��ɹ��dz����ã������������������ڼ��XMLPARSE
�Ķ�Ӧ�����Ƿ��ɹ����á�
���ӣ�
SET xmloption TO DOCUMENT; 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) 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) SELECT xml_is_well_formed_document('<pg:foo xmlns:pg="http://postgresql.org/stuff">bar</my:foo>'); xml_is_well_formed_document ----------------------------- f (1 row)
���һ��������ʾ����Щ���Ҳ�������ֿռ��Ƿ���ȷ��ƥ�䡣
Ҫ������������xml��ֵ�� PostgreSQL �ṩ�˺���xpath
��xpath_exists
�����Ǽ��� XPath 1.0 ����ʽ��
xpath
(xpath, xml [, nsarray])
����xpath
�� XML ֵxml�ϼ��� XPath ����ʽxpath (a text value)��������һ�� XML ֵ�����飬�������Ӧ�ڸ� XPath ����ʽ�����Ľ�㼯�ϡ������ XPath ����ʽ����һ������ֵ������һ����㼯�ϣ����᷵��һ����һԪ�ص����顣
�ڶ�������������һ�������� XML �ĵ�������أ���������һ����һ�����Ԫ�ء�
�ú�����ѡ�ĵ�����������һ�����ֿռ�ӳ������顣�������Ӧ����һ����άtext���飬��ڶ��᳤�ȵ���2������Ӧ����һ����������飬����ÿһ�����ɸպ� 2 ��Ԫ����ɣ���ÿ��������ĵ�һ��Ԫ�������ֿռ�����ƣ����������ڶ���Ԫ�������ֿռ�� URI������Ҫ��������������ṩ�ı������� XML �ĵ�������ʹ�õ���Щ���ֿռ���ͬ�����仰˵���� XML �ĵ��к���xpath
���������У������������ص�����
���ӣ�
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)
Ҫ����Ĭ�ϣ������������ռ䣬�����������飺
SELECT xpath('//mydefns:b/text()', '<a xmlns="http://example.com"><b>test</b></a>', ARRAY[ARRAY['mydefns', 'http://example.com']]); xpath -------- {test} (1 row)
xpath_exists
(xpath, xml [, nsarray])
����xpath_exists
��xpath
������һ��������ʽ������������Ƿ������� XPath �ĵ�һ XML ֵ��������һ������ֵ��ʾ��ѯ�Ƿ����㡣��������ȼ��ڱ�׼��XMLEXISTSν�ʣ����������ṩ�˶�һ�����ֿռ�ӳ�������֧�֡�
���ӣ�
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)
����ĺ�������ѹ�ϵ��������ӳ��� XML ֵ�����ǿ��Ա������� XML �������ܣ�
table_to_xml(tbl regclass, nulls boolean, tableforest boolean, targetns text) query_to_xml(query text, nulls boolean, tableforest boolean, targetns text) cursor_to_xml(cursor refcursor, count int, nulls boolean, tableforest boolean, targetns text)
ÿһ�������ķ���ֵ����xml��
table_to_xml
ӳ���ɲ���tbl���ݵ������������ݡ�regclass���ͽ���ʹ�ó�����DZ�ʶ�����ַ�����������ѡ��ģʽ�޶���˫���š�query_to_xml
ִ���ɲ���query���ݵIJ�ѯ����ӳ��������cursor_to_xml
��cursorָ�����α���ȡ��ָ���������С������Ҫӳ��һ�����͵ı��������Ƽ����ֱ��壬��Ϊÿһ�������������ڴ��й������ֵ�ġ�
���tableforestΪ�٣������� XML �ĵ���������������
<tablename> <row> <columnname1>data</columnname1> <columnname2>data</columnname2> </row> <row> ... </row> ... </tablename>
���tableforestΪ�棬�����һ���������������� XML ����Ƭ�ϣ�
<tablename> <columnname1>data</columnname1> <columnname2>data</columnname2> </tablename> <tablename> ... </tablename> ...
���û�б������ã���ӳ��һ����ѯ��һ���α�ʱ���ڵ�һ�ָ�ʽ��ʹ�ô�table���ڵڶ��ָ�ʽ��ʹ��row��
�⼸�ָ�ʽ��ѡ�����û���������һ�ָ�ʽ��һ����ȷ�� XML �ĵ������ںܶ�Ӧ���ж�����Ҫ��������ֵҪ������Ϊһ���ĵ����ڶ��ָ�ʽ��cursor_to_xml
�����и����á�ǰ�����۵IJ��� XML ���ݵĺ������ر���xmlelement
�����Ա������ѽ���޸ijɷ����û���Ҫ��
����ֵ�ᱻ��ǰ�ĵĺ���xmlelement
����������ͬ����ӳ�䡣
����nulls������ֵ�Ƿ�ᱻ����������С����Ϊ�棬���еĿ�ֵ����ʾΪ��
<columnname xsi:nil="true"/>
����xsi�� XML ģʽʵ���� XML ���ֿռ�ǰ׺��һ�����ʵ����ֿռ������������뵽���ֵ�С����Ϊ�٣�������ֵ���н���������к��Ե���
����targetnsָ����Ҫ�Ľ���� XML ���ֿռ䡣���û����Ҫ���ض����ֿռ䣬���ᴫ��һ���մ���
����ĺ������� XML ģʽ�ĵ�����Щ�ĵ�����������Ӧ������ִ�е�ӳ�䣺
table_to_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text) query_to_xmlschema(query text, nulls boolean, tableforest boolean, targetns text) cursor_to_xmlschema(cursor refcursor, nulls boolean, tableforest boolean, targetns text)
����Ҫ������ͬ�IJ��������������ƥ��� XML ����ӳ��� XML ģʽ�ĵ���
���������� XML ����ӳ��Ͷ�Ӧ�� XML ģʽ�����Ѳ����Ľ��������һ�����һ���ĵ�����É�֣��С���Ҫ���԰������������Ľ�������Ƿdz����ã�
table_to_xml_and_xmlschema(tbl regclass, nulls boolean, tableforest boolean, targetns text) query_to_xml_and_xmlschema(query text, nulls boolean, tableforest boolean, targetns text)
���⣬����ĺ��������ڲ������Ƶ�����ģʽ��������ǰ���ݿ��ӳ�䣺
schema_to_xml(schema name, nulls boolean, tableforest boolean, targetns text) schema_to_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text) schema_to_xml_and_xmlschema(schema name, nulls boolean, tableforest boolean, targetns text) database_to_xml(nulls boolean, tableforest boolean, targetns text) database_to_xmlschema(nulls boolean, tableforest boolean, targetns text) database_to_xml_and_xmlschema(nulls boolean, tableforest boolean, targetns text)
ע����Щ�������ܲ����ܶ����ݣ����Ƕ���Ҫ���ڴ��б����������������ģʽ�����ݿ������ӳ��ʱ�����Կ��Ƿֱ�ӳ��ÿһ����������ͨ��һ���α���ӳ�䡣
һ��ģʽ����ӳ��Ľ����������������
<schemaname> table1-mapping table2-mapping ... </schemaname>
����һ����ӳ��ĸ�ʽȡ�������Ľ��͵�tableforest������
һ�����ݿ�����ӳ��Ľ����������������
<dbname> <schema1name> ... </schema1name> <schema2name> ... </schema2name> ... </dbname>
���е�ģʽӳ������������
��Ϊһ��ʹ����Щ������������������ӣ�ͼ 9-1չʾ��һ�� XSLT ��ʽ��������table_to_xml_and_xmlschema
�����ת��Ϊһ�����������ݵı�ƽתӡ�� HTML �ĵ�����һ�����Ƶķ�ʽ����Щ�����Ľ�����Ա�ת������������ XML �ĸ�ʽ��
ͼ 9-1. ת�� SQL/XML ����� HTML �� XSLT ��ʽ��
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" > <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN" indent="yes"/> <xsl:template match="/*"> <xsl:variable name="schema" select="//xsd:schema"/> <xsl:variable name="tabletypename" select="$schema/xsd:element[@name=name(current())]/@type"/> <xsl:variable name="rowtypename" select="$schema/xsd:complexType[@name=$tabletypename]/xsd:sequence/xsd:element[@name='row']/@type"/> <html> <head> <title><xsl:value-of select="name(current())"/></title> </head> <body> <table> <tr> <xsl:for-each select="$schema/xsd:complexType[@name=$rowtypename]/xsd:sequence/xsd:element/@name"> <th><xsl:value-of select="."/></th> </xsl:for-each> </tr> <xsl:for-each select="row"> <tr> <xsl:for-each select="*"> <td><xsl:value-of select="."/></td> </xsl:for-each> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
��һҳ | ��ʼҳ | ��һҳ |
�ı����������Ͳ����� | ��һ�� | JSON �����Ͳ����� |