Initiation à XML Sebti Foufou.

Slides:



Advertisements
Présentations similaires
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
Advertisements

Introduction aux Web Services Partie 1. Technologies XML
Approche graphique du nombre dérivé
XML eXtensible Markup Language
Portée des variables VBA & Excel
DTD Sylvain Salvati
Corese Moteur de recherche sémantique pour RDF
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Le langage de requêtes SPARQL SPARQL Protocol And RDF Query Language
Calcul géométrique avec des données incertaines
Projet de Base de Données Groupe Moteur encadré par Mr MAINGUENAUD KikiTeam – ASI3 – 19 / 06 / 2002 Soizic Geslin Minh Le Hoai Samy Fouilleux Maxime Chambreuil.
Cours MIAGE Henry Boccon-Gibod1 XML, langage de structuration Modélisation structurelle en XML de Messages et de Documents.
Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Modélisation structurelle de Messages e t de Documents en XML XML Schema.
Les espaces de nommage XML par Philippe Poulard 1
XML schema Objectifs Valider un doc. XML pour des contraintes syntaxiques Documenter un type de documents XML caractérisé par des contraintes Encadrer.
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
le langage les éléments
Le typage orienté objet pour les données XML
Nicolas Singer Maître de conférence, université Champollion
TP 3-4 BD21.
Manipulation d’XML avec XSL
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Langage SysML.
Introduction aux Web Services Partie 1. Technologies HTML-XML
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Langages du Web Sémantique
Expressions et assignations
Définition d’un maillon de liste
Classes abstraites et Interfaces
L’utilisation des bases de données
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Complément Le diagramme des classes
Test bilan de calcul mental N°1 :
Introduction au XML Choopan Rattanapoka Université Louis-Pasteur, Starsbourg.
<XML/> Bruno GRILHERES (EADS CASSIDIAN)
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Cours N°2 Base de Données & Langage SQL
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
Web sémantique : Web de demain
Quelle heure est-il ??. THE TIME: OCLOCK IL EST HEURE IL EST + + HEURES etc.
Introduction à l’algèbre
BLOGS (carnets web, cybercarnets) Didactiques des NTICS.
Méthodes de prévision (STT-3220)
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Cotation au maximum de matière
8 - XML Cours XML.
Le Langage XML Belkhir Abdelkader Laboratoire LSI USTHB
1 Modèle pédagogique d’un système d’apprentissage (SA)
Le langage XHTML 420-S4W-GG Programmation Web Client
Voici les mouvements de Mars et de la Terre dans le référentiel héliocentrique Sens de rotation LE SOLEIL MARS LA TERRE.
Soirée du Questions et Recommandations.
Les Réseaux Le modèle à 7 couches
XML et son usage dans la DMFA
Identification des manifestations et des items Quiz.
Introduction à XML Généralités.
Formation instituteurs Séquence : Tu assimiles de nouvelles connaissances Cours du Professeur Iacobellis
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
Le langage XML.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Les Schémas XML Le standard W3C.
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Programmation Web : Introduction à XML
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Seminaire XML B. Rothenburger A. Nouvel XML XSD XSL IRIT Toulouse Disponible Consultable dans l'équipe 21...
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Modélisation des documents: DTD et Schéma
XSD XML Schema Definition Année universitaire UP web.
eXtensible Markup Language. Généralités sur le XML.
ACCARY-BARBIER / CNAM - Cycle C ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath.
Jean Vieille Research community Consulting group
Transcription de la présentation:

Initiation à XML Sebti Foufou

Les DTD souvent incorrectes La majorité des DTDs sont incorrectes elements qui manquent erreurs de syntaxe incompatibilté dans la déclaration des attributes C ‘est apparemment du au fait que : les gens ne comprennent pas les DTDs et le standard est flou sur ce qui est obligatoire et ce qui ne l’est pas. Mais si les DTDs sont incorrectes, cela vaut-il la peine de valider les documents ? Une DTD n’est pas toujours représentée par un graphe connexe : racines multiples, utilisation de ANY

