bruno grilheres (eads cassidian) [email protected]

52
<XML/> Bruno GRILHERES (EADS CASSIDIAN) [email protected]

Upload: ancel-monier

Post on 04-Apr-2015

122 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

<XML/>

Bruno GRILHERES (EADS CASSIDIAN) [email protected]

Page 2: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com
Page 3: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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)

Page 4: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 5: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 6: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 7: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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.

Page 8: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 9: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 10: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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 …

Page 11: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 12: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 13: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Un exemple

Attribut

Commentaire

Elément « vide »

Entête

Racine

Entité

Elément

Contenu

Page 14: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Structure d’ArbreLivre

Titre

Chapitre

Corps

Chapitre

Titre

A

AA

Page 15: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 16: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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é.

Page 17: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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">

Page 18: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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.

Page 19: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 20: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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">

Page 21: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Un exemple de DTD

Page 22: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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">

Page 23: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 24: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 25: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 26: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 27: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

DTD : Attributs Exemple

<!ATTLIST image

source CDATA #REQUIRED>

Définition d’un attribut source (obligatoire) pour l’élément image

Page 28: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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">

Page 29: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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).

Page 30: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Exercice : DTD

Page 31: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Exercice : Corrigé

Page 32: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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.

Page 33: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Un exemple de XML Schéma

Page 34: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Un deuxième exemple

Page 35: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 36: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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)

Page 37: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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"/>

Page 38: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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).

Page 39: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

D’autres approches

Relax-NG

Schematron

Page 40: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Quelques utilisations d’XML

XHTML Ant / Maven Spring IOC GraphML / SVG OpenDocument et quelques autres…

Page 41: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

XHTML

HTML + XML HTML bien formé et valide

DTDs : http://www.w3.org/TR/xhtml1/dtds.html#dtds

Page 42: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Ant

Un « Makefile »

pour Java Fichier Ant

en XML

Page 43: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Maven 2 & 3

Gestion complète du cycle de vie en Java Gestion des dépendances Java Project Object Model (POM)

Page 44: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Spring IOC

Inversion de contrôle Injection de valeur de propriété Java à

l’exécution par chargement de fichier XML

Page 45: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

Spring IOC

Exemple de chargement d’une classe message contenant une chaine de caractères

Page 46: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

GraphML

GraphML Working Group 2002

Format XML pour décrire des graphes

Orienté structure du graphe (et non pas présentation)

Page 47: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

SVG

Scalable Vector Graphics (W3C 1999) Format XML pour décrire des images

vectorielles Permet de gérer des animations

Page 48: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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)

Page 49: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

OpenDocument

Exemple de tableau

Page 50: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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…

Page 51: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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

Page 52: Bruno GRILHERES (EADS CASSIDIAN) bruno.grilheres@cassidian.com

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