����������������ؿ�����ӵ����ؿ����ϡ�xml�����ͤ��Ф��Ƶ�ǽ���ޤ���xml���ˤĤ��Ƥξ����項8.13���������Ƥ���������xml���Τ��Ȥ���Ѵ�����xmlparse
�����xmlserialize
�����ؿ����Ϥ����ǤϷ����֤��ޤ�������¿���δؿ�����Ѥ���ˤϡ����ȥ졼�����κ�configure --with-libxml�դ��ǥӥ�ɤ���Ƥ��뤳�Ȥ�ɬ�פǤ���
SQL�ǡ�������XML���Ƥ��������뤿��˴ؿ��ȵ����ؿ����ΰ켰������Ƥ��ޤ������Τ褦�ʤ�ΤȤ��ơ����饤����ȥ��ץꥱ���������䤤��碌��̤�����Τ����XMLʸ��˥ե����ޥåȤ���Τˤ����ؿ��ȵ����ؿ������ä�Ŭ���Ƥ��ޤ���
xmlcomment
(text)
�ؿ�xmlcomment
������Υƥ����Ȥ����ƤȤ���XML�����Ȥ�ޤ��XML�ͤ�������ޤ����ƥ����ȤˤϷ�̤Ȥ��ƹ��ۤ����XML�����Ȥ�ͭ���ˤʤ�褦--�⤷����-�ǽ��뤹�����Ƥ�ޤ�ǤϤʤ�ޤ�������NULL�ʤ�з�̤�NULL�ˤʤ�ޤ���
Example:
SELECT xmlcomment('hello'); xmlcomment -------------- <!--hello-->
xmlconcat
(xml[, ...])
�ؿ�xmlconcat
�ϡ�XML���������Ҥ�ޤ�ñ����ͤ�������뤿��θ��̤�XML�ͤΥꥹ�Ȥ��礷�ޤ����̥��ͤϺ�����졢NULL�ʳ��ΰ�����¸�ߤ��ʤ��Ȥ��Τ߷�̤ϥ̥�ˤʤ�ޤ���
Example:
SELECT xmlconcat('<abc/>', '<bar>foo</bar>'); xmlconcat ---------------------- <abc/><bar>foo</bar>
XML���������Ƥ�����ϼ��Τ褦�ˤޤȤ�뤳�Ȥ��Ǥ��ޤ������Ƥΰ������ͤ�Ʊ���XMLversion�������äƤ���С�����version����̤˻��Ѥ���ޤ�������ʤ����version�ϻ��Ѥ���ޤ��⤷���Ƥΰ������ͤ�standalone����ͤǤ���"yes"�Ǥ���С������ͤ���̤˻��Ѥ���ޤ����⤷���Ƥΰ������ͤ�standalone����ͤǤ��ꡢ������ǣ��ĤǤ�"no"�������硢���줬��̤˻��Ѥ���ޤ�������ʤ���С���̤�standalone���������ޤ��⤷��̤�standalone�����ɬ�פȤ��Ƥ��Ƥ⡢standalone������ʤ����ˤϡ�XML��version�����ޤ�XML������᤹�뤿�ᡢversion 1.0��version��������Ѥ���ޤ���encoding�����̵�뤵�졢���Ƥξ��Ǻ������ޤ���
�㡧
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�ϣ����ʿ��ˤ�뤽��ʸ����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�ˤϡ������ѥ���xmlbinary������ˤ������äơ�base64�⤷����16����沽������ɽ������ޤ����ġ��Υǡ��������Ф�������ο����ϡ�XML���������ͤǤ�SQL�����PostgreSQL�ǡ�������Ĵ�����뤿��Ÿ�������ȴ��Ԥ���ޤ������λ����Ǥ��ܺ٤ʵ��Ҥ��и����ޤ���
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> ...
�裲����˸�����褦�ˡ����Ƥ��ͤ��Ȥξ������̾�Ͼ�ά��ǽ�Ǥ������ξ�硢��̾���ǥե���Ȥǻ��Ѥ���ޤ��������Ǥʤ���硢̾�������ꤵ��ʤ���Фʤ�ޤ���
ͭ����XML̾�ǤϤʤ�����̾�Ͼ��xmlelement
�����������̤ꥨ�������פ���ޤ���Ʊ�ͤˤ��ơ���������xml���Ǥʤ����������ƥǡ�����ͭ����XML���Ƥˤʤ�褦�˥��������פ���ޤ���
XML�ե��쥹�Ȥϣ��İʾ�����Ǥ���ʤ��硢ͭ����XMLʸ��ǤϤ���ޤ��������äơ�xmlelement
��xmlforest
�����åפ��뤳�Ȥ�ͭ�Ѥʤ��Ȥ�����ޤ���
xmlpi
(name target [, content])
xmlpi
����XML����̿���������ޤ������Ƥ�¸�ߤ���С��������Ƥ�?>ʸ����������ޤ�ǤϤʤ�ޤ���
Example:
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�ͤΥ롼�ȥΡ��ɤ�°�����ѹ����ޤ���version�����ꤵ��Ƥ���ȡ�version����Ǥ��ͤ��ѹ�����standalone�ͤ����ꤵ��Ƥ���ȡ�standalone����Ǥ��ͤ��ѹ����ޤ���
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
�ؿ��Ͻ���ؿ��Ǥ���xmlconcat
���Ԥ��褦�ˡ������ͤ���ؿ��ƤӽФ���Ϣ�뤷�ޤ�������ؿ��ˤĤ��Ƥΰ��̾����項9.18�Ȥ��Ƥ���������
�㡧
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/>
���ߤμ����ˤ�����Ϣ��ν���ϸ�§�Ȥ����������Ƥ��ʤ����Ȥ����դ��Ƥ����������������������ͤ��̤η�����¸���뤳�Ȥ��ǽ�Ǥ����㤨�С��嵭����ˤ����Ƽ��Τ褦�ˤ��ƽ���˱ƶ���Ϳ���뤳�Ȥ�Ǥ���Ǥ��礦��
SELECT xmlagg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS tab; xmlagg ---------------------- <bar/><foo>abc</foo>
���������μ�ˡ�Ϥ�������̤䡢���٤Ƥ�PostgreSQL�ΥС��������Ф����ݾ㤵��Ƥ���櫓�ǤϤ���ޤ������PostgreSQL�С������ϡ�xmlagg(expr ORDER BY expr, expr, ... �Τ褦�ʡ��������ˡ�Ǥ��ν�������椹���ɲõ�ǽ�����Ƥ���뤫�⤷��ޤ���
xml IS DOCUMENT
��IS DOCUMENT�ϰ���XML�ͤ�Ŭ�ڤ�XMLʸ��Ǥ���п����֤��������Ǥʤ���СʤĤޤꡢ���Ƥ����ҡ˵����֤������⤷���ϰ�����NULL�Ǥ����NULL���֤��ޤ���ʸ������Ƥ����Ҥκ��ۤˤĤ��Ƥ�項8.13�Ȥ��Ƥ���������
�ǡ�����xml���ͤ�������뤿�ᡢPostgreSQL�ϴؿ�xpath
�����Ƥ��ơ������XPath 1.0����ɾ�����ޤ���
xpath
(xpath, xml[, nsarray])
�ؿ�xpath
�ϡ�XML��xml���Ф���XPath��xpath��ɾ�����ޤ��������ơ�XPath���Ǻ������줿�Ρ��ɥ��åȤ��б�����XML�ͤ�������֤��ޤ���
�ؿ��Σ����ܤΰ�����̾�����֥ޥåԥ�����Ǥ�����������ϡ��裲��������������Ĺ�����ģ���������Ǥ��ʤĤޤꡢ��������������ǡ����줾������Τˣ��Ĥ����Ǥ���ʤ�ޤ��ˡ����줾�������Υ���ȥ�κǽ�����Ǥ�̾�����֤�̾���ǡ������ܤ�̾�����֤�URI�Ǥ���
Example:
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)
�ʲ��δؿ��ϥ�졼����ʥ�ơ��֥�����Ƥ�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���ϥ��ץ����Υ�������������Ű������ޤࡢ�̾��ɽ��ˡ����Ѥ��ơ��֥�����ꤹ��ʸ���������դ��ޤ���query_to_xml
�ϡ��ѥ���query�Ȥ��ƥƥ����Ȥ��Ϥ��줿�䤤��碌��¹Ԥ�����̥��åȤ�ޥåפ��ޤ���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
�ؿ���Ǥ��ͭ�Ѥˤʤ뷹��������ޤ����嵭����������XML���Ƥ��������ؿ����ä�xmlelement
�Ϸ�̤ߤˤ����뤿��˻��Ѥ��뤳�Ȥ��Ǥ��ޤ���
�ǡ������ͤϾ嵭�ؿ�xmlelement
�����������Τ�Ʊ����ˡ�ǥޥåפ���ޤ���
�ѥ���nulls�Ͻ��Ϥ�NULL�ͤ��ޤޤ��ɬ�פ����뤫����ꤷ�ޤ����⤷���Ǥ���������NULL�ͤϰʲ��Τ褦��ɽ������ޤ���
<columnname xsi:nil="true"/>
������xsi��XML�������ޥ������Ф���XML̾��������Ƭ���Ǥ���Ŭ�ڤ�̾���������������ͤ��ɲä���ޤ����⤷���ξ�硢NULL�ͤ�ޤ����ñ�˽��Ϥ���������ޤ���
�ѥ���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)
�ޥå�����XML�ǡ����ޥåԥ�XML��������ʸ���������뤿�ᡢƱ���ѥ������Ϥ���뤳�Ȥ��Բķ�Ǥ���
�ʲ��δؿ��ϡ�XML�ǡ����ޥåԥȤ�����б�����XML�������ޤ����ߤ��˥���줿�����Ĥ�ʸ��ʤޤ��ϥե��쥹�ȡˤ�������ޤ��������ϼ��ʴ��뤷�������ʵ���Ū�ʷ�̤��˾������������Ǥ���
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�ϡ��ơ��֥�ǡ�����ɽ�����ؤ�������ޤ�table_to_xml_and_xmlschema
����HTMLʸ��ؤν��Ϥ��Ѵ����ʤ�XSLT�������륷���Ȥ��ޤ���Ʊ���褦�ˤ��ơ������δؿ��η�̥ǡ�����¾��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>