新しいシステムや規格が登場した場合、
XMLデータベースも一般的に利用されるようになり、
XPath入門 ─ XPathとは
XPathとは、
- XPath 1.
0 : http:// www. w3. org/ TR/ xpath/ - XPath 2.
0 : http:// www. w3. org/ TR/ xpath20/
XPath 1. XPathはXSLT、 出典:XQeury+XMLデータベース入門 XQueryは文書やデータベース、 PostgreSQL 8. PostgreSQLはXML文書をテキストのまま保存せず、 このほかにも::xmlを利用してテキストをXML型にキャストすることも可能です。詳しくは
を参照してください。 PostgreSQL 8. XMLサポートを有効にしたPostgreSQLサーバにpsqlを利用して接続すると、 PostgreSQLをご存知の方なら 本記事の目的はXPathインジェクション対策が目的ですから、 の がXPathの表現です。言葉に訳すと “/” となります。先の例の場合、 “/” 余計な XPathを利用すると、 次回はPHP本体に付属しているDOMモジュールのXPath関数を利用し、XPathとほかのXML規格
PostgreSQL8.
PostgreSQL 8.
XMLPARSE (DOCUMENT '<?xml version="1.0"?><book><title>Manual</title><chapter>...</chapter></book>')
XMLPARSE (CONTENT 'abc<foo>bar</foo><bar>foo</bar>')
XPath関数
yohgaki@[local] ~=# create table xml_test (id int, data xml);
yohgaki@[local] ~=# insert into xml_test(id, data) values (1, xmlparse(content 'abc<foo>bar</foo><bar>foo</bar>'));
yohgaki@[local] ~=# insert into xml_test(id, data) values (2, xmlparse(content 'abc<foo>bar2</foo><bar>foo2</bar>'));
yohgaki@[local] ~=# select xpath('/foo//text()', data) from xml_test ;
xpath
--------
{bar}
{bar2}
(2 rows)
Time: 0.391 ms
XPathの基本
select xpath('/foo/text()', data) from xml_test ;
'/foo//text()'
yohgaki@[local] ~=# select xpath('/foo//text()', data) from xml_test ;
xpath
--------
{bar}
{bar2}
(2 rows)
yohgaki@[local] ~=# select xpath('/*', data) from xml_test ;
xpath
-----------------------------------
{<foo>bar</foo>,<bar>foo</bar>}
{<foo>bar2</foo>,<bar>foo2</bar>}
(2 rows)
Time: 0.373 ms
yohgaki@[local] ~=# select * from xml_test ;
id | data
----+-----------------------------------
1 | abc<foo>bar</foo><bar>foo</bar>
2 | abc<foo>bar2</foo><bar>foo2</bar>
(2 rows)
Time: 0.246 ms
まとめ