1 / 28

Initiation à XML

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 ‘e st apparemment du au fait que : les gens ne comprennent pas les DTDs et

reese
Download Presentation

Initiation à XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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="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> <character> <name>Peppermint Patty</name> <since>1966-08-22</since> <qualification>bold, brash and tomboyish</qualification> </character> </book>

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

  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: structureset 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

  7. Un exemple <xsd:elementname=“paper” type=“papertype”/> <xsd:complexTypename=“papertype”> <xsd:sequence> <xsd:elementname=“title” type=“xsd:string”/> <xsd:elementname=“author” minOccurs=“0”type=“xsd:string”/> <xsd:elementname=“year”type=“xsd:string”/> <xsd:choice> < xsd:elementname=“journal”type=“xsd:string”/> <xsd:elementname=“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:elementname=“person”> <xsd:complexType> <xsd:sequence> <xsd:elementname=“name”type=“xsd:string”/> <xsd:elementname=“address”type=“xsd:string”/> </xsd:sequence> </xsd:complexType></xsd:element> <xsd:elementname=“person”type=“ttt”><xsd:complexType name=“ttt”> <xsd:sequence> <xsd:elementname=“name” type=“xsd:string”/> <xsd:elementname=“address” type=“xsd:string”/> </xsd:sequence></xsd:complexType> DTD: <!ELEMENT person (name,address)>

  9. Eléments Vs types 2 • Types: • 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:elementname=“person”> [définit localement le type person] </xsd:element> • Type global: <xsd:elementname=“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 • Elément local : <xsd:complexType name=“ttt”> <xsd:sequence> <xsd:elementname=“address” type=“...”/>... </xsd:sequence> </xsd:complexType> • Elément global : <xsd:elementname=“address” type=“...”/> <xsd:complexType name=“ttt”> <xsd:sequence><xsd:elementref=“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:elementname=“person”> <xsd:complexType> . . . . . <xsd:elementname=“name”> <xsd:complexType> <xsd:sequence> <xsd:elementname=“firstname” type=“xsd:string”/> <xsd:elementname=“lastname” type=“xsd:string”/> </xsd:sequence></xsd:complexType> </xsd:element> . . . . </xsd:complexType></xsd:element> <xsd:elementname=“product”> <xsd:complexType> . . . . . <xsd:elementname=“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:complexTypename="PurchaseOrderType"> <xsd:all> <xsd:elementname="shipTo" type="USAddress"/> <xsd:elementname="billTo" type="USAddress"/> <xsd:elementref="comment" minOccurs="0"/> <xsd:elementname="items" type="Items"/> </xsd:all> <xsd:attributename="orderDate" type="xsd:date"/> </xsd:complexType>

  15. sequence <xsd:complexTypename="typePersonne"> <xsd:sequence> <xsd:elementname="nom"type="xsd:string"/> <xsd:elementname="prénom"type="xsd:string"/> <xsd:elementname="dateDeNaissance"type="xsd:date"/> <xsd:elementname="adresse"type="xsd:string"/> <xsd:elementname="email"type="xsd:string"/> <xsd:elementname="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>

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

  17. all <xsd:complexTypename="typePersonne"> <xsd:all> <xsd:elementname="nom"type="xsd:string"/> <xsd:elementname="prénom"type="xsd:string"/> <xsd:elementname="dateDeNaissance"type="xsd:date"/> <xsd:elementname="adresse"type="xsd:string"/> <xsd:elementname="email"type="xsd:string"/> <xsd:elementname="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 <complexTypename="Address"> <sequence> <elementname="street" type="string"/> <elementname="city" type="string"/> </sequence> </complexType> <complexTypename="USAddress"> <complexContent> <extensionbase="ipo:Address"> <sequence> <elementname="state" type="ipo:USState"/> <elementname="zip" type="positiveInteger"/> </sequence> </extension> </complexContent> </complexType> • Notion d’héritage

  19. Type dérivés par extension, 2 <xsd:elementname="salaire"type="typeSalaire"/> <xsd:complexTypename="typeSalaire"> <xsd:simpleContent> <xsd:extensionbase="xsd:positiveInteger"> <xsd:attributename="devise"type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> • Exemple : <salairedevise="USD">2918</salaire>

  20. Type dérivés par restriction <complexContent> <restrictionbase="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:complexTypename="typeSalaire"> <xsd:attributename="devise"type="xsd:string"/> <xsd:attributename="montant"type="xsd:positiveInteger"/> </xsd:complexType> • Exemple <salairedevise="USD"montant="2918"/>

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

  23. Attributs <xsd:elementname=“paper” type=“papertype”/> <xsd:complexTypename=“papertype”> <xsd:sequence> <xsd:elementname=“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:schemaxmlns:xsd="http://www.w3.org/2000/10/XMLSchema"> <xsd:elementname="contacts"type="typeContacts"/> <xsd:elementname="remarque"type="xsd:string"/> <xsd:complexTypename="typeContacts"> <!--déclarations du modèle de contenu ici--> <xsd:attributename="maj"type="xsd:date"/> </xsd:complexType> </xsd:schema> • Exemple : l'attribut majest optionnel, avec une valeur par défaut au 31 décembre 2000 s'il n'apparaît pas <xsd:attributename="maj"type="xsd:date"use="default"value="2000-12-31"/>

  25. Attributs, 3

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

  27. Types simple • List <xsd:simpleTypename="numéroDeTéléphone"> <xsd:listitemType="xsd:unsignedByte"/> </xsd:simpleType> <téléphone>02 24 15 74 48</téléphone> • Union <xsd:simpleTypename="numéroDeTéléphoneMémoTechnique"> <xsd:unionmemberTypes="xsd:string numéroDeTéléphone"/> </xsd:simpleType> <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>20003 15037 95977 95945</listOfMyInt>

More Related