何故 XPath サポート ?
XPath サポートは SQL に問い合わせた後のリザルトセットに対してアクセスするために
導入されました。これはデータベースへリザルトセットを再び問い合わせすることなく
より一層の処理を可能にします。
XPath は W3 規格です、そしてそれに対する詳細な情報については、 XSL/XML の本
もしくは、 http://www.w3.org/ を訪ねてください。
XPath の式を渡す
XML_sql2xml はリザルトセットの問い合わせについて2つの関数を提供します。
getXpathValue() と
getXpathChildValues()。
両方とも XPath クエリによって、配列もしくは文字列の結果を返します。
例 68-1getXpathValue <?php
include_once("XML/sql2xml.php");
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$sql2xmlclass->add("select * from bands");
$xmlstring = $sql2xmlclass->getXpathValue("/root/result/row[id = '2']/name");
?> |
$xmlstring contains:
$xmlstring = 'Only Stupids' |
|
例 68-2getXpathChildValues <?php
include_once("XML/sql2xml.php");
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$sql2xmlclass->add("select * from bands");
$xmlstring = $sql2xmlclass->getXpathChildValues("/root/result/row[id = '2']");
?> |
$xmlstring contains:
Array
(
[] =>
[id] => 2
[name] => Only Stupids
[birth_year] => 1997
[birth_place] => New York
[genre] => Hip Hop
) |
|
XPath クエリと SQL の混合
SQL クエリに XPath クエリを挿入することができます。例では先に SQL クエリが終了し、
再度第2の SQL クエリが実行されます、しかし bandsID の
パラメータは XPath 式の波括弧から取得される。この表現では 最初 の
SQL クエリのリザルトセットで処理されます。
例 68-3混合したクエリ <?php
include_once("XML/sql2xml.php");
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$sql2xmlclass->add("select * from bands");
$sql2xmlclass->add("select * from albums where bandsID = {/root/result/row[name = 'The Blabbers']/id}");
$xmlstring = $sql2xmlclass->getxml();
?> |
$xmlstring = '
<?xml version="1.0"?>
<root>
<result>
<row>
<id>1</id>
<name>The Blabbers</name>
<birth_year>1998</birth_year>
<birth_place>London</birth_place>
<genre>Rock'n'Roll</genre>
</row>
<row>
<id>2</id>
<name>Only Stupids</name>
<birth_year>1997</birth_year>
<birth_place>New York</birth_place>
<genre>Hip Hop</genre>
</row>
</result>
<result>
<row>
<id>1</id>
<bandsID>1</bandsID>
<title>BlaBla</title>
<year>1998</year>
<comment>Their first one</comment>
</row>
<row>
<id>2</id>
<bandsID>1</bandsID>
<title>More Talks</title>
<year>2000</year>
<comment>The second one</comment>
</row>
</result>
</root> |
|