Les DTD ce qui ne va pas ? trop orientées document DTDs créées à l’origine pour le traitement de texte trop simples et trop compliquées à la fois trop limitées pour représenter des structures complexes aucun typage pour IDREF pas de notion de tuple pas de notion de typage, de sous-typage et d’héritage ambiguité au niveau des content-models trop de façon différentes de représenter la même chose noms globaux et pas locaux pas de mécanismes pour gérer les versions, permettre l’extension et l’évolution

Un document XML <?xml version="1.0" encoding="UTF-8"?> <book isbn="0836217462"> <title> Being a Dog Is a Full-Time Job </title> <author>Charles M. Schulz</author> <character> <name>Snoopy</name> <friend-of>Peppermint Patty</friend-of> <since>1950-10-04</since> <qualification> extroverted beagle </qualification> </character> <name>Peppermint Patty</name> <since>1966-08-22</since> <qualification>bold, brash and tomboyish</qualification> </book>

Contenu XML Schemas Resources Elements v. Types Regular expressions Expressive power Resources W3C Draft: www.w3.org/TR/2001/REC-xmlschema-1-20010502

Schema XML http://www.w3.org/TR/xmlschema-1/10/2000 Généralise les DTDs Utilise une syntaxe XML Deux documents de 3WC: structures et datatypes http://www.w3.org/TR/xmlschema-1 http://www.w3.org/TR/xmlschema-2 XML-Schema est très complexes Souvent critiqués Propositions pour d’autres alternatives

DTD: <!ELEMENT paper (title,author*,year, (journal|conference))> Un exemple <xsd:element name=“paper” type=“papertype”/> <xsd:complexType name=“papertype”> <xsd:sequence> <xsd:element name=“title” type=“xsd:string”/> <xsd:element name=“author” minOccurs=“0” type=“xsd:string”/> <xsd:element name=“year” type=“xsd:string”/> <xsd: choice> < xsd:element name=“journal” type=“xsd:string”/> <xsd:element name=“conference” type=“xsd:string”/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> DTD: <!ELEMENT paper (title,author*,year, (journal|conference))>

Elements v.s. Types <xsd:element name=“person”> <xsd:complexType> <xsd:sequence> <xsd:element name=“name” type=“xsd:string”/> <xsd:element name=“address” type=“xsd:string”/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name=“person” type=“ttt”> <xsd:complexType name=“ttt”> <xsd:sequence> <xsd:element name=“name” type=“xsd:string”/> <xsd:element name=“address” type=“xsd:string”/> </xsd:sequence> </xsd:complexType> DTD: <!ELEMENT person (name,address)>

Eléments Vs types 2 Types: Elément-type-élément : Types simples (integers, strings, ...) Types complexes (expressions régulière, comme dans les DTDs) Elément-type-élément : L’élément root est un type complexe Ce type complexe est une expression régulière d’éléments Ces même élément ont leurs propres types complexes... Aux feuilles de l’arbre on retrouve les types simples

Types: Local ou global Type local: <xsd:element name=“person”> [définit localement le type person] </xsd:element> Type global: <xsd:element name=“person” type=“ttt”/> <xsd:complexType name=“ttt”> [définit ici le type ttt] </xsd:complexType> Type global : peut être re-utilisé pour définir d’autres types

Elément: Local ou global <xsd:complexType name=“ttt”> <xsd:sequence> <xsd:element name=“address” type=“...”/>... </xsd:sequence> </xsd:complexType> Elément global : <xsd:element name=“address” type=“...”/> <xsd:complexType name=“ttt”> <xsd:sequence> <xsd:element ref=“address”/> ... </xsd:sequence> </xsd:complexType> Elément global : même rôle que dans les DTDs

Expressions régulières Recall the element-type-element alternation: <xsd:complexType name=“....”> [une expression régulière d’éléments] </xsd:complexType> Expressions régulières : <xsd:sequence> A B C </...> = A B C <xsd:choice> A B C </...> = A | B | C <xsd:group> A B C </...> = (A B C) <xsd:... minOccurs=“0” maxOccurs=“unbounded”> ..</...> = (...)* <xsd:... minOccurs=“0” maxOccurs=“1”> ..</...> = (...)?

