Universitatea din Laghouat Bază de date ș i Web
Master de informatică anul întâi Année :2014/2015
TD3 : XPath
Exerciț iul 1: să fie documentele XML:
[Link]
<?xml version="1.0" encoding="UTF-8"?>
<A>
<B>
<E>4</E>
<E>3</E>
</B>
<B>
<E>1</E>
</B>
<C>
<F>a</F>
</C>
<E>2</E>
</A>
[Link]:
<?xml version="1.0" encoding="ISO-8859-1"?>
<A>
<B>
<E>4</E>
<E>3</E>
</B>
<B></B>
<C>
<F>a</F>
<F>b</F>
</C>
</A>
Questions:
1. Oferi ț i rezultatul expresiilor XPath următoare
(a)[Link] /copil::A/copil::B
(b)[Link] /child::A/child::*[1]
(c)[Link] /descendent::C/child::*
(d)[Link] /descendant::B[child::E]
2. Oferi ț i expresiile XPath pentru a găsi în documentul X1:
(a) toate elementele de tip E.
(b) toț i copiii elementelor de tip B.
(c) toate nodurile de tiptext (frunze).
-1-
Exerciț iul 2: Fie documentul XML următor:
<livre titre="Mon livre">
<auteurs>
<auteur nom="nom1" prenom="prenom1"/>
<auteur nom="nom2" prenom="prenom2"/>
</auteurs>
<sections>
<section titre="Section1">
<chapitre titre="Chapitre1">
<paragraf>Primul paragraf</paragraf>
Al doilea paragraf
</capitol>
</section>
<section titre="Section2">
<chapitre titre="Chapitre1">
<paragraf>Primul paragraf</paragraf>
Al doilea paragraf
</capitol>
</section>
</secț iuni>
</livre>
Întrebări: Scrieț i expresiile XPath următoare în format neabrevierat:
1. găsiț i lista capitolelor din prima secț iune;
2. găsiț i lista atributelor primului autor;
3. găseș te valoarea (funcț ia string) a atributului nume al celui de-al doilea autor;
4. găsiț i lista capitolelor care conț in două paragrafe;
5. găsiț i lista capitolelor care conț in un paragraf cu cuvântul Primul;
6. găsi lista secț iunilor care au un capitol;
7. găseș te lista elementelor care au un singur atribut;
8. găsi lista elementelor care au un strămoș secț iuni, sub două forme;
9. găsi lista atributelor titlu ;
10. găsiț i lista elementelor care au doi fii ș i fără atribute;
11. găsiț i lista secț iunilor fără paragraf;
12. găseș te lista elementelor ale căror text conț ine cuvântul paragraf.
Écrivez les expressions XPath suivantes au format abrégé :
1.găseș te lista de noduri autor;
2. găsi lista tuturor nodurilor secț iune;
3. găsiț i lista capitolelor din prima secț iune;
4. găsiț i lista atributelor primului autor;
5. găsiț i valoarea atributului nume al celui de-al doilea autor;
6. găsiț i lista secț iunilor cu două capitole;
7. găsiț i lista paragrafelor a căror părinte are titlul Capitolul 1.
-2-
Exerciț iul 3: Pe documentul de mai jos, cu ajutorul limbajului XPath,
răspundeț i la următoarele întrebări.
<?xml version="1.0" encoding="UTF-8"?>
<liste_auteurs>
<autor num_authot="1">
<nom_auteur>Japrisot</nom_auteur>
<prenom_auteur>Sébastien</prenom_auteur>
<age>48</age>
<nationalite>francaise</nationalite>
</auteur>
<auteur num_auteur="3">
<nom_auteur>Dostoïevski</nom_auteur>
<nationalite>russe</nationalite>
</auteur>
<auteur num_auteur="4">
<nom_auteur>Sfeir</nom_auteur>
<prenom_auteur>Antoine</prenom_auteur>
<age>65</age>
<nationalite>francaise</nationalite>
</auteur>
<auteur num_auteur="5">
<nom_auteur>Malraux</nom_auteur>
<prenom_auteur>André</prenom_auteur>
<nationalite>francaise</nationalite>
</autor>
<auteur num_auteur="9">
<nom_auteur>Green</nom_auteur>
<prenom_auteur>Julien</prenom_auteur>
<nationalite>francaise</nationalite>
</auteur>
</liste_auteurs>
1. Afi ș aț i toate elementele „ prenume_autor”.
2. Afi ș ez toate elementele „ autor” ale căror atribut „ num_auteur” este
strict mai mare decât valoarea 4.
3. Afi ș ez media vârstei.
4. Număr autori.
5. Cine este autorul pe locul 3 în document?
6. Afi ș ez con ț inutul elementelor „ naț ionalitate”.
7. Care este suma totală a vârstei autorilor?
Reamintire: media, numărarea, suma ș i conț inutul textual al unui
elementele se obț in cu ajutorul funcț iilor avg(...), count(...), sum(...) ș i
text().
-3-
Exerciț iul 4: Fie documentul XML următor:
<?xml version="1.0" encoding="UTF-8"?>
<bibliografie>
<livre>
<titre>A la recherche du temps perdu</titre>
<autori>
<auteur nom="Proust" prenom="Marcel"/>
<auteur nom="Proust" prenom="Marcelle"/>
</auteurs>
<edition>
Tara de plat
<lieu type="edition">Belgique</lieu>
Louvain
<isbn>1965894456</isbn>
<dateDepot>1905</dateDepot>
</ediț ie>
<avis>Tres bon livre surtout pour les phénomènes Itératifs </avis>
</livre>
<livre>
<titre>Un balcon en forêt</titre>
<auteurs>
<auteur nom="Gracq" prenom="Julien"/>
</autori>
<edition>
<nom>José Corti</nom>
<lieu type="edition">Paris</lieu>
<lieu type="impression">Mayenne</lieu>
<isbn>978-2-7143-0333-2</isbn>
<dateDepot>2008</dateDepot>
</ediț ie>
</livre>
</bibliografie>
Întrebări: Scrieț i următoarele expresii XPath:
1. găseș te lista elementelor care au un strămoș carte;
2. găsiț i lista numelui autorilor;
3. găsiț i valoarea (funcț ia string) a atributului nume al celui de-al doilea autor;
4. găsiț i lista cărț ilor care conț in doi autori ;
5. afişează textul etichetei avis;
6. găsiț i lista locurilor având ca valoare de tip "ediț ie".
-4-
Exerciț iul 5: Iată un document despre filme.
<?xml version="1.0" encoding="UTF-8"?>
<films>
<film>
<title>Match Point</title>
<year>2005</year>
<country>USA</country>
<genre>Crime</genre>
<director id=’14’ >
<last_name>Allen</last_name>
<first_name>Woody</first_name>
<birth_date>1935</birth_date>
</director>
<actor id=’15’ >
<first_name>Jonathan</first_name>
<last_name>Rhys Meyers</last_name>
<birth_date>1977</birth_date>
<role>Chris Wilton</role>
</actor>
<actor id=’16’ >
<first_name>Scarlett</first_name>
<last_name>Johansson</last_name>
<birth_date>1984</birth_date><role>Nola Rice</role>
</actor>
</film>
…
</films>
Scrieț i următoarele cereri XPath:
1. Titlurile filmelor în care joacă Scarlett Johansson.
2. Rolurile jucate de Michel Blanc
3. Primul actor în distribuț ia fiecărui film.
4. Regizorii filmelor în care joacă atât Michel Blanc, cât ș i Thierry
Lhermite.
5. Les titres des films où le directeur joue aussi un rôle comme acteur.
-5-
Exerciț iul 6: iată un document XML cu rezultate din turul doi
alegerile prezidenț iale din patru secț ii de votare.
<?xml version="1.0"?>
<Votes>
<Ville nom="Cachan" dept="94">
<Bureau num="1">
<Candidat nom="Toto" voix="3398"/><Candidat nom="Dupont" voix="6589"/>
</Birou>
<Bureau num="2">
<Candidat nom="Toto" voix="5645"/><Candidat nom="Dupont" voix="4090"/>
</Bureau>
</Oraș >
<Ville nom="L’Hay" dept="94">
<Bureau num="1">
<Candidat nom="Toto" voix="2067"/><Candidat nom="Dupont" voix="4089"/>
</Birou>
</Oraș >
<Ville nom="Bagneux" dept="92">
<Bureau num="1">
<Candidat nom="Toto" voix="4723"/><Candidat nom="Dupont" voix="5167"/>
</Birou>
</Ville>
</Voturi>
Întrebări: Traduceț i următoarele interogări SQL în interogări
XPath :
1. selectaț i distinct biroul din Voturi
2. selectaț i distinct candidat din Voturi
3. select voix din Voteswhere ville='Cachan' ș i
candidat=’Dupont’
4. select oraș din Voturi unde candidat="Toto" ș i voce >
5000
5. select [Link] din Voturi A, Voturi B
unde [Link] > [Link]
ș i [Link]=[Link]
ș i [Link]=[Link]
6. select oraș din Voturi
unde candidat='Dupont'
grupele după oraș
având suma(voix) > 8000;
-6-