Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Initiation à XML Sebti Foufou
2
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
3
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
4
Un document XML <?xml version="1.0" encoding="UTF-8"?>
<book isbn=" "> <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> </since> <qualification> extroverted beagle </qualification> </character> <name>Peppermint Patty</name> <since> </since> <qualification>bold, brash and tomboyish</qualification> </book>
5
Contenu XML Schemas Resources Elements v. Types Regular expressions
Expressive power Resources W3C Draft:
6
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 XML-Schema est très complexes Souvent critiqués Propositions pour d’autres alternatives
7
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))>
8
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)>
9
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
10
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
11
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
12
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”> ..</...> = (...)?
13
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
14
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>
15
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=" " 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> </dateDeNaissance> <adresse>545 Technology Square Room NE Cambridge MA USA</adresse> </ > <téléphone> </téléphone> </personne>
16
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=" " type="xsd:string"/> </xsd:choice> <xsd:element name="téléphone" type="numéroDeTéléphone"/> </xsd:sequence> </xsd:complexType>
17
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=" " 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
18
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
19
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>
20
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 ...
21
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"/>
22
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"/
23
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
24
Attributs, 2 <?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd=" <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=" "/>
25
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 !
26
Groupes d'attributs <?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd=" <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>
27
Types simple List Union
<xsd:simpleType name="numéroDeTéléphone"> <xsd:listitemType="xsd:unsignedByte"/> </xsd:simpleType> <téléphone> </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>
28
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> </listOfMyInt>
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.