CMXML
CMXML
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
Donc
• ce cours fournit les bases pour aborder les différents aspects
• il faut expérimenter pour maitriser
• Certains aspects sont effleurés
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
…
Fragment de fichier correspondant
V. Chevrier
7
Un autre exemple
Document OpenOffice
V. Chevrier
8
Un autre exemple
V. Chevrier
9
V. Chevrier
10
V. Chevrier
11
V. Chevrier
12
V. Chevrier
13
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
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> ;</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
V. Chevrier
22
Quelques remarques
V. Chevrier
23
Quelques remarques
classe
etudiant
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 ?
Contenu différent
Un peu jeune
comme étudiant
V. Chevrier
27
Remarques ?
Contenu différent
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
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
V. Chevrier
32
Ø 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
Ø 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
Ø Attribut
• un élément peut avoir un ou plusieurs attributs
• couple (nom,"valeur") qualifiant une balise
• Valeur entre quote
• <cours no=”12" salle=”B12"/>
V. Chevrier
36
Document XML
Ø Document
• bien formé
• valide
V. Chevrier
37
V. Chevrier
39
<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
V. Chevrier
43
V. Chevrier
44
V. Chevrier
45
Ø 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)>
]>
V. Chevrier
47
Association XML/DTD
V. Chevrier
48
Association XML/DTD
V. Chevrier
49
Remarques/conseils
V. Chevrier
50
V. Chevrier
51
Exemple
V. Chevrier
52
Informations associées
V. Chevrier
53
V. Chevrier
54
Exemple de DTD
V. Chevrier
55
Ø 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 ?
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
V. Chevrier
61
V. Chevrier
62
V. Chevrier
63
V. Chevrier
64
Ø Adresses
• http://validator.w3.org/
V. Chevrier
65
Remarque
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
V. Chevrier
69
Avantage
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
V. Chevrier
73
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
V. Chevrier
76
Eléments complexes
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
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
V. Chevrier
81
V. Chevrier
82
<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
V. Chevrier
85
V. Chevrier
86
</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
V. Chevrier
89
V. Chevrier
90
….
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
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
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
V. Chevrier
100
Ø C’est du XML
V. Chevrier
101
Principe
V. Chevrier
102
Après traitement
V. Chevrier
103
V. Chevrier
104
Ou encore …
C'est en Fr
La 2 s'appelle oui-We et XML, il y a plein d'acteur:
Fernandel Cyrille.
Exemple de traitements
V. Chevrier
106
Principes de base
V. Chevrier
107
V. Chevrier
108
Association
V. Chevrier
109
V. Chevrier
110
V. Chevrier
111
<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
V. Chevrier
113
Elément <xsl:template>
V. Chevrier
114
Elément <xsl:template>
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
V. Chevrier
118
sort
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
V. Chevrier
121
Compléments
V. Chevrier
122
V. Chevrier
123
V. Chevrier
124
V. Chevrier
125
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
Ø 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
V. Chevrier
132
Sérialisation/désérialisation
V. Chevrier
133
Ø lecture
V. Chevrier
134
Ø Technologie:
• SAX
• DOM
• JDOM
Ø http://cynober.developpez.com/tutoriel/java/xml/jdom/
V. Chevrier
135
Annexe
V. Chevrier
136
Caractères spéciaux
V. Chevrier
137
Outils : Eclipse
V. Chevrier
138
Eclipse et XML
Ø Possibilités d’aide/complétion
V. Chevrier
139
Notepad++
V. Chevrier
140
Notepad++
V. Chevrier