13.07.2013 Views

dans des entrepôts de données XML - CoDE - Université Libre de ...

dans des entrepôts de données XML - CoDE - Université Libre de ...

dans des entrepôts de données XML - CoDE - Université Libre de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CHAPITRE 5. SCHÉMA <strong>XML</strong> CANONIQUE POUR UN PROCESSUS ETL 29<br />

<strong>de</strong> la <strong><strong>de</strong>s</strong>tination en vue d’extraire non pas l’arborescence du schéma XSD comme telle mais<br />

celle du type <strong>de</strong> document qu’il définit. Arrêtons-nous un instant sur cette problématique et<br />

regardons <strong>dans</strong> la section suivante, d’où proviendrait le problème.<br />

5.2 Difficulté d’extraire une structure définie <strong>dans</strong> un schéma<br />

Un schéma XSD étant un fichier <strong>XML</strong>, on peut l’écrire <strong>de</strong> plusieurs manières. A chaque<br />

présentation du schéma, correspond une arborescence différente mais l’arbre défini lui-même<br />

gar<strong>de</strong> la même structure. Le <strong>XML</strong> schema du listing 2.3 (p. 2.3) par exemple, pourrait encore<br />

s’écrire comme <strong>dans</strong> le listing 5.2.<br />

Listing 5.2 – Autre façon d’écrire le schéma du listing 2.3<br />

<br />

<br />

< xs:schema xmlns:xs =" http: // www .w3.org /2001/ <strong>XML</strong>Schema "><br />

< xs:element name =" personslist "><br />

< xs:complexType ><br />

< xs:element name =" person " type =" personType "/><br />

<br />

<br />

< xs:complexType name =" personType "><br />

< xs:element name =" firstname " type =" xs:string "/><br />

< xs:element name =" middlename " type =" xs:string "/><br />

< xs:element name =" lastname " type =" xs:string " use =" require "/><br />

< xs:attribute name =" birthdate " type =" xs:date "/><br />

<br />

<br />

Dans le co<strong>de</strong> du listing 5.2, l’élément person est déclaré directement à l’intérieur <strong>de</strong> la<br />

définition <strong>de</strong> l’élément personslist. Le fait <strong>de</strong> déclarer person avec un attribut type=”personType”<br />

permet <strong>de</strong> donner sa définition à l’extérieur (<strong>dans</strong> un xs :complexType). Remarquez que ce<br />

même schéma peut encore s’écrire comme <strong>dans</strong> le listing 5.3.<br />

Listing 5.3 – Encore une autre manière d’écrire le schéma du listing 2.3<br />

<br />

<br />

< xs:schema xmlns:xs =" http: // www .w3.org /2001/ <strong>XML</strong>Schema "><br />

< xs:element name =" personslist "><br />

< xs:complexType ><br />

< xs:element name =" person "><br />

< xs:complexType ><br />

< xs:element name =" firstname " type =" xs:string "/><br />

< xs:element name =" middlename " type =" xs:string "/><br />

< xs:element name =" lastname " type =" xs:string " use =" require "/><br />

< xs:attribute name =" birthdate " type =" xs:date "/><br />

<br />

<br />

<br />

<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!