0% ont trouvé ce document utile (0 vote)
16 vues140 pages

CMXML

Ce document présente une introduction aux concepts et technologies liés à XML, en abordant ses principes, sa structure, et son utilisation dans divers contextes. Il couvre également des éléments tels que DTD, XSD, et la présentation de documents XML avec CSS, ainsi que des techniques de parsing avec XSLT et XPath. L'accent est mis sur l'importance de l'expérimentation pour maîtriser ces technologies.

Transféré par

Gabriel Pacheco
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues140 pages

CMXML

Ce document présente une introduction aux concepts et technologies liés à XML, en abordant ses principes, sa structure, et son utilisation dans divers contextes. Il couvre également des éléments tels que DTD, XSD, et la présentation de documents XML avec CSS, ainsi que des techniques de parsing avec XSLT et XPath. L'accent est mis sur l'importance de l'expérimentation pour maîtriser ces technologies.

Transféré par

Gabriel Pacheco
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1

Quelques notions autour de XML


Vincent Chevrier

V. Chevrier
2

Ø Inspiration:
• Cours de O Perrin,
• Cours de A. Belaïd
• W3schools
• …..
Ø Références
• Openclassroom
– Structurezvosdonnéesavec XML
– Java et le XML
• http://www.w3schools.com

V. Chevrier
3

Ø Plutôt qu’un cours complet sur XML cet enseignement est


conçu comme une ensemble de points d’entrées autour des
concepts et technologies liées à XML

Donc
• ce cours fournit les bases pour aborder les différents aspects
• il faut expérimenter pour maitriser
• Certains aspects sont effleurés

Les fichiers XML, DTD, …. utilisés pour ce cours sont sur


l’ENT

V. Chevrier
4

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XSLT
Ø XML et Java

V. Chevrier
5

Introduction

V. Chevrier
6

Exemple: sauvegarde MS Office


Fragment de fichier correspondant

V. Chevrier
7

Un autre exemple

Document OpenOffice

V. Chevrier
8

Un autre exemple

Fichier exporté au format XML

V. Chevrier
9

Exemple tiré du monde Andoid

Ø <?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/
apk/res/android"
package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
...
</application>
</manifest>

V. Chevrier
10

AntFile : directive de compilation de


Code Java ((produit par éclipse)

V. Chevrier
11

Encore … (ici modelica)

V. Chevrier
12

Et son export FMU (cf cours 3a SG)

V. Chevrier
13

Et plein d’autres exemples

Ø Flux météo, news, …


Ø Échanges de données entre applications métier

Ø XML comme format d’échange

V. Chevrier
14

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
15

Principes de XML

V. Chevrier
16

XML

Ø eXtensible Markup Language


Ø (Méta-) Langage à base de balises (comme HTML)
Ø Recommandation W3C depuis 10/2/98
Ø Représentation et communication de données semi-
structurées
Ø XML se veut générique

V. Chevrier
17

XML

Ø Lisible :
• aucune connaissance ne doit théoriquement être nécessaire pour
comprendre un contenu d'un document XML
Ø Autodescriptif et extensible
Ø Une structure arborescente :
• Expressif
Ø Intégrabilité :
• un document XML est utilisable par toute application pourvue
d'un parser (c'est-à-dire un logiciel permettant d'analyser un code
XML)

V. Chevrier
18

XML

Ø Langage/technologie pour
• structurer ses données
• communiquer entre applications (navigateur web, programmes
traitement de texte, news, météo)
Ø Structurant pour une entreprise
• Clarifie les interfaces d’échanges
• De manière transversale
• Tout en étant ouvert sur l’extérieur
Ø Mais
• Syntaxe verbeuse
• Un méta-langage mais plusieurs langages
• Couteux à analyser(CPU), à instancier (stockage)
V. Chevrier
19

Notion de balises

Ø Ex HTML
<ul> <li>la structure d'un document XML est définie et validable par un
<a href="/wiki/Document_Schema_Definition_Languages" title="Document
Schema Definition Languages">schéma</a>&#160;;</li>
<li>un document XML est entièrement <a href="
/wiki/Langage_de_transformation_XML" title="Langage de transformation
XML">transformable</a> dans un autre document XML.</li>
</ul>
Mais balises prédéfinies

