Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
8 - XML Cours XML
2
Structure en arbre Example de document XML <message> <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)
3
Structure en arbre Feuille Nom du document Element racine
4
Elements et Attributs Valeur de l’attribut to Choix lié au design
<message 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
5
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
6
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)
7
Noeuds et feuilles Noeuds Feuilles
Le noeud racine message a comme fils 4 noeuds: 3 noeuds de type attributs et de noms: to, from, subject 1 noeud de type élément et de nom text Feuilles Les feuilles de l’arbre correspondent aux valeurs des éléments et des attributs
8
Eléments vides Notation: < ... />
<message subject="XML Is Really Cool"> <flag/> <text> How many ways is XML cool? Let me count the ways... </text> </message>
9
Commentaires <!-- les commentaires sont ignorés -->
<message subject="XML Is Really Cool"> <!-- ceci est un commentaire --> <text> How many ways is XML cool? Let me count the ways... </text> </message>
10
Instructions de traitement
<?cible instructions?> Destiné à un programme cible Codage des caractères: ISO > latin-1 UTF > Unicode <?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 :-)
11
Substitutions prédéfinies
Syntaxe: &substitution; Obligatoires Facultatives > plus grand que & & ampersand < plus petit que " “ guillemets " " "
12
Pas de blancs entre ces 3 caractères
Section CDATA Les 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> Pas de blancs entre ces 3 caractères
13
Document bien formé Si et seulement si: Structure en arbre respectée +
Respect des règles de nommage
14
XML & la présentation Feuilles de style pour 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
15
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
16
Langages XML XHTML1.0: Web SVG: Scalable Vector Graphics
SMIL: Synchronized Multimedia Integration Language ebXML: Electronic Business with XML ...
17
Modélisation des données par Schémas XML
18
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
19
Validation des données
<position> <latitude> </latitude> <longitude> </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
20
Validation <position> <latitude>32.904237</latitude>
<longitude> </longitude> </position> Validateur ok! RELAX NG and XML Schema are two examples. In RELAX NG <grammar> and <define> are conceptually a map. In XML Schema Qnames are references. After all, there is a reason why we humans are writing programs by ourselves. -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 XML Schema
21
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
22
Utilisation des schémas
XML document Parser Validateur Compilateur Java/c++ . . . Data binding Reduit le temps de dévelopement Tranforme une représentation externe en une représentation interne
23
temperature Namespace
Vocabulaires Les vocabulaires sont associés avec un nom (namespace) XMLSchema Namespace temperature Namespace Schema xmlns targetNamespace temperature element name type min max complexType sequence simpleType restriction forecast_low Specifying code enumeration forecast_high C’est le vocabulaire que XMLSchema vous fournit Pour définir votre nouveau vocabulaire
24
Schéma XML <?xml version="1.0” encoding="UTF-8"?>
<xsd:schema targetNamespace=" xmlns:xsd=" xmlns=" 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> Specifying code
25
Schéma XML <?xml version="1.0” encoding="UTF-8"?>
Tous les schémas XML ont schema comme élément racine <?xml version="1.0” encoding="UTF-8"?> <xsd:schema targetNamespace=" xmlns:xsd=" xmlns=" 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> les éléments et types utilisés pour construire des schemas - schema - element - complexType - simpleType - sequence - decimal proviennent de l’espace de nom Specifying code
26
Schéma XML targetNamespace: dit que les éléments définis par ce schéma
- temperature - min - max - forecast_low - forecast_high appartiennent à ce namespace <?xml version="1.0” encoding="UTF-8"?> <xsd:schema targetNamespace=" xmlns:xsd=" xmlns=" 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> Specifying code
27
Schéma XML <?xml version="1.0” encoding="UTF-8"?>
<xsd:schema targetNamespace=" xmlns:xsd=" xmlns=" 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: qui est le targetNamespace ! Specifying code
28
QName <?xml version="1.0” encoding="UTF-8"?>
<xsd:schema targetNamespace=" xmlns:xsd=" xmlns=" elementFormDefault="qualified" > … Specifying code 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).
29
XMLSchema- instance XMLSchema-instance définit des attributs pour une utilisation directe dans les documents XML. Ces attributs se trouvent dans un espace de noms différent qui a pour nom: Le préfixe habituel est de cet espace de nom est xsi: Exemple: <root .... xmlns:xsi='' xsi:schemaLocation='' file:/tp/xschemas/wsdl.xsd'' >
30
Référence au schéma utilisé
Langage temperature Exemple de document instance <?xml version="1.0"?> <temperature xmlns=" xmlns:xsi=" xsi:schemaLocation=" temperature.xsd"> <min>-4.1</min> <max>12.7<max> <forecast_low>-6.0</forecast_low> <forecast_high>8.0</forecast_high> </temperature> Specifying code Référence au schéma utilisé
31
Validation multiple Valide que temperature.xml
XMLSchema.xsd temperature.xml temperature.xsd Valide que temperature.xml est conforme aux règles du schéma temperature.xsd Valide que le schéma est conforme aux règles du schéma des schémas
32
Cardinalité des éléments
33
ELément optionnel l’élément bb est optionnel
<xsd:schema xmlns:xsd=" > <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> l’élément bb est optionnel Par défaut: minOccurs= maxOccurs="1"
34
unbounded signifie “autant que l’on veut”
Tableau d’éléments <xsd:schema xmlns:xsd=" > <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”
35
Types prédéfinis Types Primitifs Types Atomiques – "Hello World"
– string – boolean – decimal – float – double – time – date … Types Atomiques – "Hello World" – {true, false, 1, 0} – 7.08 – E3, INF, -INF, NAN – format: hh:mm:ss.sss – format: CCYY-MM-DD …
36
Types simples de base (XML-Schema)
37
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)
38
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
39
UML
40
UML <<schema>> temperature.xsd
<<schema>> temperature.xsd Représentation d’un schéma avec son targetNameSpace
41
<<schema>>
UML temperature <<schema>> temperature.xsd Représentation d’un schéma avec son targetNameSpace et son élément racine
42
UML (schema) NameSpace racine B F d:int b e:int c:double
1 d:int b racine e:int c:double <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
43
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>
44
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
45
TP 4 à faire 3 sujets de TP sur XML, XML Schéma, XSLT sous NetBeans
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.