8 - xml cours xml. structure en arbre | example de document xml | | [email protected] |...

45

Upload: anatole-perron

Post on 04-Apr-2015

142 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

8 -

XML

CoursXML

Page 2: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Structure en arbre| Example de document XML| <message>|  <to>[email protected]</to>|   <from>[email protected]</from>|   <subject>XML Is Really Cool</subject>|   <text>|   How many ways is XML cool? Let me count the ways...|   </text>| </message>

Présence obligatoire d’un élément racine (qui contient

tous les autres)

Présence obligatoire d’un élément racine (qui contient

tous les autres)

Page 3: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Structure en arbre

Nom du document

Element racine

Feuille

Page 4: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Elements et Attributs

| Choix lié au design

• | <message to="[email protected]"

from="[email protected]" |      subject="XML Is Really Cool"> |   <text>|     How many ways is XML cool? Let me count the

ways...|   </text>| </message>

Valeur de l’attribut to

Fin de l’element message

Page 5: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Noms | Libre avec certaines règles

| Pas d’espaces, pas d’accents| Premier caractère alphabétique| …

| Noms sensibles aux majuscules-minuscules

| Noms composés avec le caractère - autorisés: exemple: ordre-achat

Page 6: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Noms qualifiés :QName

•Noms avec préfixe (Qualified Name)

•exemple: xsd:element, svg:rectangle

•Ils évitent les collisions de noms (notion d’espace de noms)

Page 7: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Noeuds et feuilles

Le noeud racine message a comme fils 4 noeuds:3 noeuds de type attributs et de noms: to, from, subject1 noeud de type élément et de nom text

Noeuds

FeuillesLes feuilles de l’arbre correspondent aux valeurs des éléments et des attributs

Page 8: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Eléments vides

<message to="[email protected]" from="[email protected]" subject="XML Is Really Cool"><flag/> <text> How many ways is XML cool? Let me

count the ways... </text></message>

Notation: < ... />

Page 9: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Commentaires<!-- les commentaires sont ignorés --><!-- les commentaires sont ignorés -->

<message to="[email protected]" from="[email protected]" subject="XML Is Really Cool"> <!-- ceci est un commentaire --> <text> How many ways is XML cool? Let me

count the ways... </text></message>

Page 10: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Instructions de traitement

<?cible instructions?>Destiné à un programme cible<?cible instructions?>Destiné à un programme cible

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

Les documents XML peuvent contenir des caractères français ( êèé…). Pour que le parser XML les comprenne, il est conseillé de sauver vos documents en Unicode avec un éditeur compréhensif :-)

Codage des caractères:

ISO-8859-1 ---> latin-1UTF-8 ---> Unicode

Page 11: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Substitutions prédéfinies

Syntaxe: &substitution;Syntaxe: &substitution;

&gt; >plus grand

que

&amp;

& ampersand

Obligatoires Facultatives

&lt; <plus petit

que

&quot;

“ guillemets