V. Chevrier
20

Exemple
Affichage (parsé) Firefox
Texte Brut
<classe>
<!-- premier exemple -->
<etudiant>
<nom> Minski </nom>
<Prenom> Bob </Prenom>
<Adresse>
<Num> 18</Num>
<voie> Rue des Alouettes </voie>
<CP>13456 </CP><
Ville> PARISSI </Ville>
</Adresse>
<Age> 3 </Age>
</etudiant>
Etc ..
</etudiant></classe>

V. Chevrier
21

Ø XML promet de standardiser la manière dont l'information


est :
• échangée (XML)
• personnalisée/présentée (XSL-FO/CSS)
• recherchée (XPath/XSLT/XQuery)
• sécurisée (Encryption, Signature)
• liée (XLink)

V. Chevrier
22

Quelques remarques

Ø Séparation représentation-transport des données /


présentation
• Complément à HTML
– XML représentation/transport
– HTML formatage/affichage
• Ici même ficher mais safari (navigateur apple)

V. Chevrier
23

Quelques remarques

Ø Format textuel structuré arborescent


• il suffit de “parser” pour reconstruire les données

classe

etudiant

Nom : Adresse Age : 3


Minski

etc

V. Chevrier
24

Vocabulaire

Ø Racine
Ø Feuille
Ø Nœud père/fils
Ø Arbre n-aire
Ø Profondeur/hauteur

V. Chevrier
25

avec Eclipse

V. Chevrier
26

Remarques ?

Pas la même balise

Contenu différent

Un peu jeune
comme étudiant

V. Chevrier
27

Remarques ?

Pas la même balise

Contenu différent

Aucun contrôle sur le document

Un peu jeune
comme étudiant

V. Chevrier
28

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
29

Ø Il faut donc pouvoir


• Décrire
• Contraindre

Ø Comment définir (correctement) un document XML

V. Chevrier
30

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
31

Structure d’un document

V. Chevrier
32

Structure d’un document

Ø Document
• Déclarations,
• Éléments
• commentaires, <!-- commentaire -->
• définition de caractères spéciaux, “<“ “>” etc
• (optionnel) Instructions de traitement

Ø Et arborescence correcte !

V. Chevrier
33

Exemple
Déclaration
<?xml version="1.0" encoding="UTF-8"?>
entête
<!DOCTYPE classe SYSTEM "classe.dtd"> Type de document
<classe>
Racine du document
<!-- deuxième exemple --> commentaire
<etudiant genre="M"> attribut
<nom> Minski
</nom>
<prenom> Bob </prenom>
<adresse
<num/> Elément vide Corps
<voie> Rue des Alouettes </voie> du
<cp> 13456 </cp> Elément non vide document
<ville> PARISSI </ville>
</adresse>
<age> douze </age> Balise ouverture / fermeture
</etudiant>
</classe>
V. Chevrier
34

Composants d’un document

Ø Balise
marque de début et de fin
repérer un élément de données (textuel)
<balise> de début, </balise> de fin
signification des sections marquées (quand on lit on sait)
Ø Les utilisateurs définissent leurs propres balises
Ø Sensible à la casse (MAJ/min )
Ø Elément de données
• texte encadré par une balise de début et une de fin
• Imbrication possible
• Peut contenir du texte, des attributs, d’autres éléments, ou un
mélange de ce qui précède
V. Chevrier
35

Composants d’un document ..

Ø Attribut
• un élément peut avoir un ou plusieurs attributs
• couple (nom,"valeur") qualifiant une balise
• Valeur entre quote
• <cours no=”12" salle=”B12"/>

Ø Il est possible d'imposer une grammaire spécifique (DTD,


Schéma)

V. Chevrier
36

Document XML

Peut être associé à


• Une DTD (Document Type Definition) ou à un schéma
– Définit la structure du document
– Permet de définir son propre langage
• Une feuille de style
– Définit la présentation des données

Ø Document
• bien formé
• valide

V. Chevrier
37

Document XML bien formé

Ø Respect de la syntaxe XML


