Welcome to Sign in | Join | Help

XQUERY

  •  10-19-2006, 10:56 AM

    XQUERY

    XQUERY

    XPATH este un limbaj de interogare a documentelor XML, o interogare returnand un set de date continand noduri sau valori scalare. Datorita limitarilor XPATH in cazul procesarii unor cantitati mari de date sau in cazul surselor de date multiple a fost dezvoltat limbajul XQUERY care extinde XPATH 2.0 si preia si functionalitati din XSLT (XSL Transformations – limbaj folosit pentru transformari ale documentelor XML). XQUERY permite interogari care includ documente multiple si este integrat in database engine.

    O interogare XQUERY consta in doua sectiuni principale:

    §          sectiunea prolog – optionala, folosita pentru declaratii (declararea spatiilor de nume, declararea schemelor)

    §          sectiunea  body (corpul interogarii) – interogarea propriu-zisa in care expresii XQUERY sunt folosite pentru a specifica datele ce vor fi returnate

    O expresie XQUERY utilizeaza o cale XQUERY (bazata pe limbajul XPATH) pentru localizarea unui nod intr-un document xml. O cale XQUERY poate fi absoluta (locatia unui nod este decrisa fata de elementul root) sau relativa (fata de un nod identificat).

    Exemple:

    §          /magazin/carte - toate elementele carte continute de elementul magazin

    §          /magazin/carte[1] – primul element carte continut de elementul magazin

    Exemplele se bazeaza pe un document xml salvat cu numele Books.xml in directorul radacina a drive-ului C: (pentru a fi mai usor de referit).

      

    Books.xml

    <?xml version="1.0" ?>

    <magazin>

    <carte categorie="SQL">

      <titlu>Functionalitati Noi In SQL Server 2005</titlu>

      <autori>

             <autor>Narcis Ditiu</autor>

             <autor>Cristian Lefter</autor>

             <autor>Adrian Stoian</autor>

      </autori>  

      <an>2005</an> 

    </carte>

    <carte categorie="Programare">

      <titlu>Beginning ASP.NET 2.0 E-Commerce in C# 2005</titlu>

      <autori>

           <autor>Cristian Darie</autor>

      </autori>

      <an>2005</an>

    </carte>

    </magazin>

    Specificatiile limbajului XQUERY includ instructiunile for, let, order by, where si return (cunoscute sub numele de Instructiuni FLOWR – pronuntat flower). Instructiunile FLOWR sunt similare cu SELECT-FROM-WHERE in T-SQL. Pentru exemplificare urmatorul exemplu incarca in variabila doc documentul Books.xml si returneaza toate titlurile cartilor publicate in anul 2005 ordonate dupa titlul acestora.

    Exemplu:

    let $doc := doc('file:///c:/Books.xml')

    for $a in $doc//magazin/carte

    where $a/an = '2005'

    order by $a/titlu

    return $a/titlu

    Rezultat:

    <titlu>Beginning ASP.NET 2.0 E-Commerce in C# 2005</titlu>

    <titlu>Functionalitati Noi In SQL Server 2005</titlu>

    SQL Server 2005 suporta un subset al limbajului XQUERY pentru a permite interogari ale datelor de tip xml. Tipul de date xml expune urmatoarele metode:

    §          query() – pentru a interoga o instanta a tipului de date xml

    §          value() – pentru a returna o valoare scalara avand un tip de date SQL  (int, varchar etc)

    §          exists() – determina existenta rezultatelor pentru o expresie XQUERY

    §          modify() – folosita pentru modificari

    §          nodes() – folosita pentru a genera un set de randuri dintr-un document xml

    Exemple:

    -- declarare si setare variabila tip xml

    DECLARE @myDoc XML

    SELECT  @myDoc = BulkColumn

    FROM OPENROWSET( Bulk 'C:\Books.xml', SINGLE_BLOB ) AS x

    -- interogare folosind metoda query

    SELECT @myDoc.query('for $a in /magazin/carte

    where $a/an = "2005"

    order by $a/@categorie

    return $a/titlu')

    -- returneaza valoarea atributului categorie

    -- pentru prima carte

    -- respectiv valoarea "SQL"

    DECLARE @Categorie VARCHAR(64)

    SET @Categorie =  @myDoc.value('(/magazin/carte/@categorie)[1]', 'varchar(64)' )

    SELECT @Categorie


    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
    Filed under: ,
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems