PostgreSQL 9.3.2ʸ�� | ||||
---|---|---|---|---|
前のページ | 上に戻る | 付録 F. �ɲä������⥸�塼�� | 次のページ |
xml2�⥸�塼���XPath�䤤��碌��XSLT��ǽ�����ޤ���
PostgreSQL 8.3���顢SQL/XMLɸ��˴�Ť�XML��Ϣ�ε�ǽ�ϥ������������¸�ߤ��ޤ���
���ε�ǽ�ϡ�XML��ʸ������XPath�䤤��碌�ʤ��ܥ⥸�塼�뤬�Ԥʤ����Ȥ�Ʊ���Τ��ȤȤ���ʾ�Τ��Ȥ��ϰϤȤ��ޤ�����API�ˤϸߴ����Ϥ���ޤ���
������ɸ��API�Τ��ᡢ�ܥ⥸�塼��Ϻ���ΥС�������PostgreSQL�Ǻ�������ͽ��Ǥ��Τǡ����ץꥱ���������Ѵ����侩����Ƥ��ޤ���
�ܥ⥸�塼��ε�ǽ�˿�����API��Ŭ�ѤǤ��ʤ���Τ����뤳�Ȥ�ʬ���ä���硢�������˼���Ȥळ�Ȥ��Ǥ���褦��<[email protected]>
�ˤ��������ɽ�����Ƥ���������
表F-32���ܥ⥸�塼�������ؿ����ޤ��� �����δؿ��ϴ�ñ��XML���Ϥ�XPath�䤤��碌�����ޤ��� ���٤Ƥΰ�����text���Ǥ��� �ʷ�ˤ��뤿���������ޤ���
表 F-32. �ؿ�
�ؿ� | ��� | ���� |
---|---|---|
xml_is_well_formed(document)
| bool | ����ϥѥ����Ȥ���Ϳ����줿ʸ��ƥ����Ȥ���Ϥ���ʸ����������XML�Ǥ���п����֤��ޤ���
������:PostgreSQL 8.2�����ǤϤ��δؿ��� |
xpath_string(document, query)
| text | �����δؿ���Ϳ����줿ʸ����Ф���XPath�䤤��碌��ɾ��������̤���ꤷ�����˥��㥹�Ȥ��ޤ��� |
xpath_number(document, query)
| float4 | |
xpath_bool(document, query)
| bool | |
xpath_nodeset(document, query, toptag, itemtag)
| text | �����ʸ����Ф����䤤��碌��ɾ������XML������˷�̤���ߤޤ��� ��̤�ʣ�����ͤǤ���С����Ϥϰʲ��Τ褦�ˤʤ�ޤ��� <toptag> <itemtag>Value 1 which could be an XML fragment</itemtag> <itemtag>Value 2....</itemtag> </toptag> toptag�ޤ���itemtag����ʸ�����ä���硢�б����륿���Ͼ�ά����ޤ��� |
xpath_nodeset(document, query)
| text |
|
xpath_nodeset(document, query, itemtag)
| text |
|
xpath_list(document, query, separator)
| text | ���δؿ���ʣ�����ͤ���ꤷ�����ڤ�ʸ���Ƕ��ڤä��֤��ޤ��� �㤨�С����ڤ�ʸ����,�ʤ��Value 1,Value 2,Value 3�Ȥʤ�ޤ��� |
xpath_list(document, query)
| text | ����ϡ�,����ڤ�ʸ���Ȥ��ƻ��Ѥ��롢��δؿ��Υ�åѤǤ��� |
xpath_table(text key, text document, text relation, text xpaths, text criteria) returns setof record
xpath_table
�ϳ�ʸ����Ф���XPath�䤤��碌�����ɾ��������̤�ơ��֥�Ȥ����֤��ơ��֥�ؿ��Ǥ���
��ʸ��ơ��֥�Υץ饤�ޥꥭ���ե�����ɤ���̤������Ȥ����֤���ޤ��Τǡ���̥��åȤ��ưפ˷��ǻ��Ѥ��뤳�Ȥ��Ǥ��ޤ���
�ѥ����ˤĤ��Ƥ�表F-33���������ޤ���
表 F-33. xpath_table
�Υѥ���
�ѥ��� | ���� |
---|---|
key | "key"�ե�����ɤ�̾���Ǥ��� ����ϡ����ϥơ��֥�������Ȥ��ƻ��Ѥ����ñ�ʤ�ե�����ɤǤ��� �Ĥޤꡢ����ϳƽ��ϹԤνи������̤���쥳���ɤǤ��� �ʸ�Ҥ�ʣ���ͤ˴ؤ��������Ȥ��Ƥ����������� |
document | XMLʸ���ޤ�ե�����ɤ�̾���Ǥ��� |
relation | ʸ���ޤ�ơ��֥�ޤ��ϥӥ塼��̾���Ǥ��� |
xpaths | |�Ƕ��ڤ�줿��1�İʾ��XPath���Ǥ��� |
criteria | WHERE������ƤǤ��� ����Ͼ�ά���뤳�Ȥ��Ǥ��ޤ��� ��졼�����������Ԥ��������������true�ޤ���1=1����Ѥ��Ƥ��������� |
��XPathʸ���������ˤ����Υѥ��������̤�SQL SELECT ʸ��ñ����ִ�����ޤ��� ���Τ��ᡢ¿���ν�����������ޤ���
SELECT <key>, <document> FROM <relation> WHERE <criteria>
ʸ�Ͼ���̤�Ǥ��Τǡ������Υѥ����ˤϤ��줾��ξ���ͭ���ʤ�ΤǤ�������Ǥ��褤�櫓�Ǥ��� ����SELECT�η�̤����Τ�2�Ĥ�����֤��ʤ���Фʤ�ޤ���ʥ����ޤ���ʸ����Ф���ʣ���Υե�����ɤ�����褦�Ȥ��ʤ��¤�Ǥ��ˡ� ���δ�ά���줿��ˡ�Ǥϡ�SQL�������������ɤ�����˥桼������Ϳ����줿�ͤ٤Ƹ��ڤ��ʤ���Фʤ�ʤ����Ȥ����դ��Ƥ���������
���δؿ��ϡ����������ꤹ�뤿���AS����դ���FROM����ǻ��Ѥ���ʤ���Фʤ�ޤ��� �ʲ�������ޤ���
SELECT * FROM xpath_table('article_id', 'article_xml', 'articles', '/article/author|/article/pages|/article/title', 'date_entered > ''2003-01-01'' ') AS t(article_id integer, author text, page_count integer, title text);
����AS��ϡ����ϥơ��֥����̾�Ȥ��η���������ޤ��� ��Ƭ��"key"�ե�����ɡ��Ĥ꤬XPath�䤤��碌���б����ޤ��� ���������¿����XPath�䤤��碌��¸�ߤ����硢;�ä��䤤��碌��̵�뤵��ޤ��� XPath�䤤��碌���¿���η����¸�ߤ������;�ä����NULL�ˤʤ�ޤ���
�������page_count����������Ȥ����������Ƥ��뤳�Ȥ����դ��Ƥ��������� �ؿ�������Ū��ʸ����ɽ���ǰ����ޤ��� ���Τ��ᡢ������������ǰ��������ȸ��äƤ������XPath��̤�ʸ����ɽ������Ф��������ʤޤ���AS����ᤷ��Ǥ�դη��ˤ��Ѵ����뤿���PostgreSQL�����ϴؿ�����Ѥ��ޤ��� �㤨�з�̤����ʤɡ��Ѵ��Ǥ��ʤ����ϥ��顼�ˤʤ�ޤ��� �Ǥ��Τǡ��ǡ����˲��餫�����꤬����ȹͤ������硢�Ȥ���text�˸��ꤹ�������褤���⤷��ޤ���
SELECTʸ�θƤӽФ��Ǥϡ�ñ�ʤ�SELECT *�Ǥʤ���Фʤ�ʤ�ɬ�����Ϥ���ޤ��� �������̾���ǻ��Ȥ��뤳�Ȥ�¾�Υơ��֥�ȷ�礹�뤳�Ȥ��ǽ�Ǥ��� ���δؿ��ϴ�˾�β��餫�������㤨�н���硢�����Ȥʤɡˤ�Ԥ����Ȥ��Ǥ��벾�ۥơ��֥���������ޤ��� ���Τ���ʲ�����ʣ������Ȥ��Ƽ������Ȥ��Ǥ��ޤ���
SELECT t.title, p.fullname, p.email FROM xpath_table('article_id', 'article_xml', 'articles', '/article/title|/article/author/@id', 'xpath_string(article_xml,''/article/@date'') > ''2003-03-20'' ') AS t(article_id integer, title text, author_id integer), tblPeopleInfo AS p WHERE t.author_id = p.person_id;
�����ʤ��顢���ؤˤ��뤿��ˤ���٤ƥӥ塼�Ȥ�����߱������Ȥ��Ǥ��ޤ���
xpath_table
�ؿ��ϳ�XPath�䤤��碌�η�̤�ʣ�����ͤ���IJ�ǽ�������뤳�Ȥ�����Ȥ��Ƥ��ޤ���
���Τ��ᡢ���δؿ����֤��Կ�������ʸ��ο���Ʊ���ˤʤ�ʤ���ǽ��������ޤ���
�֤����ǽ�ιԤˤϳ��䤤��碌�κǽ�η�̤���2���ܤιԤˤϳ��䤤��碌��2���ܤη�̤��ޤޤ�ޤ���
�䤤��碌��1�Ĥ�¾���⾯�ʤ��ͤ���ľ��������NULL�ͤ��֤���ޤ���
���ꤷ��XPath�䤤��碌��ñ��η�̡ʤ����餯��դ�ʸ���̻ҡˤΤߤ��֤����Ȥ��桼����ʬ���äƤ����礬����ޤ��� �⤷�����ʣ���η�̤��֤�XPath�Ȱ��˻��Ѥ����ȡ�ñ���ͤη�̤Ϸ�̤κǽ�ιԤˤΤ߸���ޤ��� ���β����ˡ�Ϥ��ñ���XPath�䤤��碌���Ф�������ʬ�Ȥ��ƥ����ե�����ɤ���Ѥ��뤳�ȤǤ��� �ʲ�������ޤ���
CREATE TABLE test ( id int PRIMARY KEY, xml text ); INSERT INTO test VALUES (1, '<doc num="C1"> <line num="L1"><a>1</a><b>2</b><c>3</c></line> <line num="L2"><a>11</a><b>22</b><c>33</c></line> </doc>'); INSERT INTO test VALUES (2, '<doc num="C2"> <line num="L1"><a>111</a><b>222</b><c>333</c></line> <line num="L2"><a>111</a><b>222</b><c>333</c></line> </doc>'); SELECT * FROM xpath_table('id','xml','test', '/doc/@num|/doc/line/@num|/doc/line/a|/doc/line/b|/doc/line/c', 'true') AS t(id int, doc_num varchar(10), line_num varchar(10), val1 int, val2 int, val3 int) WHERE id = 1 ORDER BY doc_num, line_num id | doc_num | line_num | val1 | val2 | val3 ----+---------+----------+------+------+------ 1 | C1 | L1 | 1 | 2 | 3 1 | | L2 | 11 | 22 | 33
�ƹԤ�doc_num���դ��뤿��ˤϡ�2�Ĥ�xpath_table
��ƤӽФ������η�̤��礹�뤳�ȤǤ���
SELECT t.*,i.doc_num FROM xpath_table('id', 'xml', 'test', '/doc/line/@num|/doc/line/a|/doc/line/b|/doc/line/c', 'true') AS t(id int, line_num varchar(10), val1 int, val2 int, val3 int), xpath_table('id', 'xml', 'test', '/doc/@num', 'true') AS i(id int, doc_num varchar(10)) WHERE i.id=t.id AND i.id=1 ORDER BY doc_num, line_num; id | line_num | val1 | val2 | val3 | doc_num ----+----------+------+------+------+--------- 1 | L1 | 1 | 2 | 3 | C1 1 | L2 | 11 | 22 | 33 | C1 (2 rows)
libxslt�����ȡ��뤵��Ƥ����硢�ʲ��δؿ�����Ѥ��뤳�Ȥ��Ǥ��ޤ���
xslt_process(text document, text stylesheet, text paramlist) returns text
���δؿ���XSL�������륷���Ȥ�ʸ���Ŭ�Ѥ����Ѵ�������̤��֤��ޤ��� paramlist�ϡ�'a=1,b=2'�Ȥ������ǻ��ꤵ�줿���Ѵ��ǻ��Ѥ����ѥ����������Υꥹ�ȤǤ��� �ѥ������ϤϤ��ޤ�Ϲͤ��줿��ΤǤϤʤ����Ȥ����դ��Ƥ����������ѥ����ͤ˥���ޤ�����뤳�Ȥ��Ǥ��ޤ���
�ޤ����Ѵ��ѤΥѥ������Ϥ��ʤ���2�ĤΥѥ�������С�������xslt_process
��¸�ߤ��ޤ���
John Gray <[email protected]>
�ܥ⥸�塼��γ�ȯ��Torchbox Ltd. (www.torchbox.com)�����Ǥ��� PostgreSQL��Ʊ��BSD�饤���Ǥ���