Ø Débute par la déclaration XML
• Version obligatoire, codage facultatif
• <?xml version="1.0" encoding="UTF-8"?>
Ø Indication ou non d’un dtd
Ø Structure hiérachique
• Une seule racine
• Balise ouvrante/fermante en correspondance (casse) Et
correctement ouverte/fermée
– Balise EMPTY “auto-fermante” è <balisevide/>
• Valeur d’attribut quotée
• Caractères spéciaux (cf Annexe)
V. Chevrier
38

Document XML valide

Ø Document bien formé


Ø ET
Ø Associé à une grammaire (DTD ou autre, XSD, …)
Ø Conforme à cette grammaire

V. Chevrier
39

Document mal formé

<classe>
<!-- doc mal formé -->
<etudiant genre="M"> Manque le « / »
<nom> Minski
</nom>
<prenom> Bob </prenom>
<adresse>
<num />
<voie> Rue des Alouettes </voie>
<codepostal> 13456 </cp>
<ville> PARISSI </ville>
</adresse>
</classe> V. Chevrier
40

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
41

DTD

V. Chevrier
42

Document Type Definition (DTD)

Ø C’est la grammaire que doit respecter un fichier XML


• Vocabulaire (ie les balises utilisables)
• Structure (imbrication, répétition des balises)
• Le caractère optionel, obligatoire
Ø Très largement utilisée (même s’il y a mieux)
Ø DTD est défini/référencé
association document XML avec DTD
• En interne (directement dans le fichier XML)
• En externe (fichier séparé .dtd, spécifié en entête)
– Localement
– Via une URL

V. Chevrier
43

Définition des éléments

Ø <!ELEMENT balise (contenu)>


