Soit les fichiers XML suivants représentant des films.
<film>
<nom>Trinita</nom>
<annee>1967</annee>
<personnes>
<personne>
<nom>Personne</nom>
<prenom>Terence</prenom>
</personne>
<personne>
<nom>Trinita</nom>
<prenom>Terence</prenom>
<age>40</age>
</personne>
</personnes>
</film>
<film>
<nom>Trinita est de retour</nom>
<annee>1968</annee>
<personnes>
<personne>
<nom>Fonda</nom>
<prenom>Jack</prenom>
<age>53</age>
</personne>
</personnes>
</film>
Créer une table XML sous Oracle pour accueillir ces fichiers XML.
CREATE TABLE film OF XMLTYPE;
Insérer les données de l'exemple dans la table.
INSERT INTO film VALUES (XMLType('
<film>
<nom>Trinita</nom>
<annee>1967</annee>
<personnes>
<personne>
<nom>Personne</nom>
<prenom>Terence</prenom>
</personne>
<personne>
<nom>Trinita</nom>
<prenom>Terence</prenom>
<age>40</age>
</personne>
</personnes>
</film>
'));
INSERT INTO film VALUES (XMLType('
<film>
<nom>Trinita est de retour</nom>
<annee>1968</annee>
<personnes>
<personne>
<nom>Fonda</nom>
<prenom>Jack</prenom>
<age>53</age>
</personne>
</personnes>
</film>
'));
Écrivez les requêtes SQL, en utilisant XPath, permettant de sélectionner :
tous les noms de tous les personnages
le nom du premier personnage de chaque film
les noms des personnages dont l'age est renseigné
les noms des personnages qui ont plus de 50 ans
SELECT f.pers.EXTRACT('XPath').GETSTRINGVAL() AS ... FROM film f;
SELECT f.EXTRACT('/film/personnes/personne/nom').GETSTRINGVAL() AS nom FROM film f;
SELECT f.EXTRACT('/film/personnes/personne[1]/nom').GETSTRINGVAL() AS nom FROM film f;
SELECT f.EXTRACT('/film/personnes/personne[age]/nom').GETSTRINGVAL() AS nom FROM film f;
SELECT f.EXTRACT('/film/personnes/personne[age>50]/nom').GETSTRINGVAL() AS nom FROM film f;