"""

Page 12: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Section CDATA

Pas de blancs entre ces 3 caractères

Les caractères d’une section CDATA ne sont pas analysés par le parserLes caractères d’une section CDATA ne sont pas analysés par le parser

<script><![CDATA[

function matchwo(a,b){ if (a < b && a < 0) then return 1; else return 0 }

]]> </script>

Page 13: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Document bien formé

Si et seulement si:

Structure en arbre respectée +Respect des règles de

nommage

Page 14: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

XML & la présentation

Langage XSLT de transformation de page:

XSLT transforme un document XML vers un document XML, PDF, HTML, TEXTE, …

Langage push-pull à base de règles

Feuilles de style pour la présentationFeuilles de style pour la présentation

Page 15: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

XML et la programmation

| Traitement de données locales ou sur réseau | Programmation par documents XML spécifiant une composition de composants

| Binding: génération automatique à partir d’un schéma d’une partie importante de l’application

Page 16: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Langages XML

ebXML: Electronic Business with XML

...

SVG: Scalable Vector Graphics

SMIL: Synchronized Multimedia Integration Language

XHTML1.0: Web

Page 17: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Modélisation des données par Schémas XML

Page 18: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Définition | Un schéma XML déclare:

| Un vocabulaire | Un ensemble de règles

(grammaire) précisant comment utiliser les mots du vocabulaire

| Un schéma XML sert:| De modèle pour la création de

documents XML. Ces documents sont appelés documents instances

Page 19: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

<position> <latitude>32.904237 </latitude> <longitude>73.620290 </longitude></position>| Validité de cette donnée ?

| La latitude doit être présente et comprise entre -90 et +90

| La longitude doit être présente et comprise entre -180 et +180

Validation des données

Page 20: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Validation

XML Schema

ok!Validateur

<position> <latitude>32.904237</latitude> <longitude>73.620290</longitude></position>

-Vérifier que l’on a une latitude et une longitude-Vérifier que la latitude est comprise entre -90 and +90-Vérifier que la longitude est comprise entre -180 and +180

Page 21: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Schémas

| Spécification | De la structure des documents

instance| Du type des éléments et attributs

| Schémas les plus utilisés| Relax-NG | XML-Schema

Page 22: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Utilisation des schémas

| Data binding| Reduit le temps de dévelopement| Tranforme une représentation externe en une

représentation interne

ParserValidateurCompilateur

XMLdocument

Java/c++

. . .

Page 23: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Vocabulaires

C’est le vocabulaire que XMLSchema vous fournitPour définir votre nouveau vocabulaire

Schema

element typename

targetNamespace

simpleTyperestriction

complexType

enumeration

sequence

xmlns

temperature

min max

forecast_low

forecast_high

Les vocabulaires sont associés avec un nom (namespace)

XMLSchema Namespace

temperature Namespace

Page 24: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Schéma XML

<?xml version="1.0” encoding="UTF-8"?><xsd:schema targetNamespace="http://schemas/temperature" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas/temperature” elementFormDefault="qualified" >

<xsd:element name="temperature" type="Temperature"/>

<xsd:complexType name="Temperature"> <xsd:sequence> <xsd:element name="min" type="DegreeRange"/> <xsd:element name="max" type="DegreeRange"/> <xsd:element name="forecast-low" type="DegreeRange"/> <xsd:element name="forecast-high" type="DegreeRange"/> </xsd:sequence></xsd:complexType> 

<xsd:simpleType name="DegreeRange" > <xsd:restriction base="xsd:decimal"> <xsd:minInclusive value="-70"/> <xsd:maxInclusive value="80"/> </xsd:restriction></xsd:simpleType>

</xsd:schema>

Page 25: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Schéma XML

<?xml version="1.0” encoding="UTF-8"?><xsd:schema targetNamespace="http://schemas/temperature" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas/temperature” elementFormDefault="qualified" >

<xsd:element name="temperature" type="Temperature"/>

<xsd:complexType name="Temperature"> <xsd:sequence> <xsd:element name="min" type="DegreeRange"/> <xsd:element name="max" type="DegreeRange"/> <xsd:element name="forecast-low" type="DegreeRange"/> <xsd:element name="forecast-high" type="DegreeRange"/> </xsd:sequence></xsd:complexType> 

<xsd:simpleType name="DegreeRange" > <xsd:restriction base="xsd:decimal"> <xsd:minInclusive value="-70"/> <xsd:maxInclusive value="80"/> </xsd:restriction></xsd:simpleType>

</xsd:schema>

Tous les schémas XML ont schema comme élément racine

les éléments et types utilisés pour construire des schemas - schema - element - complexType - simpleType - sequence - decimal.........proviennent de l’espace de nom http://…/XMLSchema

Page 26: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Schéma XML <?xml version="1.0” encoding="UTF-8"?>

<xsd:schema targetNamespace="http://schemas/temperature" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas/temperature” elementFormDefault="qualified" >

<xsd:element name="temperature" type="Temperature"/>

<xsd:complexType name="Temperature"> <xsd:sequence> <xsd:element name="min" type="DegreeRange"/> <xsd:element name="max" type="DegreeRange"/> <xsd:element name="forecast-low" type="DegreeRange"/> <xsd:element name="forecast-high" type="DegreeRange"/> </xsd:sequence></xsd:complexType> 

<xsd:simpleType name="DegreeRange" ><xsd:restriction base="xsd:decimal">

<xsd:minInclusive value="-70"/><xsd:maxInclusive value="80"/>

</xsd:restriction></xsd:simpleType>

</xsd:schema>

targetNamespace: dit que leséléments définis par ce schéma - temperature - min - max - forecast_low - forecast_high appartiennentà ce namespace

Page 27: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Schéma XML

<?xml version="1.0” encoding="UTF-8"?><xsd:schema targetNamespace="http://schemas/temperature" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://schemas/temperature”elementFormDefault="qualified" >

<xsd:element name="temperature" type="Temperature"/>

<xsd:complexType name="Temperature"><xsd:sequence>

<xsd:element name="min" type="DegreeRange"/><xsd:element name="max" type="DegreeRange"/><xsd:element name="forecast-low" type="DegreeRange"/><xsd:element name="forecast-high" type="DegreeRange"/>

</xsd:sequence></xsd:complexType> 

<xsd:simpleType name="DegreeRange" ><xsd:restriction base="xsd:decimal">

<xsd:minInclusive value="-70"/><xsd:maxInclusive value="80"/>

</xsd:restriction></xsd:simpleType></xsd:schema>

Le namespace par défaut est:http://schemas/temperaturequi est le targetNamespace !

Page 28: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

QName

<?xml version="1.0” encoding="UTF-8"?><xsd:schema targetNamespace="http://schemas/temperature" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas/temperature” elementFormDefault="qualified" >…

C’est une directive pour tous les documents instance se conformantà ce schéma: tous les éléments utilisés par le document instance qui étaient déclarés dans ce schéma doivent être namespace qualified (préfixés).

Page 29: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

XMLSchema-instance

XMLSchema-instance définit des attributs pour une utilisationdirecte dans les documents XML.

Ces attributs se trouvent dans un espace de noms différent qui a pour nom:http://www.w3.org/2001/XMLSchema-instanceLe préfixe habituel est de cet espace de nom est xsi:Exemple: <root....xmlns:xsi=''http://www.w3.org/2001/XMLSchema-instance''xsi:schemaLocation=''http://schemas.xmlsoap.org/wsdl/ file:/tp/xschemas/wsdl.xsd''>

Page 30: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Langage temperature

| Exemple de document instance

<?xml version="1.0"?><temperature xmlns="http://schemas/temperature" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas/temperature temperature.xsd">

<min>-4.1</min> <max>12.7<max> <forecast_low>-6.0</forecast_low> <forecast_high>8.0</forecast_high> </temperature>

Référence au schéma utilisé

Page 31: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Validation multiple

temperature.xml temperature.xsdXMLSchema.xsd

Valide que temperature.xmlest conforme aux règles du schéma temperature.xsd

Valide que le schéma est conforme aux règlesdu schéma des schémas

Page 32: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Cardinalité des éléments

Page 33: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

ELément optionnel

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >   <xsd:element name="aa">     <xsd:complexType name="AaType">       <xsd:sequence >         <xsd:element name="bb"B minOccurs="0"maxOccurs="1"Btype="xsd:string"/>         <xsd:element name="cc" Ctype="xsd:string"/>       </xsd:sequence>     </xsd:complexType>   </xsd:element> </xsd:schema>

Par défaut: minOccurs= maxOccurs="1"

l’élément bb est optionnel

Page 34: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Tableau d’éléments

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >   <xsd:element name="aa">     <xsd:complexType name="AaType">       <xsd:sequence >         <xsd:element name="bb"B minOccurs="0"maxOccurs="3"Btype="xsd:string"/>         <xsd:element name="cc" maxOccurs="unbounded" type="xsd:string"/>       </xsd:sequence>     </xsd:complexType>   </xsd:element> </xsd:schema>

unbounded signifie “autant que l’on veut”

Page 35: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Types prédéfinisTypes Primitifs– string– boolean– decimal– float– double– time– date…

Types Atomiques– "Hello World"– {true, false, 1, 0}– 7.08– 12.56E3, INF, -INF, NAN – 12.56E3, INF, -INF, NAN – format: hh:mm:ss.sss– format: CCYY-MM-DD…

Page 36: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Types simples de base (XML-Schema)

Page 37: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Types simples ou complexes

| Utilisez l’élément complexType quand vous voulez définir des éléments fils et/ou des attributs d’un élément

| Utilisez l’élément simpleType quand vous voulez créer un nouveau type qui soit une spécialisation d’un type simple prédéfini (string, date, décimal, etc)

Page 38: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Types anonymes et nommés

<xsd:element name="a" type="Foo"/> <xsd:complexType name=”Foo"> <xsd:sequence> <xsd:element name="b" …/> <xsd:element name="c" …/> </xsd:sequence> </xsd:complexType></xsd:element>

<xsd:element name="a"> <xsd:complexType> <xsd:sequence> <xsd:element name="b" …/> <xsd:element name="c" …/> </xsd:sequence> </xsd:complexType></xsd:element>

équivalent

Page 39: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

UML

Page 40: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

UML

<<schema>>temperature.xsd

http://schemas/temperature

Représentation d’un schéma avec son targetNameSpace

Page 41: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

UML

<<schema>>temperature.xsd

http://schemas/temperature

Représentation d’un schéma avec son targetNameSpace et son élément racine

temperature

Page 42: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

UML (schema) F

c:double

B

d:int

e:int

1b

<xsd:complexType name=”F”> <xsd:sequence> <xsd:element name="b" type="B"/> <xsd:element name="c” type="xsd:double"/> </xsd:sequence></xsd:complexType

<xsd:complexType name=B”> <xsd:sequence> <xsd:element name="d" type="xsd:int"/> <xsd:element name="e” type="xsd:int"/> </xsd:sequence></xsd:complexType

NameSpace

racine

Page 43: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

UML (schema)•Types, éléments &

attributs<xsd:complexType name="Part">

<xsd:sequence><xsd:element name="name"

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

type="xsd:decimal" /></xsd:sequence><xsd:attribute name="partID"

type="xsd:token" /><xsd:attribute name="inStock"

type="xsd:positiveInteger" /></xs:complexType>

Page 44: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

Conclusion•XML et XML-Schema vont nous permettre de

décrire des données complexes

•Un XML-Schema est un modèle d’une classe de données

•Un document XML est une instance de ce modèle

Page 45: 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com | me@myAddress.com | XML Is Really Cool | | How many ways is XML

TP 4 à faire

•3 sujets de TP sur XML, XML Schéma, XSLT sous NetBeans