Portée des noms <xsd:element name=“person”> <xsd:complexType> . . . . . <xsd:element name=“name”> <xsd:complexType> <xsd:sequence> <xsd:element name=“firstname” type=“xsd:string”/> <xsd:element name=“lastname” type=“xsd:string”/> </xsd:sequence> </xsd:complexType> </xsd:element> . . . . </xsd:complexType> </xsd:element> <xsd:element name=“product”> <xsd:complexType> . . . . . <xsd:element name=“name” type=“xsd:string”/> </xsd:complexType> </xsd:element> L’élément name n’a pas la même signification dans person et dans product

Types complexes 3 constructeurs pour définir les sous éléments d’un éléments : sequence choice all <xsd:complexType name="PurchaseOrderType"> <xsd:all> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:all> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType>

sequence <xsd:complexType name="typePersonne">      <xsd:sequence>           <xsd:element name="nom" type="xsd:string"/>           <xsd:element name="prénom" type="xsd:string"/>           <xsd:element name="dateDeNaissance" type="xsd:date"/>           <xsd:element name="adresse" type="xsd:string"/>           <xsd:element name="email" type="xsd:string"/>           <xsd:element name="téléphone" type="numéroDeTéléphone"/>      </xsd:sequence> </xsd:complexType>  Exemple : <personne>      <nom>Berners-Lee</nom>      <prénom>Tim</prénom>      <dateDeNaissance>1955-06-08</dateDeNaissance>      <adresse>545 Technology Square Room NE43-356 Cambridge MA 02139 USA</adresse>      <email>timbl@w3.org </email>      <téléphone>617 253 5702 </téléphone> </personne>

choice <xsd:complexType name="typePersonne">      <xsd:sequence>           <xsd:element name="nom" type="xsd:string"/>           <xsd:element name="prénom" type="xsd:string"/>           <xsd:element name="dateDeNaissance" type="xsd:date"/>             <xsd:choice>                <xsd:element name="adresse" type="xsd:string"/>                <xsd:element name="email" type="xsd:string"/>           </xsd:choice>           <xsd:element name="téléphone" type="numéroDeTéléphone"/>      </xsd:sequence> </xsd:complexType>

all <xsd:complexType name="typePersonne"> <xsd:all>           <xsd:element name="nom" type="xsd:string"/>           <xsd:element name="prénom" type="xsd:string"/>           <xsd:element name="dateDeNaissance" type="xsd:date"/>           <xsd:element name="adresse" type="xsd:string"/>           <xsd:element name="email" type="xsd:string"/>           <xsd:element name="téléphone" type="numéroDeTéléphone"/>      </xsd:all> </xsd:complexType> C’est l’équivalent de séquence avec minOccurs='0' et maxOccurs='1‘. Les fils de l'éléments peuvent apparaître, dans n’importe quel ordre, au plus une fois, c'est à dire que la contrainte d'occurrence maximum est égale à 1 et la contrainte d'occurrence minimum est égale à 0

Type dérivés par extension <complexType name="Address"> <sequence> <element name="street" type="string"/> <element name="city" type="string"/> </sequence> </complexType> <complexType name="USAddress"> <complexContent> <extension base="ipo:Address"> <sequence> <element name="state" type="ipo:USState"/> <element name="zip" type="positiveInteger"/> </extension> </complexContent> Notion d’héritage

Type dérivés par extension, 2 <xsd:element name="salaire" type="typeSalaire"/>   <xsd:complexType name="typeSalaire">      <xsd:simpleContent>           <xsd:extension base="xsd:positiveInteger">                <xsd:attribute name="devise" type="xsd:string"/>           </xsd:extension>      </xsd:simpleContent> </xsd:complexType> Exemple : <salaire devise="USD">2918</salaire>

