Introduction

Introduction – Utilisation de XPath

Que supporte XPath ?

Le support de XPath a été introduit pour fournir un accès au jeu de résultats après avoir exécuté la requête SQL. Cela permet de traiter le jeu de résultats sans interroger de nouveau la base de données une fois de plus.

XPath est un standard W3 et pour de plus amples informations concernant cela, lisez vos livres préférés XSL/XML ou http://www.w3.org/.

Passer une expression XPath

XML_sql2xml fournit deux fonctions pour traiter le jeu de résultats : getXpathValue() et getXpathChildValues(). Les deux attendent une requête XPath et retournent le résultat en tant que chaîne de caractères ou de tableau.

getXpathValue

<?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 contient :


      $xmlstring = 'Only Stupids'

getXpathChildValues

<?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 contient :


Array
(
    [] => 
    [id] => 2
    [name] => Only Stupids
    [birth_year] => 1997
    [birth_place] => New York
    [genre] => Hip Hop
)

Mélanger les requêtes SQL et XPath

Vous pouvez insérer une requête XPath dans une requête SQL. Dans cet exemple, une requête SQL est tout d'abord exécutée, puis, une autre requête SQL est exécutée - mais le paramètre pour bandsID est pris depuis une expression XPath dans les parenthèses. Cette expression est appliquée dans le jeu de résutat de la première requête SQL.

Requête mélangée

<?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>