Ex: <!ELEMENT nom (#PCDATA)>
Ici #PCDATA signifie « le contenu est du texte »
Pour <nom> Minski </nom>

Ø Elément contenant d’autre éléments


• <!ELEMENT adresse (num, voie, cp, ville)>
• <!ELEMENT num (#PCDATA)>
• <!ELEMENT voie (#PCDATA)>
• <!ELEMENT cp (#PCDATA)>
• <!ELEMENT ville (#PCDATA)>
• Ordre doit être respecté !

V. Chevrier
44

Définition des éléments

Ø Pouvant être vide:


• <!ELEMENT nom EMPTY> (parenthèses non obligatoires)
• <nom />
Ø Pouvant contenir “tout”
• <!ELEMENT nom ANY>
• Vide ou pas

V. Chevrier
45

Définition des éléments

Ø Liste de choix
• <!ELEMENT balise (balise1 | balise2 | etc.)>
• Contient obligatoirement un (et un seul) des élements listés
Ø Élement optionnel (?)
• <!ELEMENT balise (balise1 ,balise2?, etc.)>
• Contient obligatoirement balise1 mais pas forcément balise2
Ø Éléments répétés
• <!ELEMENT balise (balise1 ,balise2*, etc.) (de 0 à n fois)
• <!ELEMENT balise (balise1 ,balise2+, etc.) (de 1 à n fois)

V. Chevrier
46

Association XML/DTD

Ø Dans le fichier
<!DOCTYPE defRacine[
<!ELEMENT defRAcine (#PCDATA)>
]>
<?xml version="1.0" encoding="UTF-8"?>
<!-- created with XMLSpear -->
<!DOCTYPE nom [
<!ELEMENT nom (#PCDATA)>
]>

<nom> alphonse </nom>

V. Chevrier
47

Association XML/DTD

Ø En référençant un fichier (“privé”)


• Le fichier est indiqué après le mot clé SYSTEM

<?xml version="1.0" encoding="UTF-8"?>


<!-- created with XMLSpear -->
<!DOCTYPE nom SYSTEM "nom.dtd" >

<nom> alphone </nom>

V. Chevrier
48

Association XML/DTD

Ø En référençant une URL

V. Chevrier
49

Remarques/conseils

Ø DTD/XML Schema n’est pas obligatoire


Ø Quand expérimentations avec XML, fichiers petits en
XML, utiliser des DTD peut être chronophage
Ø Quand développement d’applications
• attendre que les spécifications soient stables avant de préciser la
« document definition »,
• sinon l’application va se bloquer en erreur (sur la validation L)

V. Chevrier
50

Attributs (écrits entre quotes)

<! ATTLIST balise attribut type mode >


• balise : nom de l’élément
• attribut : nom de l’attribut
• type :
– CDATA (chaine de caractères, non analysée)
– (valeur1 | valeur2 | valeur3) Liste d’énumération => voir exemple
– ID valeur unique (identifiant) et IDREF référence à ID
– NMTOKEN un seul mot (pas d’espace dans la valeur)
• Mode:
– Une valeur : valeur de l'attribut par défaut
– #REQUIRED valeur de l'attribut obligatoire
– #IMPLIED valeur de l'attribut facultative
– #FIXED valeur : valeur fixée de l'attribut par la DTD

V. Chevrier
51

Exemple

V. Chevrier
52

Informations associées

V. Chevrier
53

V. Chevrier
54

Exemple de DTD

V. Chevrier
55

Pour aller plus loin

Ø Entités
Ø Possibilité de définir des chaines, des caractères spéciaux
Ø <!ENTITY nom "valeur">
Ø Utilisation avec & et séparation avec ;

Ø Voir exemple

V. Chevrier
56

ID et IDREF, entités
?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Entreprise [<!ELEMENT Entreprise (employe+)>
<!ELEMENT employe EMPTY>
<!ATTLIST employe nom CDATA #REQUIRED>
<!ATTLIST employe numero ID #REQUIRED>
<!ATTLIST employe collaborateur IDREFS #IMPLIED>
<!ATTLIST employe superieur IDREF #IMPLIED>
<!ATTLIST employe sexe CDATA #REQUIRED>
<!ATTLIST employe competence CDATA #IMPLIED>
<!ENTITY m 'masculin'>
<!ENTITY f 'feminin'>
<!ENTITY info 'informatique'>
<!ENTITY elec 'electricite'>
<!ENTITY meca 'mecanique'>
]>
<Entreprise>
<employe nom="bob" numero="N1" sexe="&m;"/>
<employe nom="leo" numero="N2" sexe="&m;" superieur="N1"/>
<employe nom="lea" numero="N3" sexe="&f;" superieur="N1" collaborateur="N1 N2
<employe nom="tom" numero="N4" sexe="&m;"
superieur="N1" competence="&info; &meca;"/>
</Entreprise> V. Chevrier
57

V. Chevrier
58

XML valide ?

Ø Pour savoir si un fichier XML est


• Bien formé
è le lire à partir d’un outil (navigateur ..)
• Valide
èLe valider à partir de notepad++ (installer les plug-in XML) et
demander sa validation
èÀ partir d’un programme JAVA
èÀ partir d’un page web
èEclipse ….

V. Chevrier
59

Vaidation

Ø Vérifie
• que c’est bien formé
• l’élément racine,
• le contenu de chaque élément et ses attributs
• Le respect des contraintes des ID /IDREF(s) unicité notament
Ø Pour les entités
• Remplace par le contenu référencé (macro)

V. Chevrier
60

Exemple mal formé

V. Chevrier
61

Validation avec Notepad++, eclipse, …..

V. Chevrier
62

Validation par JAVA (1)

Voir code fourni sur ENT

V. Chevrier
63

Validation par JAVA (2)

Avec une DTD (coir code sur ENT)

V. Chevrier
64

Validation par le web

Ø Adresses
• http://validator.w3.org/

V. Chevrier
65

Remarque

Ø Nous préférerons utiliser d’autres outils qu’Eclipse


• Eclipse pas forcément disponible/souhaitable dans votre future
situation professionnelle,
• Eclipse est « surdimensionné » pour un besoin ponctuel

V. Chevrier
66

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
67

XML Schema
XSD

V. Chevrier
68

XML Schema

Ø Même objectif qu’une DTD


Ø Alternative souvent préférée pour formaliser des serives
web car plus précis, plus complet et plus riche que DTD
Ø Intégration de contraintes/types
• Éléments simples ou complexes
• Attributs simples
• Existence, obligation, optionnel
• Cardinaités, références domaines
• …
Ø Ecrit en XML, extensible

V. Chevrier
69

Avantage

Ø Pas de nouvelle syntaxe (c’est du XML)


Ø Fichier contient sa decription
Ø Éditeur XML utilisable
Ø Manipulable par DOM
Ø Transformable par XSLT

V. Chevrier
70

Exemple

<!DOCTYPE livre [
<!ELEMENT livre (titre,auteur,nbpage)>
<!ELEMENT titre (#PCDATA)> Point de départ
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT nbpage (#PCDATA)>
]
>
<livre>
<titre> XML en 3 jours</titre>
<auteur> James Bond</auteur>
<nbpage>007</nbpage>
</livre>

V. Chevrier
71

Exemple

livre.xml

livre.xsd

V. Chevrier
72

Associer fichier XML et XML schéma

Ø C’est du XML donc


• <?xml version="1.0" encoding="UTF-8"?> (1ère ligne)
• Il faut définir l’élément racine
Avec comme attributs
– espace de nommage :
• xmlns:xsd="http://www.w3.org/2001/XMLSchema”
– Localisation du fichier xsd (notre fameux schéma)
Ø Ensuite on donne les attributs
Ø On ferme la balise racine

V. Chevrier
73

Associer fichier XML et XML schéma

<?xml version="1.0" encoding="UTF-8"?>


<livre Déclarer la racine

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Déclarer espace de nomage xsi
xsi:noNamespaceSchemaLocation="livre.xsd">
Définir l’url du fichier xsd
<titre> XML en 3 jours</titre>
<auteur> James Bond</auteur>
<nbpage>007</nbpage>
</livre>
TEL QUEL !!

V. Chevrier
74

Le schéma (.xsd)

<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema" Espace de nommmage
elementFormDefault="qualified "> Tous les attributs sont dans
<xsd:element name="livre"> un espace de nommmage
<xsd:complexType> Ici xsd:
<xsd:sequence>
Nom de l’élément
<xsd:element name="titre" type="xsd:string"/>
Définition d’un élément
<xsd:element name="auteur" type="xsd:string"/> complexe
<xsd:element name="nbpage" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType> Définition d’un élément
simple
</xsd:element>
</xsd:schema>

V. Chevrier
75

Eléments simples

<xsd:element name="nom" type="xsd:type" />


• Type pouvant être …
– string decimal integer boolean date time …
– Compléments sur OpenClassRooms
• Son propre type

<xsd:element name="titre" type="xsd:string"/>


<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="nbpage" type="xsd:int"/>

V. Chevrier
76

Eléments complexes

Ø Autres attributs possibles (de l’élément !)


• default, fixed : valeur par défaut, constante
• Nombre d’occurrences
– minOccurs (1, 2 ..), maxOccurs (7,8, .. unbounded)

<xsd:element name="titre" type="xsd:string » />


<xsd:element name="auteur" type="xsd:string" minOccurs ="0" maxOccurs="unbounded" />
<xsd:element name="editeur" type="xsd:string" default="P.U.N."/>

• Possibilité également de définir des listes, unions


• On peut aussi « dériver » un type d’un type simple

V. Chevrier
77

Eléments

Ø Simple
• ne contiennent pas de sous-éléments, ni de d’attributs
Ø Complexe
• Les autres
Ø Tous sont typés
• Type de base
• Types utilisateur (extension, union ou restriction de type)

V. Chevrier
78

Dérivation de type

Ø Définition d’un type à partir d’un type de base


• Utilisation de facettes (restrictions à appliquer)
<xsd:element name="nbpage" type="unNbDePage"/>
<xsd:simpleType name="unNbDePage">
<xsd:restriction base="nonNegativeInteger">
<xsd:minInclusive value="25" />
<xsd:maxExclusive value="234"/>
</xsd:restriction>
</xsd:simpleType>

V. Chevrier
79

<xsd:element name="livre">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:choice>
<xsd:element name="auteur" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="nomCollectif" type="xsd:string"/>
</xsd:choice>
<xsd:element name="editeur" type="xsd:string" default="P.U.N."/>
<xsd:element name="nbpage" type="unNbDePage"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="unNbDePage">
<xsd:restriction base="xsd:nonNegativeInteger"> À l’extérieur de l’élément !
<xsd:minInclusive value="25"/>
<xsd:maxExclusive value="234"/>
</xsd:restriction>
</xsd:simpleType>
V. Chevrier
80

Dérivation de type

Ø Grand nombre de possibilité :


• fixer, restreindre ou augmenter la longueur minimale ou
maximale d'un type simple
• énumérer toutes les valeurs possibles d'un type
• prendre en compte des expressions régulières
• fixer la valeur minimale ou maximale d'un type (voir l'exemple
ci-dessus) (intervalle)
• fixer la précision du type
• ...

V. Chevrier
81

Les éléments complexes

Ø (comme son nom l’indique !)


<xsd:element name=”leNom">
<xsd:complexType>
<!– définition d’attribut simples ou complexes-->
<xsd:complexType>
</xsd:element>
è permet de définir
• Des séquences
• Des choix
• Des contraintes d’occurrences
• Des attributs

V. Chevrier
82

Type Complexe : séquence

<xsd:complexType>
<xsd:sequence>
…… définitions
</xsd:sequence>
</xsd:complexType>

V. Chevrier
83

Type Complexe
Ø Choix
<xsd:complexType>
……
<xsd:choice>
<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="nomCollectif” type="xsd:string"/>
</xsd:choice>
……

</xsd:complexType>
Ø Element dans n’importe quel ordre 0 ou 1 fois
<xsd:complexType>
<xsd:all>
…….
</xsd:all>
</xsd:complexType>
V. Chevrier
84

Définir ses propres types (complexes)

Avantage: peut être réutilisé


• Comme type d’un élément
• Comme type définissant un autre type complexe (pas abordé)
Voir xsd:complexContent, xsd:extension

V. Chevrier
85

Type complexe: attributs

Ø Forcément associé à un élément complexe


Ø De type SIMPLE !
Ø Déclaré après les éléments
<xsd:attribute name=”attName" type="xsd:attType"/>
Ø Exemple
<xsd:attribute name="isbn" type="xsd:string"/>

V. Chevrier
86

Mettons un peu d’ordre

Ø Schéma vite difficile à maintenir, à gérer


è le découper en parties
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- définition des éléments -->

<!-- définition des attributs -->

<!-- définition des types complexes -->

<!– définition du schéma -->

</xsd:schema>

Utilisation de ref

V. Chevrier
87

Exemple

Ø Un livre c’est
• Un titre
• Un auteur
• Des personnages
• et un n° ISBN
Ø Personnage défini par
• Son nom, ses amis, ….
Ø Titre, auteur, nom et les amis sont des chaines
Ø Isbn est un attribut

V. Chevrier
88

Mettons un peu d’ordre


<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- définition des éléments -->
Titre, auteur, nom et les amis sont des chaines
<!-- définition des attributs -->
Isbn est un attribut
<!-- définition des types complexes -->
Personnage définit par sn nom, ses amis
<!– définition du schéma -->
définition d’un livre (titre, auteur et personnages)
</xsd:schema>

V. Chevrier
89

Mettons un peu d’ordre


<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- définition des éléments -->
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="les-amis" type="xsd:string"/>
<!-- définition des attributs -->
<xsd:attribute name="isbn" type="xsd:string"/>
<!-- définition des types complexes -->
<xsd:element name="personnage">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="nom"/>
<xsd:element ref="les-amis" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
……

V. Chevrier
90

….

<!– définition du schéma -->


<xsd:element name="livre">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="titre"/>
<xsd:element ref="auteur"/>
<xsd:element ref="personnage" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

Ø ref = référence au nom d’un autre élément

V. Chevrier
91

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
92

XML et css
(pour information)

V. Chevrier
93

XML et HTML

Ø Langages à balises
Ø L’un permet de présenter des informations (texte) via des
feuilles de style
• Exemple :
body { border-left-style: double; font-size: 100%; background-color: white; font-family:
Verdana,sans-serif;
}
h1 { color: navy; font-style: oblique; font-size: 200%; text-align: left; text-transform: capitalize;
}
• Principe (très général) : à chaque balise HTML on associe une présentation
Ø Faire pareil avec XML !!

V. Chevrier
94

HTML et css

Code html + css Visualisation


V. Chevrier
95

XML et css (on fera autrement et mieux plus tard)


Fichier exCSS.css

V. Chevrier
96

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
97

XSLT

V. Chevrier
98

Pour aller plus loin

http://www.w3schools.com/xsl/default.asp
http://www.edureka.co/blog/serialization-of-java-objects-to-xml-using-xmlencoder-decoder/

V. Chevrier
99

Introduction

Ø XML permet de représenter des données


Ø De manière structurée (arborescente)
è peut on les manipuler
désigner certaines données
appliquer des traitements

Ex: affichage agréable,

V. Chevrier
100

Ø XSLT (eXtensible Stylesheet Language Transformations)


• Transformer des documents XSL (XML) dans un autre format
– Présentation html, par exemple
– Mais en fait génère du texte (donc ce que l’on veut)
–…
Ø S’appuye sur XPATH pour manipuler l’arbre XML

Ø C’est du XML

V. Chevrier
101

Principe

Ø Combiner deux fichiers


• des données XML
• Un code XSLT
Ø Pour produire un nouvel ensemble © Wikipedia
d’informations
• Format imposé (ex : html)
• Possibilité de filtrer, traiter, ..
les informations en sortie

V. Chevrier
102

Un exemple pour commencer

Après traitement

V. Chevrier
103

V. Chevrier
104

Ou encore …

<?xml version="1.0" encoding="UTF-8"?>


J'ai chez moi des videos.

La 1 s'appelle le retour 2 de la momie, il y a plein d'acteur:


Ramses Nefertiti.

C'est en Fr
La 2 s'appelle oui-We et XML, il y a plein d'acteur:
Fernandel Cyrille.

Je ne sais pas en quelle langue c'est.

La 3 s'appelle les amis de oui-We, il y a plein d'acteur:


Bob tom et lola.

Je ne sais pas en quelle langue c'est.


V. Chevrier
105

Exemple de traitements

Ø Parcourir un arbre XML (des informations)

Ø Sélectionner un sous ensemble d’informations


Ø
Ø Mettre en forme des informations
• Ajouter du texte supplémentaire

V. Chevrier
106

Principes de base

V. Chevrier
107

Ø Il faut définir un fichier XSLT


• Mettre le bon entête
• Définir les traitements
Ø Il faut associer (ou pas le fichier XML et le fichier XSLT)
• Mode client side ou pas

V. Chevrier
108

Association

Ø Si client-side (eg dans un navigateur)


• Mettre dans le fichier XML:
<?xml version="1.0"?>
<?xml-stylesheet href="leFichier.xsl" type="text/xsl"?>
<maRacine> ...... </maRacine>
Ø Sinon autres méthodes
• Si outil (jedit par ex.) => association explicite
• Dans un langage de programmation
• …

V. Chevrier
109

Exemple association jedit

V. Chevrier
110

Sinon avec notepad++

Ø Compléments … XML tools … XSL transform

V. Chevrier
111

Déclaration / entête du fichier

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
ou
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

V. Chevrier
112

Principes de XSLT

Ø Les traitements correspondent à des « règles » de


transformations
• Sélection => action
Ø Pour construire des règles
• xsl:template
Ø Pour

V. Chevrier
113

Elément <xsl:template>

Ø Construit un modèle, gabarit, patron des données à


sélectionner
• Attribut match :
– Spécifie ce « template », indique un texte qui doit correspondre, un
pattern ou un chemin vers des éléments
– Entre les balises : texte à produire/code à interpréter
– <xsl:template match="un gabarit »>
• Actions
– <xsl:template
La racine

Texte à produire en sortie

V. Chevrier
114

Elément <xsl:template>

La racine

Texte à produire en sortie

Sortie: <?xml version="1.0" encoding="UTF-8"?>


texte pour la racine

V. Chevrier
115

Données en entrée

V. Chevrier
116

Value-of

Ø value-of
• Renvoie la première valeur trouvée qui correspond
<xsl:template match="/">
bla bla bla
<xsl:value-of select="videotheque/video"/>
</xsl:template>
Ø Notion de Xpath (chemin pour naviguer dans
l’arborescence)

V. Chevrier
117

for-each

Ø Itération sur TOUS les éléments vérifiant le Xpath


Ø Dans la boucle possibilité de code à interpréter, de texte à
afficher, …

On retrouve l’espacement (texte)

V. Chevrier
118

sort

Ø Trier les éléments d’une boucle selon un critère présent


dans les données d’origine
• Utilise un Xpath pour le « select » du tri

V. Chevrier
119

conditions

Ø If Notons la subtilité
La valeur est " Fr"
• Conditionnelle simple (pas de « sinon ») (oui le fichier XML
n’est pas propre)

V. Chevrier
120

conditions

Ø Choose, when, otherwise


• Conditionnelle multiple
• Les tests peuvent concerner des nœuds différents
• Le premier test valide est exécuté et on sort

V. Chevrier
121

Compléments

Ø Test sur l’existence d’un attribut


• <xsl:if test="nomAttribut">
Ø Test sur l’élément courant:
• name(), position(), text(), etc.
• Exemple: <xsl:when test="position() mod 2=0"> ….
• Ne concerne que les nœud en position paire dans l’arbre
d’origine (pas l’affichage).

V. Chevrier
122

V. Chevrier
123

Apply et les templates

Applique tous les templates

Applique les templates dans l’ordre

V. Chevrier
124

V. Chevrier
125

Pour aller plus loin

Ø XSLT utilise les concepts de Xpath et Xquery


• Possibilité de fonctions sur les données sur la manipulation de
l’arbre, etc
• Voir cours w3schools.com/xsl par exemple
• Exemples (non exhaustif): index-of, empty, count, …

V. Chevrier
126

PLAN

Ø Introduction
Ø Principes de XML
Ø Structurer les documents
• DTD
• XSD
Ø Présenter ses documents
• XML et css
Ø “parser” un fichier XML
• XPATH
• XSLT
Ø XML et Java
V. Chevrier
127

XML et JAVA
Tous les exemples sont disponibles sur
l’ENT

V. Chevrier
128

Ø http://cynober.developpez.com/tutoriel/java/xml/jdom/
Ø https://openclassrooms.com/courses/structurez-vos-
donnees-avec-xml/dom-exemple-d-utilisation-en-java
Ø http://ydisanto.developpez.com/tutoriels/j2se/serialisation/
partie2/
Ø http://ericreboisson.developpez.com/tutoriel/java/xml/
xstream/ ou http://x-stream.github.io/
Ø http://www.journaldev.com/895/how-to-validate-xml-
against-xsd-in-java

V. Chevrier
129

Ø Lire/ecrire du XML
Ø Sérialisation XML
Ø Parser un document XML
• SAX
• DOM
• JDOM

V. Chevrier
130

Exemple fil rouge

Ø Personne
• Nom (chaine)
• Prénom (chaine)
• Numero de téléphone (NumTelephone)
Ø NumTelephone
• Code (entier)
• Num (Chaine)
è2 classes avec attributs privés, constructeur avec attributs,
getter, setter
è Utilisation d’un répertoire téléphonique (liste de
personnes)
V. Chevrier
131

Lire/écrire du XML

Ø Exemple Xstream

XStream xstream = new XStream(new StaxDriver());


String output = xstream.toXML(uneInstance);
System.out.println(output);
Personne toto = (Personne)xstream.fromXML(output);
System.out.println(toto);

V. Chevrier
132

Sérialisation/désérialisation

Ø Sortie dans ficsortie (ici "outEncoder.xml »)

Attention besoin d’un constructeur


sans paramètre
ET de getter/setter
(javaBean)

V. Chevrier
133

Ø lecture

V. Chevrier
134

Parser un document, manipuler l’arborescence

Ø Technologie:
• SAX
• DOM
• JDOM
Ø http://cynober.developpez.com/tutoriel/java/xml/jdom/

V. Chevrier
135

Annexe

V. Chevrier
136

Caractères spéciaux

&lt; < Plus petit


&gt; > Plus grand
&amp; & Et (ampersand)
&apos; ' apostrophe
&quot; " quote

Attention aux “autocorrections” des outils

V. Chevrier
137

Outils : Eclipse

Ø Eclipse propose des moyens de travail avec XML (mars)

V. Chevrier
138

Eclipse et XML

Ø Possibilités d’aide/complétion

V. Chevrier
139

Notepad++

Ø Utiliser le plugin XML Tools

V. Chevrier
140

Notepad++

V. Chevrier

Vous aimerez peut-être aussi