Type dérivés par restriction <complexContent> <restriction base="ipo:Items“> … [réécrire le contenu avec les restrictions]... </restriction> </complexContent> Types simples : String, Token, Byte, unsignedByte, Integer, positiveInteger Int (larger than integer), unsignedInt, Long, Short Time, dateTime, Duration, Date, ID, IDREF, IDREFS ...

Type complexe vide <xsd:complexType name="typeSalaire">      <xsd:attribute name="devise" type="xsd:string"/>      <xsd:attribute name="montant" type="xsd:positiveInteger"/> </xsd:complexType>   Exemple <salaire devise="USD" montant="2918"/>

Contenu “Mixed”, Type “Any” Contenu mixte : mieux que dans les DTDs, du texte peut etre insere entre les elements <xsd:complexType mixed="true"> . . . . Type Any : veut dire que tout est autorisé <xsd:element name="anything" type="xsd:anyType"/ . . . .

Attributs Associés aux types et non pas aux éléments. <xsd:element name=“paper” type=“papertype”/> <xsd:complexType name=“papertype”> <xsd:sequence> <xsd:element name=“title” type=“xsd:string”/> . . . . . . </xsd:sequence> <xsd:attribute name=“language" type="xsd:NMTOKEN" fixed=“English"/> </xsd:complexType> Associés aux types et non pas aux éléments. Uniquement aux types complexes Ajout difficile d’attributs à des types simples

Attributs, 2 <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">      <xsd:element name="contacts" type="typeContacts"/>      <xsd:element name="remarque" type="xsd:string"/>           <xsd:complexType name="typeContacts">           <!--déclarations du modèle de contenu ici-->           <xsd:attribute name="maj" type="xsd:date"/>      </xsd:complexType> </xsd:schema>  Exemple : l'attribut maj est optionnel, avec une valeur par défaut au 31 décembre 2000 s'il n'apparaît pas <xsd:attribute name="maj" type="xsd:date" use="default" value="2000-12-31"/>

Attributs, 3 use value Effet required - L'attribut doit apparaître, en prenant n'importe quelle valeur 8 l'attribut doit apparaître, en prenant comme valeur 8 optional l'attribut peut apparaître, il peut avoir n'importe quelle valeur fixed l'attribut peut apparaître, s'il est présent sa valeur doit être 8, s'il n'apparaît pas sa valeur est 8 default l'attribut peut apparaître, s'il n'est pas présent sa valeur est 8, autrement sa valeur est celle donnée prohebited l'attribut ne doit pas apparaître !

Groupes d'attributs <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">           <xsd:element name="contacts" type="typeContacts"/>      <xsd:element name="remarque" type="xsd:string"/>      <xsd:complexType name="typeContacts">           <!--déclarations du modèle de contenu ici-->           <xsd:attributeGroup ref="InfosMaj"/>      </xsd:complexType>        <xsd:attributeGroup name="InfosMaj">           <xsd:attribute name="maj" type="xsd:date"/>           <xsd:attribute name="auteur" type="xsd:string"/>      </xsd:attributeGroup> </xsd:schema>

Types simple List Union <xsd:simpleType name="numéroDeTéléphone">      <xsd:listitemType="xsd:unsignedByte"/> </xsd:simpleType> <téléphone>02 24 15 74 48</téléphone> Union  <xsd:simpleType name="numéroDeTéléphoneMémoTechnique">      <xsd:unionmemberTypes="xsd:string numéroDeTéléphone"/> <téléphone>18</téléphone> <téléphone>Les Pompiers</téléphone>

Les facets Facets = des propriétés supplémentaires pour restreindre un type simple 15 facets définis par XML Schema Length, minLength, maxLength, pattern, enumeration , whiteSpace maxInclusive, maxExclusive, minInclusive, minExclusive, totalDigits, fractionDigits Restriction = un sous ensemble d’un type simple donnée Types simples peuvent être des restrictions, des unions ou des listes <xsd:simpleType name="listOfMyIntType"> <xsd:list itemType="myInteger"/> </xsd:simpleType> <listOfMyInt>20003 15037 95977 95945</listOfMyInt>