bruno grilheres (eads cassidian) [email protected]
TRANSCRIPT
<XML/>
Bruno GRILHERES (EADS CASSIDIAN) [email protected]
Sommaire
Cours 1 : Introduction à XML XML, Namespaces, DTD, XML-Schema, Exemples d’applications
utilisant XML Cours 2 : Transformations XML, Persistance et Recherche XML
XSL, XSLT, XSL-FO XPath, XLink, XPointer, XQuery
Cours 3 : Manipulation de XML en JAVA et Web Services DOM, SAX, JAXB WSDL, SOAP
TP1 : Création d’un CV en XML + validation avec un XSD TP2 : Construction d’un feuille XSL pour transformation et visualisation du
CV (XHTML) TP3 : Manipulation de CV en java et sérialisation en XML (JAXB)
Introduction à XML
Objectif et Historique Les bases d’XML Validation XML
DTD XML Schema Autres approches (RELAX-NG, Schematron)
Quelques utilisations d’XML XHTML Ant/Maven Spring IOC GraphML et SVG OpenDocument
Explosion informationnelle
Informations et documents dans l’entreprise Constat :
Inflation du volume d’informations Coût et difficulté :
Difficultés à retrouver un document Coût induit par la gestion de documents
XML : Origine et objectifs
Séparation du fond de la forme. Forme = présentation à partir de
la structure (style) Fond = structure + données
(contenu) Multiples précurseurs dont les plus
connues : SGML pour la structuration HTML pour la présentation => Approches mélangeant
parfois le fond et la forme.
Origines
SGML(ISO 8879)
Standard Generalized Markup Language Standard international pour la définition de la structure et du
contenu d’un document numérique
Indépendant du type de matériel, et du système envisagé
Système de balises extensibles
Utilisation de DTD pour la validation de la structure
Trés utilisé pendant plus de 10 ans mais trés lourd.
HTML(RFC 1866)
HyperText Markup Language
Sous ensemble de SGML utilisé pour la présentation d’informations sur le Web
Utilisation d’un vocabulaire de balises restreint
Qu’est ce que XML ?
eXtensible Markup Language Recommendation du W3C
1.0 Ed01 en 1996, 1.0 Ed05 en 2008 1.1 en 2004
XML est un méta-langage universel pour représenter les données échangées (sur le Web) qui permet au développeur de délivrer du contenu depuis les applications à d'autres applications ou aux navigateurs
XML standardise la manière dont l'information est : échangée présentée archivée retrouvée transformée cryptée ...
SGML
XML
HTML
XHTML
A quoi peut servir XML ?
Séparer les données de leur présentation Créer de nouveaux formats de données Echanger des données entre applications Valider, stocker et rechercher des
données …
Les 10 règles de conception
XML doit pouvoir être utilisé sans difficulté sur Internet
XML doit soutenir une grande variété d'applications
XML doit être compatible avec SGML et HTML Il doit être facile d'écrire des programmes
traitant les documents XML Le nombre d'options dans XML doit être réduit
au minimum, idéalement à aucune
Les 10 règles de conception
Les documents XML doivent être lisibles par l'homme et raisonnablement clairs
La spécification de XML doit être disponible rapidement
La conception de XML doit être formelle et concise
Il doit être facile de créer des documents XML La concision dans le balisage de XML est peu
importante
Un exemple
Attribut
Commentaire
Elément « vide »
Entête
Racine
Entité
Elément
Contenu
Structure d’ArbreLivre
Titre
Chapitre
Corps
Chapitre
Titre
A
AA
…
XML « Buildings Blocks »
En tête Une déclaration: version [, encoding, standalone] Une DTD optionnelle (Document Type Definition ) (standalone = “no”)
Element Délimités par des chevrons Identifie la nature des éléments qu’ils encadrent Format classique : <element> … </element> Elément vide: <element-vide/>
Attribut Couple clé-valeur à l’intérieur d’un élément <element attribut=“valeur”>
Quelques règles de syntaxe : Tous les éléments doivent être fermés Les balises sont dépendantes de la casse Tous les documents XML doivent avoir un élément racine Les valeurs des attributs doivents être entre guillemets Les balises ne doivent pas se chevaucher
Espace de noms / Namespaces
Objectif : Eviter les conflits de noms d’élements
<my:livre xmlns:my="http://bg.free.fr/my/"> Namespace par défaut
xmlns="…« S’applique à tous les fils de l’élément sur
lequel le namespace est déclaré.
Espace de noms / Namespaces
Quelques namespaces récurrents :
Xml http://www.w3.org/XML/1998/namespace
RDF <rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-rdf-syntax#">
Dublin-core <dc:title xmlns:dc="http://purl.org/dc/">
SVG <svg xmlns="http://www.w3.org/2000/svg">
SOAP <SOAP-ENV xmlns:SOAP-NV="http://schemas.xmlsoap.org/soap/envelope/">
Schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
XHTML <xhtml:xhtml xmlns:xhtml="http://www.w3.org/1999/xhtml">
XSLT <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Validation XML
Document XML ”bien formé” Syntaxe XML Correcte
Document XML “valide” bien formé +Conforme aux règles d’une DTD, d’un XML
Schéma, etc.
DTD = Document Type Definition
La DTD fournit : la liste des éléments, la liste des attributs, des notations et des entités du document XML associé ainsi que les règles des relations qui les régissent.
DTD
DTD interne et externe
La DTD est déclarée dans le document XML par la balise !DOCTYPE
Elle peut être : incluse dans le code source du fichier XML, ou DTD
interne :<!DOCTYPE élément-racine [déclaration des éléments]>
décrite dans un fichier externe, ou DTD externe :<!DOCTYPE élément-racine SYSTEM "nom_fichier.dtd">
Un exemple de DTD
DTD «Building blocks »
Une DTD contient Une ou plusieurs définitions d’éléments introduites par la
balise !ELEMENT :<!ELEMENT nom-élément valeur>
Une ou plusieurs listes d’attributs introduites par la balise !ATTLIST:
<!ATTLIST nom-élément attribut type défaut> Une ou plusieurs définitions d’entités introduites par la balise !
ENTITY :
<!ENTITY nom-entité "valeur">
ou
<!ENTITY nom-entité SYSTEM "nom_fichier">
Combinaison d’un ou plusieurs items : Mot-clé #PCDATA (Parsed Character Data) : le contenu est
une chaîne de caractères Nom d’un autre élément de la DTD
Chaque item peut être suivi par un caractère facultatif d’occurrence : ? : l’item apparaît zéro ou au plus une fois + : l’item apparaît au moins 1 fois * : l’item apparaît zéro fois ou plus
DTD : Eléments
DTD : Eléments
Les items sont séparés par : Le caractère virgule « , » si les 2 items sont tous deux
inclus dans le contenu Le caractère pipe « | » si le contenu est un choix entre les
2 items Les items peuvent être regroupés à l’aide de
parenthèses pour définir des ordres de priorité ou d’occurrence
DTD : Eléments Exemples
<!ELEMENT livre (chapitre+)>
<!ELEMENT chapitre (titre?, corps, chapitre* image*)>
<!ELEMENT chapitre (#PCDATA)>
<!ELEMENT image EMPTY>
Définition d’un élément livre composé de un ou plus éléments chapitre.
Définition d’un élément chapitre, composé de quatre éléments : titre (facultatif), corps, chapitre (de 0 à n fois), image (de 0 à n fois)
Définition d’un élément chapitre contenant une chaîne de caractères
Définition d’un élément image de contenu vide
DTD : Attributs Déclaration dans la DTD par la balise !ATTLIST :
<!ATTLIST nom-élément nom-attribut type valeur-défaut> Où :
nom-élément est le nom d’un élément défini dans la DTD par la balise !ELEMENT
attribut est le nom de l’attribut présentement défini pour l’élément nom-élément type peut prendre l’une des valeurs:
CDATA : la valeur correspond au contenu de l’élément (choix1|choix2|…) : la valeur doit être l’une des choix énumérés ID : la valeur est un identifiant unique ENTITY : la valeur est une entité
valeur-défaut prend l’une des valeurs : valeur : valeur par défaut donnée à l’attribut #REQUIRED : attribut obligatoire, sans valeur par défaut #IMPLIED : attribut optionnel, sans valeur par défaut #FIXED valeur : valeur fixe
DTD : Attributs Exemple
<!ATTLIST image
source CDATA #REQUIRED>
Définition d’un attribut source (obligatoire) pour l’élément image
DTD : Entities
Définition d’une entité XML Une entité est une variable utilisée pour définir du texte. L'intérêt d'une entité consiste à pouvoir remplacer autant de fois que
nécessaire dans le document XML l'entité par le texte qui lui est associé.
Dans le document XML, la référence à une entité est introduite par le caractère "&" suivi du nom de l’entité, et terminée par le caractère ";". Il existe 5 entités prédéfinies en XML : lt, gt, amp, apos et quot (caractères < > & ' ")
Une entité est définie avec la balise !ENTITY, et dite: Interne si sa valeur est donnée dans la DTD
<!ENTITY nom-entité "valeur"> Externe si sa valeur est fournie dans un fichier externe à la DTD
<!ENTITY nom-entité SYSTEM "nom_fichier">
Limites des DTD
Une DTD est difficile à lire Une DTD est non extensible (ce n’est pas un
document XML). Une DTD ne permet pas de typer les
données Une DTD ne peut prendre en compte qu’un
seul espace de nom (Namespace).
Exercice : DTD
Exercice : Corrigé
XML - Schéma Une spécification du W3C (2001) pour l’écriture de règles de
validation XML Specification : http://www.w3.org/XML/Schema
Est lui même exprimé en XML (… Metalanguage …)
XML Schéma permettent de spécifier des types de données (restrictions sur les chaînes de caractères, sur des intervalles de nombres)
Ne permet pas de définir des entités comme dans les DTD.
Est externe.
Un exemple de XML Schéma
Un deuxième exemple
XSD : Elements
Déclaration des types de données : Type simple
byte, unsignedByte, hexBinary, integer, positiveInteger, negativeInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, string, NormalizedString, token, boolean, anyURI, language, time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay, etc.
Restriction de types simples
Type complexe
XSD : Elements Exemples
<xs:element name="titre" type="xs:string"/>
<xs:element name="chapitre" type="chapitreType"/>
<xs:complexType name="chapitreType">
<xs:sequence>
<xs:element ref="titre" minOccurs="0" maxOccurs="1"/>
<xs:element ref="corps" minOccurs="1" maxOccurs="1"/>
<xs:element ref="chapitre" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="image" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Définition d’un élément titre de type chaîne de caractère
Définition d’un élément chapitre, composé de quatre éléments : titre (facultatif), corps, chapitre (de 0 à n fois), image (de 0 à n fois)
XSD : Attributs
Déclaration des types de données :Type simple
byte, unsignedByte, hexBinary, integer, positiveInteger, negativeInteger, int, unsignedInt, long, unsignedLong, short, unsignedShort, decimal, float, double, string, NormalizedString, token, boolean, anyURI, language, time, dateTime, duration, date, gMonth, gYear, gYearMonth, gDay, gMonthDay, etc.
Restriction de types simples <xs:attribute name="source" type="xs:string" use="required"
value="default"/>
DTD vs XSD
La DTD permet de définir facilement et rapidement des grammaires simples.
XML-Schema permet de définir de manière plus formelle et complète une grammaire => complexité accrue.
Un document XML-Schema respecte la syntaxe XML.
Un document XML-Schema est généralement plus volumineux et encore plus difficile à lire qu’une DTD (pour un opérateur humain).
D’autres approches
Relax-NG
Schematron
Quelques utilisations d’XML
XHTML Ant / Maven Spring IOC GraphML / SVG OpenDocument et quelques autres…
XHTML
HTML + XML HTML bien formé et valide
DTDs : http://www.w3.org/TR/xhtml1/dtds.html#dtds
Ant
Un « Makefile »
pour Java Fichier Ant
en XML
Maven 2 & 3
Gestion complète du cycle de vie en Java Gestion des dépendances Java Project Object Model (POM)
Spring IOC
Inversion de contrôle Injection de valeur de propriété Java à
l’exécution par chargement de fichier XML
Spring IOC
Exemple de chargement d’une classe message contenant une chaine de caractères
GraphML
GraphML Working Group 2002
Format XML pour décrire des graphes
Orienté structure du graphe (et non pas présentation)
SVG
Scalable Vector Graphics (W3C 1999) Format XML pour décrire des images
vectorielles Permet de gérer des animations
OpenDocument
OASIS 2006 Format XML pour les documents bureautiques
(tableur, présentation, traitement de texte, etc.) OpenDocument = format des fichiers
OpenOffice Structuration en 4 parties
Contenu (content.xml) Style (style.xml) Métadonnées (meta.xml et settings.xml)
OpenDocument
Exemple de tableau
Des dizaines d‘autres
MathML : Notation mathématiques Xliff : Gestion des traductions VoiceML : Gestion du traitement de la parole WebLab : Document multimédia Office OpenXML : Document MS Office RDF/XML : Standard de représentation de connaissance BPEL : Standard de gestion de processus d’execution XMI : Representation de modèles (tels qu’UML) etc…
Conclusion
XML Séparer les données de leur présentation Créer de nouveaux formats de données Echanger des données entre applications Valider, stocker et rechercher des données
Fondement de très nombreuses technologies Utilisé au quotidien dans l’entreprise
Références
Cours de référenceJenny Benois-Pineau, Georges Gardarin,
Yves Bekkers, Khaled Khelif Livres
XML in a Nutshell, Third Edition Ed O’Reilly En ligne
http://www.w3.org/TR/xml/http://www.w3schools.com/xml/default.asp