8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com |...

Post on 04-Apr-2015

138 views 0 download

Transcript of 8 - XML Cours XML. Structure en arbre | Example de document XML | | you@yourAddress.com |...

8 -

XML

CoursXML

Structure en arbre| Example de document XML| <message>|  <to>you@yourAddress.com</to>|   <from>me@myAddress.com</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)

Structure en arbre

Nom du document

Element racine

Feuille

Elements et Attributs

| Choix lié au design

• | <message to="you@yourAddress.com"

from="me@myAddress.com" |      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

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

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)

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

Eléments vides

<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"><flag/> <text> How many ways is XML cool? Let me

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

Notation: < ... />

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

<message to="you@yourAddress.com" from="me@myAddress.com" subject="XML Is Really Cool"> <!-- ceci est un commentaire --> <text> How many ways is XML cool? Let me

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

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

Substitutions prédéfinies

Syntaxe: &substitution;Syntaxe: &substitution;

&gt; >plus grand

que

&amp;

& ampersand

Obligatoires Facultatives

&lt; <plus petit

que

&quot;

“ guillemets

"""

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>

Document bien formé

Si et seulement si:

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

nommage

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

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

Langages XML

ebXML: Electronic Business with XML

...

SVG: Scalable Vector Graphics

SMIL: Synchronized Multimedia Integration Language

XHTML1.0: Web

Modélisation des données par Schémas 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

<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

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

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

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

. . .

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

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>

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

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

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 !

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

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

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é

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

Cardinalité des éléments

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

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”

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…

Types simples de base (XML-Schema)

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)

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

UML

UML

<<schema>>temperature.xsd

http://schemas/temperature

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

UML

<<schema>>temperature.xsd

http://schemas/temperature

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

temperature

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

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>

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

TP 4 à faire

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