Les schémas XML
Transcription
Les schémas XML
L'Altruiste : Le guide des langages Web - Les schémas XML L'Altruiste : Le guide des langages Web Les schémas XML Sommaire 1 / Introduction 2 / XML Schema Definition 2.1 / Les types de données 2.1.1 / La hiérarchie des types de données prédéfinies 2.2 / L'élément schema 2.3 / L'élément include 2.4 / L'élément import 2.5 / L'élément redefine 2.6 / L'élément element 2.7 / L'élément group 2.8 / L'élément any 2.9 / L'élément attribute 2.10 / L'élément attributeGroup 2.11 / L'élément anyAttribute 2.12 / L'élément complexType 2.13 / L'élément all 2.14 / L'élément choice 2.15 / L'élément sequence 2.16 / L'élément complexContent 2.17 / L'élément simpleContent 2.18 / L'élément extension 2.19 / L'élément simpleType 2.20 / L'élément list 2.21 / L'élément union 2.22 / L'élément restriction 2.23 / L'élément enumeration 2.24 / L'élément pattern 2.25 / L'élément totalDigits 2.26 / L'élément fractionDigits 2.27 / L'élément minInclusive 2.28 / L'élément maxInclusive 2.29 / L'élément minExclusive 2.30 / L'élément maxExclusive 2.31 / L'élément minLength 2.32 / L'élément maxlength 2.33 / L'élément length 2.34 / L'élément whiteSpace 2.35 / L'élément key 2.36 / L'élément keyref 2.37 / L'élément unique 2.38 / L'élément selector 2.39 / L'élément field 2.40 / L'élément annotation 2.41 / L'élément appinfo 2.42 / L'élément documentation 3 / XML-Data Reduced 3.1 / L'élément schema 3.2 / L'élément elementType 3.3 / L'élément element 3.4 / L'élément attributeType 3.5 / L'élément attribute 3.6 / L'élément datatype 3.6.1 / Référence des types de données XML 3.7 / L'élément group 3.8 / L'élément description Modifié le 10/05/2003 Page 1 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 1 / Introduction Les définitions de type de document (DTD) ont rapidement laissé apparaître des carences dans le domaine des contraintes de structures et de données. De plus, la syntaxe des DTD est issue du langage EBNF (Extended Backus Naur Form), beaucoup plus compliqué et lourd que ne l'est le langage XML. L'universalité du langage XML requiert la création d'un ensemble d'applications verticales allant de la définition des documents (langage de schéma), en passant par leur structuration et composition (langage XML) et jusqu'à leur présentation à l'utilisateur final (langage XSL). L'adoption d'un langage de définition des documents basé sur XML, était donc inévitable afin de conserver une homogénéité dans la sphère XML déjà fort bien pourvue. Le langage de schéma XML apporte une grande souplesse et une puissance inégalée dans la définition des documents XML. La fonctionnalité la plus remarquable des schémas XML est la prise en charge des types de données garantissant le contenu a affecter à un élément XML et apportant une validation plus efficace, non seulement sur la structure du document, mais aussi sur son contenu. Ainsi, une balise destinée à accueillir une date sera définie comme telle dans le schéma et par la suite sera en mesure de délivrer sa valeur à un programme sans soucis de conversion d'une chaîne de caractères en date. Le modèle de contenu devient davantage exhaustif avec les schémas XML qu'il ne l'était auparavant avec les DTD. En effet, outre que les schémas définissent tous les éléments et la structure constituant un document XML, ils déterminent également le nombre d'occurrences des éléments, gérent les contenus mixtes, les éléments nommés, les groupes d'attributs ainsi que des annotations utilisés pour la création d'une documentation à propos du modèle de contenu. L'extensibilité des définitions des documents apportée par les schémas XML, facilite l'échange, la fusion ou la réutilisation de données provenant d'une ou plusieurs sources. Effectivement, à l'instar des documents XML, les schémas XML pourront désormais se combiner en se fusionnant complètement ou partiellement afin de créer un modèle de contenu composite. D'ailleurs, plusieurs schémas peuvent être référencés à l'intérieur d'un unique document XML et donc valider la structure et le contenu de ce dernier. La génération dynamique de documents XML et du modèle de contenu associé, devient alors beaucoup plus commode. Evidemment, cela demande une certaine compatibilité entre les schémas susceptibles d'être combinés. Grâce à cette normalisation, des schémas XML provenant d'un fournisseur pourront être fusionnés sans peines avec ceux d'un distributeur dans le but de créer un modèle de contenu spécifique destiné à la validation de documents XML générés à la volée. Le langage de schémas constitue donc une pièce essentielle dans la sphère XML, assurant une évolutivité, un dynamisme et une souplesse que ne pouvait assumer le langage de DTD. Les spécifications de schémas XML peuvent être consultées directement sur le site du W3C ou sur XMLfr pour une tradutcion de XML Schema tome 0 et XML Schema tome 1. Modifié le 10/05/2003 Page 2 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2 / XML Schema Definition La définition de schéma XML se réalise par l'intermédiaire de plusieurs éléments chargés de représenter l'arborescence et les informations d'un document XML. L'élément racine d'un schéma XML (schema) peut incorporer des schémas extérieurs avec un espace de noms identique ou différent. Les éléments et les attributs XML sont chacun spécifiquement représentés dans un schéma. Il est possible de les regrouper pour des raisons de commodités, ou encore de représenter des noeuds XML indéfinis par des éléments de schéma génériques. Le contenu des éléments XML est également décrit précisément tout d'abord par un type de données pouvant être soit simple, soit complexe. Un type complexe signifie qu'un élément XML pourrait posséder des attributs, des éléments et une valeur simple. <element attribut="valeur"> Valeur de l'élément <element_enfant_1/> <element_enfant_N/> </element> L'ordre et l'apparition des éléments enfants ainsi que des alternatives peuvent être de la même facon définis dans le schéma XML. Un type simple signifie quant à lui que l'élément ou l'attribut XML ne contient qu'une valeur simple. <element> Valeur de l'élément </element> Les valeurs d'un type de données simple peuvent répondre à des critères déterminés rigoureusement à l'aide d'éléments facettes. Une facette est un aspect de la définition d'une valeur simple. Les valeurs peuvent être restreintes par rapport à une liste de possiblités, à des limitations, à un modèle d'expression régulière, à une longueur et à un comportement. Certains éléments de schéma XML permettent d'exprimer des contraintes d'unicité et de référencement par rapport au contenu de plusieurs éléments et attributs XML. Ces contraintes d'identité sont semblables aux clés primaires ou étrangères des bases de données SQL. Enfin, les éléments d'annotation offrent la possiblité soit d'insérer des commentaires, soit des informations destinées à des applications. Sommaire 2.1 / Les types de données 2.2 / L'élément schema 2.3 / L'élément include 2.4 / L'élément import 2.5 / L'élément redefine 2.6 / L'élément element 2.7 / L'élément group 2.8 / L'élément any 2.9 / L'élément attribute 2.10 / L'élément attributeGroup 2.11 / L'élément anyAttribute 2.12 / L'élément complexType Modifié le 10/05/2003 Page 3 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.13 / L'élément 2.14 / L'élément 2.15 / L'élément 2.16 / L'élément 2.17 / L'élément 2.18 / L'élément 2.19 / L'élément 2.20 / L'élément 2.21 / L'élément 2.22 / L'élément 2.23 / L'élément 2.24 / L'élément 2.25 / L'élément 2.26 / L'élément 2.27 / L'élément 2.28 / L'élément 2.29 / L'élément 2.30 / L'élément 2.31 / L'élément 2.32 / L'élément 2.33 / L'élément 2.34 / L'élément 2.35 / L'élément 2.36 / L'élément 2.37 / L'élément 2.38 / L'élément 2.39 / L'élément 2.40 / L'élément 2.41 / L'élément 2.42 / L'élément all choice sequence complexContent simpleContent extension simpleType list union restriction enumeration pattern totalDigits fractionDigits minInclusive maxInclusive minExclusive maxExclusive minLength maxlength length whiteSpace key keyref unique selector field annotation appinfo documentation Modifié le 10/05/2003 Page 4 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.1 / Les types de données Les types de données des schémas XML peuvent être soit simples, soit complexes. Un type complexe signifie qu'un élément peut contenir des attributs, des éléments, voire même une valeur simple. Un type simple signifie que le contenu d'un élément ou d'un attribut ne peut être qu'une valeur d'un type de données prédéfinies comme un nombre entier ou une chaîne de caractères. Ces valeurs peuvent également être restreintes par l'intermédiaire de facettes. Les types de données des schémas XML sont représentés par trois parties distinctes : les espaces de valeurs, les espaces lexicaux et un ensemble de facettes. un espace de valeur est un ensemble de valeurs possibles pour un type de données spécifié. Le type de données int accepte les valeurs comprises dans l'intervalle suivant : {-2147483648 2147483647}. Chaque possibilité dans l'espace de valeur d'un type de données est représentée par un ou plusieurs littéraux dans son espace lexical. Un espace lexical est un ensemble de littéraux valides pour un type de données. Les littéraux 9.9 et 9.90 sont différents mais tous les deux valides et égaux pour le type de données float. Une facette est un aspect définissant un espace de valeur. Ce dernier caractérisé par des propriétés, peut subir des restrictions par rapport à une liste de valeurs spécifiées, à un intervalle de valeurs, à un modèle de valeurs, à une longueur de champ, à un nombre de chiffres et à un comportement vis-à-vis des espaces blancs. Enumeration MinInclusive MaxInclusive MinExclusive MaxExclusive Pattern Length MinLength MaxLength TotalDigits FractionDgits WhiteSpace Les types de données prédéfinies sont divisés en deux ensembles distincts, les primitifs et les dérivés, les seconds découlants des premiers. La hiérarchie des types de données prédéfinies est décrite à la page suivante. Les types de données primitifs Type Description string représente une chaîne de caractères. boolean représente une valeur booléenne true ou false. decimal représente un nombre décimal float représente un nombre à virgule flottante. double représente un nombre réel double. duration représente une durée. dateTime représente une valeur date/heure. Modifié le 10/05/2003 Page 5 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML time représente une valeur horaire (format : hh:mm:ss.sss ). date représente une date (format : CCYY-MM-DD). gYearMonth représente un mois et une année grégorienne (format : CCYY-MM). gYear représente une année (format : CCYY). gMonthDay représente le jour d'un mois (format : MM-DD). gDay représente le jour d'un mois (format : DD). gMonth représente le mois (format : MM). hexBinary représente un contenu binaire hexadécimal. base64Binary représente un contenu binaire de base 64. anyURI représente une adresse URI (ex.: http://www.site.com). QName représente un nom qualifié. NOTATION représente un nom qualifié. Les types de données dérivés Type Description normalizedString représente une chaîne de caractères dont les espaces blancs sont normalisés. token représente une chaîne de caractères sans espaces blancs. language représente un langage exprimé sous forme de mot clés répondant à la RFC 1766. NMTOKEN représente le type d'attribut NMTOKEN de XML 1.0. NMTOKENS représente le type d'attributs NMTOKENS de XML 1.0. Name représente un nom XML. NCName représente un nom non-implanté (non-colonized) dans . id représente le type d'attribut ID de XML 1.0. IDREF représente le type d'atribut IDREF de XML 1.0. IDREFS représente le type d'attribut IDREFS de XML 1.0. ENTITY représente le type d'attribut ENTITY de XML 1.0. ENTITIES représente le type d'attribut ENTITIES de XML 1.0. integer représente un nombre entier. nonPositiveInteger représente un nombre entier négatif incluant le zéro. negativeInteger représente un nombre entier négatif dont la valeur maximum est -1. long représente un nombre entier long dont l'intervalle est {-9223372036854775808 9223372036854775807}. int représente un nombre entier dont l'intervalle est {-2147483648 - 2147483647}. short représente un nombre entier court dont l'intervalle est {-32768 - 32767}. byte représente un entier dont l'intervalle est {-128 - 127}. nonNegativeInteger représente un nombre entier positif incluant le zéro. unsignedLong représente un nombre entier long non-signé dont l'intervalle est {0 - Modifié le 10/05/2003 Page 6 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 18446744073709551615}. unsignedInt représente un nombre entier non-signé dont l'intervalle est {0 - 4294967295}. unsignedShort représente un nombre entier court non-signé dont l'intervalle est {0 - 65535}. unsignedByte représente un nombre entier non-signé dont l'intervalle est {0 - 255}. positiveInteger représente un nombre entier positif commençant à 1. Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant> Une chaîne de caractères est attendue. </element_enfant> <element_enfant> Les chiffres ne sont pas acceptées ! </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_enfant"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[^0-9]"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element ref="element_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Sommaire 2.1.1 / La hiérarchie des types de données prédéfinies Modifié le 10/05/2003 Page 7 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.1.1 / La hiérarchie des types de données prédéfinies Modifié le 10/05/2003 Page 8 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.2 / L'élément schema Un schéma XML commence par l'ouverture d'un élément schema destiné à accueillir la définition des composants d'un document XML. <xsd:schema attributeFormDefault = (qualified | unqualified) : unqualified blockDefault = (#all | Liste de (extension | restriction | substitution)) : '' elementFormDefault = (qualified | unqualified) : unqualified finalDefault = (#all | Liste de (extension | restriction)) : '' id = ID targetNamespace = adresse_URI version = token xml:lang = language {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : ((include | import | redefine | annotation)*, (((simpleType | complexType | group | attributeGroup) | element | attribute | notation), annotation*)*) </xsd:schema> L'élément schema possède plusieurs attributs destinés à définir le cadre du schéma XML. Attributs Description attributeFormDefault indique si les attributs XML doivent être qualifiés par un espace de noms. blockDefault empêche, par défaut, l'utilisation de types dérivés dans des éléments attendant le type de base. elementFormDefault indique si les éléments XML doivent être qualifiés par un espace de noms. finalDefault empêche, par défaut, la dérivation de type par restriction, extension ou les deux. id précise un identificateur unique pour le schéma. targetNamespace indique un espace de noms cible pour tout élément étranger au vocabulaire de schéma XML. version indique un numéro de version. xml:lang indique le langage dans lequel est conçu le document. L'élément schema ne peut être inclus dans aucun élément. Exemple <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema.xsd" xmlns="http://www.site.com/schemaxml/" targetNamespace="http://www.site.com/schemaxml/">> ... </xsd:schema> Modifié le 10/05/2003 Page 9 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.3 / L'élément include L'élément include permet d'inclure un schéma XML d'un même espace de noms dans un autre schéma. <xsd:include id = ID schemaLocation = anyURI {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:include> L'élément include possède plusieurs attributs destinés à l'identifier et à préciser l'adresse du schéma à inclure. Attributs Description précise un identificateur unique pour l'élément. id schemaLocation spécifie une adresse URI pointant vers un schéma XML. L'élément include ne peut être inclus que dans l'élément suivant : schema Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <librairie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <livre isbn="2212110472" categorie="XML"> <titre>Services Web avec XML, SOAP, WSDL, UDDI, ebXML...</titre> <auteur>Jean-Marie Chauvet</auteur> <editeur>Eyrolles</editeur> </livre> <livre isbn="2100065203" categorie="XML"> <titre>XML - Manuel de Référence</titre> <auteur>R.Wyke</auteur> <auteur>S.Rehman</auteur> <auteur>B.Leupen</auteur> <editeur>Microsoft Press</editeur> </livre> <livre isbn="1928994474" categorie="XML"> <titre>XML.NET Developer's Guide</titre> <auteur>Collectif</auteur> <editeur>Syngress</editeur> </livre> </librairie> <?xml version="1.0" encoding="UTF-8"?> <!-- Fichier : schema.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:include schemaLocation="c:\inclusion.xsd"/> <xsd:complexType name="type_librairie"> <xsd:sequence> <xsd:element name="livre" type="type_livre" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="librairie" type="type_librairie"/> </xsd:schema> Modifié le 10/05/2003 Page 10 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <?xml version="1.0" encoding="UTF-8"?> <!-- Fichier : inclusion.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:simpleType name="type_isbn"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{10}"/> </xsd:restriction> </xsd:simpleType> <xsd:attributeGroup name="groupe_attributs_livre"> <xsd:attribute name="isbn" type="type_isbn" use="required"/> <xsd:attribute name="categorie" type="xsd:string"/> </xsd:attributeGroup> <xsd:group name="groupe_elements_livre"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string" maxOccurs="unbounded"/> <xsd:element name="editeur" type="xsd:string"/> </xsd:sequence> </xsd:group> <xsd:complexType name="type_livre"> <xsd:sequence> <xsd:group ref="groupe_elements_livre"/> </xsd:sequence> <xsd:attributeGroup ref="groupe_attributs_livre"/> </xsd:complexType> </xsd:schema> Modifié le 10/05/2003 Page 11 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.4 / L'élément import L'élément import permet d'importer un schéma XML avec un espace de noms différent dans un autre schéma. <xsd:import id = ID namespace = anyURI schemaLocation = anyURI {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:import> L'élément import possède plusieurs attributs destinés à l'identifier et à préciser les adresses du schéma à importer et de l''espace de noms. Attributs Description id précise un identificateur unique pour l'élément. names spécifie l'espace de noms du schéma XML. schemaLocation spécifie une adresse URI pointant vers un schéma XML. L'élément import ne peut être inclus que dans l'élément suivans : schema Exemple [voir] <?xml version="1.0" encoding="iso-8859-1"?> <recueil xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <poeme> <site:titre>Locution des pierrots</site:titre> <site:strophe>Je ne suis qu'un viveur lunaire Qui fait des ronds dans le bassin Et cela, sans autre dessein Que de devenir légendaire.</site:strophe> <site:strophe>Retroussant d'un air de défin Mes manches de Mandarin pâle, J'arrondis ma bouche et - j'exhale Des conseils doux de Crucifix</site:strophe> <site:strophe>Ah! oui, devenir légendaire, Au seuil des siècles charlatans ! Mais où sont les Lunes d'antan ? Et que Dieu n'est-il à refaire ?</site:strophe> <site:auteur>Jules Laforgue</site:auteur> </poeme> </recueil> <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Fichier : schema.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.site.com/schema" targetNamespace="http://www.site.com/schema" xmlns:site="http://www.site.com"> <xsd:import schemaLocation="c:\import.xsd" namespace="http://www.site.com"/> <xsd:element name="recueil"> <xsd:complexType> <xsd:sequence> Modifié le 10/05/2003 Page 12 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:element name="poeme" type="site:type_poeme" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Fichier : import.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.site.com" targetNamespace="http://www.site.com"> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="strophe" type="xsd:string"/> <xsd:element name="titre" type="xsd:string"/> <xsd:complexType name="type_poeme"> <xsd:sequence> <xsd:element ref="titre"/> <xsd:element ref="strophe" maxOccurs="unbounded"/> <xsd:element ref="auteur"/> </xsd:sequence> </xsd:complexType> <xsd:element name="oeuvre" type="type_poeme"/> </xsd:schema> Modifié le 10/05/2003 Page 13 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.5 / L'élément redefine L'élément redefine permet d'mporter et de redéfinir les déclarations d'un schéma XML pour un même espace de noms. <xsd:redefine id = ID schemaLocation = anyURI {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation | (simpleType | complexType | group | attributeGroup))* </xsd:redefine> L'élément redefine possède plusieurs attributs destinés à l'identifier et à préciser le schéma à importer. Attributs id Description précise un identificateur unique pour l'élément. schemaLocation spécifie une adresse URI pointant vers un schéma XML à rédéfinir. L'élément redefine ne peut être inclus que dans l'élément suivant : schema Exemple [voir] <?xml version="1.0" encoding="iso-8859-1"?> <recueil xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <poeme> <ref>1254369785</ref> <titre>Locution des pierrots</titre> <strophe>Je ne suis qu'un viveur lunaire Qui fait des ronds dans le bassin Et cela, sans autre dessein Que de devenir légendaire.</strophe> <strophe>Retroussant d'un air de défin Mes manches de Mandarin pâle, J'arrondis ma bouche et - j'exhale Des conseils doux de Crucifix</strophe> <strophe>Ah! oui, devenir légendaire, Au seuil des siècles charlatans ! Mais où sont les Lunes d'antan ? Et que Dieu n'est-il à refaire ?</strophe> <auteur>Jules Laforgue</auteur> </poeme> </recueil> <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Fichier : schema.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:redefine schemaLocation="c:\redefine.xsd"> <xsd:complexType name="type_poeme"> <xsd:complexContent> <xsd:extension base="type_poeme"> <xsd:sequence> <xsd:element name="ref" type="xsd:integer"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> Modifié le 10/05/2003 Page 14 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:redefine> <xsd:element name="recueil"> <xsd:complexType> <xsd:sequence> <xsd:element name="poeme" type="type_poeme" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Fichier : redefine.xsd --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="strophe" type="xsd:string"/> <xsd:element name="titre" type="xsd:string"/> <xsd:complexType name="type_poeme"> <xsd:sequence> <xsd:element ref="titre"/> <xsd:element ref="strophe" maxOccurs="unbounded"/> <xsd:element ref="auteur"/> </xsd:sequence> </xsd:complexType> <xsd:element name="oeuvre" type="type_poeme"/> </xsd:schema> Modifié le 10/05/2003 Page 15 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.6 / L'élément element L'élément element permet de représenter un élément XML dans une définition de schéma. <xsd:element abstract = boolean : false block = (#all | Liste de (substitution | extension | restriction)) default = string final = (#all | Liste de (extension | restriction)) fixed = string form = (qualified | unqualified) id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 name = NCName nullable = boolean : false ref = QName substitutionGroup = QName type = QName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*)) </xsd:element> L'élément element possède plusieurs attributs destinés à définir précisément l'élément XML. Attributs Description abstract provoque l'abstraction (true) de l'élément XML, devant être remplacé par un autre élément. block spécifie une valeur de blocage du type dans des éléments attendant le type de base. default précise une valeur par défaut pour l'élément. final empêche la dérivation de type par restriction, extension ou les deux. fixed empêche une dérivation par restriction du type de l'élément. form indique si l'élément XML doit être ou non qualifié par un espace de noms. id précise un identificateur unique pour l'élément. maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à 1. minOccurs précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à 1. name indique le nom de l'élément XML. nillable signifie qu'un élément peut être valide (true) lorsqu'il est nul, s'il est porteur d'un attribut qualifié d'espace de noms xsd:nil. ref spécifie une référence à un autre élément de schéma. substitutionGroup définit un élément pour lequel l'élément peut se substituer. fournit le type de données accepté par l'élément. type L'élément element ne peut être inclus que dans les éléments suivants : all choice schema sequence Modifié le 10/05/2003 Page 16 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML Exemple [voir] <?xml version="1.0"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant> Chaîne de caractères </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="element_enfant" type="xsd:string"/> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element ref="element_enfant"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 17 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.7 / L'élément group L'élément group permet de définir un groupe d'éléments et d'y faire référence dans un schéma XML. <xsd:group id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 name = NCName ref = QName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation? , (all | choice | sequence)?) </xsd:group> L'élément group possède plusieurs attributs destinés à définir les caractéristiques du groupe d'éléments. Attributs Description précise un identificateur unique pour le groupe. id maxOccurs précise le nombre d'occurrences maximum du groupe. Par défaut, ce nombre est égal à 1. minOccurs précise le nombre d'occurrences minimum du groupe. Par défaut, ce nombre est égal à 1. name indique le nom du groupe. ref indique une référence à un groupe d'attributs. L'élément group ne peut être inclus que dans les éléments suivants : choice complexType redefine schema sequence Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <librairie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <livre isbn="2212110472" categorie="XML"> <titre> Services Web avec XML, SOAP, WSDL, UDDI, ebXML... </titre> <auteur>Jean-Marie Chauvet</auteur> <editeur>Eyrolles</editeur> </livre> <livre isbn="2100065203" categorie="XML"> <titre>XML - Manuel de Référence</titre> <auteur>R.Wyke</auteur> <auteur>S.Rehman</auteur> <auteur>B.Leupen</auteur> <editeur>Microsoft Press</editeur> </livre> <livre isbn="1928994474" categorie="XML"> <titre>XML.NET Developer's Guide</titre> <auteur>Collectif</auteur> <editeur>Syngress</editeur> </livre> </librairie> Modifié le 10/05/2003 Page 18 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:simpleType name="type_isbn"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{10}"/> </xsd:restriction> </xsd:simpleType> <xsd:attributeGroup name="groupe_attributs_livre"> <xsd:attribute name="isbn" type="type_isbn" use="required"/> <xsd:attribute name="categorie" type="xsd:string"/> </xsd:attributeGroup> <xsd:group name="groupe_elements_livre"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> <xsd:element name="editeur" type="xsd:string"/> </xsd:sequence> </xsd:group> <xsd:complexType name="type_livre"> <xsd:sequence> <xsd:group ref="groupe_elements_livre"/> </xsd:sequence> <xsd:attributeGroup ref="groupe_attributs_livre"/> </xsd:complexType> <xsd:complexType name="type_librairie"> <xsd:sequence> <xsd:element name="livre" type="type_livre" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="librairie" type="type_librairie"/> </xsd:schema> Modifié le 10/05/2003 Page 19 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.8 / L'élément any L'élément any représente n'importe quel élément dans un schéma XML. <xsd:any id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 namespace = ((##any | ##other) | Liste de (anyURI | (##targetNamespace | ##local)) ) : ##any processContents = (lax | skip | strict) : strict {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:any> L'élément any possède plusieurs attributs destinés à définir précisément l'élément XML. Attributs Description id précise un identificateur unique pour l'élément. maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à 1. minOccurs précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à 1. namespace spécifie un ou plusieurs espaces de noms. processContents précise le type de processus de contenu. L'élément any ne peut être inclus que dans les éléments suivants : choice sequence Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant attribut="valeur"/> <element_enfant attribut="valeur"> <autre_element attribut="valeur"/> </element_enfant> <element_enfant attribut="valeur"> <un_autre_element/> </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="autre_elementType"> <xsd:attribute name="attribut" type="xs:string" use="required"/> </xsd:complexType> <xsd:complexType name="type_enfant"> <xsd:sequence> <xsd:any minOccurs="0" processContents="lax"/> </xsd:sequence> <xsd:attribute name="attribut" type="xs:string" use="required"/> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" Modifié le 10/05/2003 Page 20 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML type="type_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 21 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.9 / L'élément attribute L'élément attribute permet de représenter un attribut XML dans une définition de schéma. <xsd:attribute default = string fixed = string form = (qualified | unqualified) id = ID name = NCName ref = QName type = QName use = (optional | prohibited | required) : optional {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (simpleType?)) </xsd:attribute> L'élément attribute possède plusieurs attributs destinés à définir précisément l'attribut d'un élément XML. Attributs Description précise une valeur par défaut pour l'attribut. fixed empêche une dérivation par restriction du type de l'attribut. form indique si l'attribut XML doit être ou non qualifié par un espace de noms. id précise un identificateur unique pour l'attribut. name indique le nom de l'attribut XML. ref spécifie une référence à un autre élément de schéma. type fournit le type de données accepté par l'attribut. use indique comment l'attribut doit apparaître. L'élément attribute ne peut être inclus que dans les éléments suivants : attributeGroup complexType extension schema Exemple [voir] <?xml version="1.0"?> <element_racine attribut_racine="valeur" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant attribut_enfant="valeur"> Chaîne de caractères </element_enfant> </element_racine> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> elementFormDefault="qualified"> <xsd:complexType name="type_element_enfant"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="attribut_enfant" type="xsd:string" use="required"/> </xsd:extension> Modifié le 10/05/2003 Page 22 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:simpleContent> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="type_element_enfant"/> </xsd:sequence> <xsd:attribute name="attribut_racine" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 23 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.10 / L'élément attributeGroup L'élément attributeGroup permet de regrouper la définition de plusieurs attributs XML. <xsd:attributeGroup id = ID name = NCName ref = QName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:attributeGroup> L'élément attributeGroup possède deux attributs destinés à identifier l'élément et à se référer à un groupe d'attributs XML. Attributs Description id précise un identificateur unique pour l'élément. name indique le nom du groupe. ref indique une référence à un groupe d'attributs. L'élément attributeGroup ne peut être inclus que dans les éléments suivants : attributeGroup complexType extension redefine schema Exemple [voir] <?xml version="1.0"?> <element_racine attribut_racine="valeur" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant attribut_1="valeur"/ attribut_2="valeur" attribut_3="valeur"> </element_racine> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> elementFormDefault="qualified"> <xsd:attributeGroup name="Groupe_Attribut"> <xsd:attribute name="attribut_1" type="xsd:string" use="required"/> <xsd:attribute name="attribut_2" type="xsd:string" use="required"/> <xsd:attribute name="attribut_3" type="xsd:string" use="required"/> </xsd:attributeGroup> <xsd:complexType name="type_element_enfant"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attributeGroup ref="Groupe_Attribut"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="type_element_enfant"/> Modifié le 10/05/2003 Page 24 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:sequence> <xsd:attribute name="attribut_racine" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 25 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.11 / L'élément anyAttribute L'élément anyAttribute représente n'importe quel attribut dans un schéma XML. <xsd:anyAttribute id = ID namespace = ((##any | ##other) | Liste de (anyURI | (##targetNamespace | ##local)) ) : ##any processContents = (lax | skip | strict) : strict {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:anyAttribute> L'élément anyAttribute possède plusieurs attributs destinés à définir précisément l'attribut XML. Attributs Description id précise un identificateur unique pour l'élément. namespace spécifie un ou plusieurs espaces de noms. processContents précise le type de processus de contenu. L'élément anyAttribute ne peut être inclus que dans les éléments suivants : attributeGroup complexType extension Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant attribut="valeur" attribut_2="valeur"/> <element_enfant attribut="valeur"/> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="type_enfant"> <xsd:attribute name="attribut" type="xs:string" use="required"/> <xsd:anyAttribute processContents="lax"/> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="type_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 26 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.12 / L'élément complexType L'élément complexType définit un type de données complexe pour des éléments XML. <xsd:complexType abstract = booléen : false block = (#all | Liste de (extension | restriction)) final = (#all | Liste de (extension | restriction)) id = ID mixed = booléen : false name = NCName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (simpleContent | complexContent | ((group | all | choice | séquence)?, ((attribute | attributeGroup)*, anyAttribute?)))) </xsd:complexType> L'élément complexType possède plusieurs attributs destinés à définir les caractéristiques du type de données complexe. Attributs Description abstract provoque l'abstraction (true) de l'élément XML, devant être remplacé par un autre élément. block spécifie une valeur de blocage du type dans des éléments attendant le type de base. default précise une valeur par défaut pour l'élément. final empêche la dérivation de type par restriction, extension ou les deux. id précise un identificateur unique pour l'élément. mixed indique un contenu mixte (true) ou un contenu à base d'éléments seuls (false) par défaut. name indique le nom de l'élément XML. L'élément complexType ne peut être inclus que dans les éléments suivants : element redefine schema Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine attribut_racine="valeur" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant attribut_enfant="valeur"> 10 000 000 euros </element_enfant> <element_enfant attribut_enfant="valeur" snd_attribut_enfant="valeur"> <element_petit_enfant attribut_petit_enfant="valeur"/> Chaîne de caractères... </element_enfant> <![CDATA[<p>Un texte...</p>]]> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="element_enfantType" mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> Modifié le 10/05/2003 Page 27 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:element name="element_petit_enfant" type="element_petit_enfantType"/> </xsd:choice> <xsd:attribute name="attribut_enfant" type="xsd:string" use="required"/> <xsd:attribute name="snd_attribut_enfant" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="element_petit_enfantType"> <xsd:attribute name="attribut_petit_enfant" type="xsd:string" use="required"/> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType mixed="true"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="element_enfant" type="element_enfantType"/> </xsd:choice> <xsd:attribute name="attribut_racine" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 28 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.13 / L'élément all L'élément all permet de spécifier, dans un type de données complexe, un à plusieurs éléments devant apparaître une fois ou pas du tout et dans un ordre quelconque. <xsd:all id = ID maxOccurs = 1 : 1 minOccurs = (0 | 1) : 1 {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, element*) </xsd:all> L'élément all possède plusieurs attributs destinés à définir ce connecteur. Attributs Description précise un identificateur unique pour l'élément. id maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à 1. minOccurs précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à 1. L'élément all ne peut être inclus que dans les éléments suivants : complexType group Exemple [voir] <?xml version="1.0"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\Untitled2.xsd"> <element_enfant id="01"> <element_3>1000</element_3> <element_2>100</element_2> <element_1>10</element_1> </element_enfant> <element_enfant id="02"> <element_1>100</element_1> <element_3>10000</element_3> <element_2>1000</element_2> </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="element_enfantType"> <xsd:all minOccurs="0" maxOccurs="1"> <xsd:element name="element_1" type="xsd:integer"/> <xsd:element name="element_2" type="xsd:integer"/> <xsd:element name="element_3" type="xsd:integer"/> </xsd:all> <xsd:attribute name="id" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="01"/> <xsd:enumeration value="02"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> Modifié le 10/05/2003 Page 29 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="element_enfantType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 30 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.14 / L'élément choice L'élément choice propose une structure de choix entre plusieurs éléments possible. <xsd:choice id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (element | group | choice | séquence | any)*) </xsd:choice> L'élément choice possède plusieurs attributs destinés à définir le connecteur de choix. Attributs Description précise un identificateur unique pour l'élément. id maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à 1. minOccurs précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à 1. L'élément choice ne peut être inclus que dans les éléments suivants : choice complexType group sequence Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant id="02"> <element_choix_1>10</element_choix_1> </element_enfant> <element_enfant id="01"> <element_choix_2>10</element_choix_2> </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_choix_1" type="xsd:integer"/> <xsd:element name="element_choix_2" type="xsd:integer"/> <xsd:complexType name="element_enfantType"> <xsd:choice> <xsd:element ref="element_choix_1"/> <xsd:element ref="element_choix_2"/> </xsd:choice> <xsd:attribute name="id" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="01"/> <xsd:enumeration value="02"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> Modifié le 10/05/2003 Page 31 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:sequence> <xsd:element name="element_enfant" type="element_enfantType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 32 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.15 / L'élément sequence L'élément sequence définit, dans un type de données complexe, un à plusieurs éléments devant obligatoirement apparaître dans un ordre prédéfini. <xsd:sequence id = ID maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (element | group | choice | séquence | any)*) </xsd:sequence> L'élément sequence possède plusieurs attributs destinés à définir le connecteur de séquence. Attributs Description précise un identificateur unique pour l'élément. id maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à 1. minOccurs précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à 1. L'élément sequence ne peut être inclus que dans les éléments suivants : choice complexType group sequence Exemple [voir] <?xml version="1.0"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant id="01"> <element_1>10</element_1> <element_2>1000000</element_2> <element_3>1</element_3> </element_enfant> <element_enfant id="02"> <element_1>100</element_1> <element_2>100000</element_2> <element_3>10000</element_3> </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_1" type="xsd:integer"/> <xsd:element name="element_2" type="xsd:integer"/> <xsd:element name="element_3" type="xsd:integer"/> <xsd:complexType name="element_enfantType"> <xsd:sequence> <xsd:element ref="element_1"/> <xsd:element ref="element_2"/> <xsd:element ref="element_3"/> </xsd:sequence> <xsd:attribute name="id" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> Modifié le 10/05/2003 Page 33 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:enumeration value="01"/> <xsd:enumeration value="02"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="element_enfantType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 34 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.16 / L'élément complexContent L'élément complexContent permet de définir un contenu complexe pour un élément XML. <xsd:complexContent id = ID mixed = booléen {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (restriction | extension)) </xsd:complexContent> L'élément simpleContent possède deux attributs définissant le contenu complexe. Attributs Description id précise un identificateur unique pour l'élément. mixed indique un contenu mixte (true) ou un contenu à base d'éléments seuls (false) par défaut. L'élément complexContent ne peut être inclus que dans l'élément suivant : complexType Exemple [voir] <?xml version="1.0"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <personne xsi:type="type_francaise"> <nom>FRAGIL</nom> <prenom>Antoine</prenom> <adresse>10 rue des Anges</adresse> <code_postal>77200</code_postal> <ville>Torcy</ville> </personne> <personne xsi:type="type_autre"> <nom>FARUGGI</nom> <prenom>Marco</prenom> <adresse>Via G.B. Vico, 33</adresse> <code_postal>00144</code_postal> <ville>Roma</ville> <pays>Italia</pays> </personne> <personne xsi:type="type_francaise"> <nom>LEGER</nom> <prenom>Bruno</prenom> <adresse>22 rue des Poissonniers</adresse> <code_postal>75000</code_postal> <ville>Paris</ville> </personne> </element_racine> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="type_personne" block="restriction"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="prenom" type="xsd:string"/> <xsd:element name="adresse" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="type_francaise"> <xsd:complexContent> <xsd:extension base="type_personne"> Modifié le 10/05/2003 Page 35 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:sequence> <xsd:element name="code_postal" type="xsd:positiveInteger"/> <xsd:element name="ville" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="type_autre"> <xsd:complexContent> <xsd:extension base="type_personne"> <xsd:sequence> <xsd:element name="code_postal" type="xsd:positiveInteger"/> <xsd:element name="ville" type="xsd:string"/> <xsd:element name="pays" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="personne" type="type_personne" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 36 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.17 / L'élément simpleContent L'élément simpleContent permet de créer un type de données complexe à partir d'un type de données simple. <xsd:simpleContent id = ID {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (restriction | extension)) </xsd:simpleContent> L'élément simpleContent un seul attribut destiné à l'identifier. Attributs id Description précise un identificateur unique pour l'élément. L'élément simpleContent ne peut être inclus que dans les éléments suivants : complexType Exemple [voir] <?xml version="1.0"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant> <element attribut="valeur">chaîne...</element_1> </element_enfant> <element_enfant> <element attribut="valeur">chaîne...</element_1> </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="type_element"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="attribut" type="xsd:string" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="type_element_enfant"> <xsd:sequence> <xsd:element name="element" type="type_element"/> </xsd:sequence> </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="type_element_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 37 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.18 / L'élément extension L'élément extension propose d'étendre la définition d'un élément ou d'un attribut XML à un autre type de données spécifié. <xsd:extension base = QName id = ID {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, ((group | all | choice | séquence)?, ((attribute | attributeGroup)*, anyAttribute?))) </xsd:extension> L'élément extension possède deux attributs définissant la structure extensive. Attributs Description base indique un type de données de base. id précise un identificateur unique pour l'élément. L'élément extension ne peut être inclus que dans les éléments suivants : complexContent simpleContent Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <donation monnaie="$US">50</donation> <donation monnaie="$US">90</donation> <donation monnaie="euros">80</donation> <donation monnaie="euros">312</donation> <donation monnaie="$US">500</donation> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="donation" type="type_donation" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="type_donation"> <xsd:simpleContent> <xsd:extension base="niveau_don"> <xsd:attribute name="monnaie" type="xsd:string" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name="niveau_don"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minExclusive value="49"/> Modifié le 10/05/2003 Page 38 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:maxExclusive value="501"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> Modifié le 10/05/2003 Page 39 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.19 / L'élément simpleType L'élément simpleType définit un type de données simple pour des éléments XML. <xsd:simpleType final = (#all | (list | union | restriction)) id = ID name = NCName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (restriction | list | union)) </xsd:simpleType> L'élément complexType possède plusieurs attributs destinés à définir les caractéristiques du type de données simple. Attributs Description final empêche la dérivation de type par restriction, extension ou les deux. id précise un identificateur unique pour l'élément. name indique le nom de l'élément XML. L'élément simpleType ne peut être inclus que dans les éléments suivants : attribute element list redefine restriction schema union Exemple [voir] <?xml version="1.0"?> <element_racine attribut="23 0 12 5 9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="F:\Untitled4.xsd"> <element_enfant>10.31481</element_enfant> </element_racine> <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:simpleType name="nombre_decimal"> <xsd:restriction base="xsd:decimal"> <xsd:minExclusive value="0"/> <xsd:fractionDigits value="5"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="liste"> <xsd:list itemType="xsd:integer"/> </xsd:simpleType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="nombre_decimal"/> </xsd:sequence> <xsd:attribute name="attribut" use="required"> <xsd:simpleType> <xsd:restriction base="liste"> <xsd:length value="5"/> Modifié le 10/05/2003 Page 40 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 41 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.20 / L'élément list L'élément list permet de créer de nouveaux types de listes par dérivation de types de données atomiques existants. <xsd:list id = ID itemType = QName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (simpleType?)) </xsd:list> L'élément list possède plusieurs attributs destinés à l'identifier et à préciser un type de données. Attributs id Description précise un identificateur unique pour l'élément. itemType spécifie le nom d'un type de données existants. L'élément list ne peut être inclus que dans l'élément suivant : simpleType Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <note_devoir> 15 16 18 19 18 19 </note_devoir> <note_devoir> 9 12 11 14 8 15 </note_devoir> </element_racine> <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:simpleType name="note_chiffree"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="20"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="type_note"> <xsd:list itemType="note_chiffree"/> </xsd:simpleType> <xsd:complexType name="type_element_racine"> <xsd:sequence> <xsd:element name="note_devoir" type="type_note" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="element_racine" type="type_element_racine"/> </xsd:schema> Modifié le 10/05/2003 Page 42 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.21 / L'élément union L'élément union permet à un élément ou à un attribut XML d'être une ou plusieurs instances d'un type de données formé par la réunion de plusieurs types atomiques ou listes. <xsd:union id = ID memberTypes = Liste de QName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (simpleType*)) </xsd:union> L'élément union possède plusieurs attributs destinés à l'identifier et à préciser des types de données. Attributs id Description précise un identificateur unique pour l'élément. memberTypes spécifie une liste de noms de types de données séparés par un espace blanc. L'élément union ne peut être inclus que dans l'élément suivant : simpleType Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <note_devoir>11</note_devoir> <note_devoir>AB</note_devoir> </element_racine> <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:simpleType name="note_chiffree"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="20"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="type_note"> <xsd:union memberTypes="xsd:string note_chiffree"/> </xsd:simpleType> <xsd:complexType name="type_element_racine"> <xsd:sequence> <xsd:element name="note_devoir" type="type_note" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:element name="element_racine" type="type_element_racine"/> </xsd:schema> Modifié le 10/05/2003 Page 43 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.22 / L'élément restriction L'élément restriction permet de restreindre les données permises dans un élément ou un attribut XML. <xsd:restriction base = QName id = ID {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (group | all | choice | séquence)?, ((attribute | attributeGroup)*, anyAttribute?)) </xsd:restriction> L'élément restriction possède deux attributs définissant la structure restrictive. Attributs Description base indique un type de données de base. id précise un identificateur unique pour l'élément. L'élément restriction ne peut être inclus que dans les éléments suivants : complexContent simpleContent simpleType Exemple [voir] <?xml version="1.0"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <nombre>51</nombre> <nombre>90</nombre> <nombre>80</nombre> <nombre>99</nombre> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="entre50et100"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minExclusive value="50"/> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="nombre" type="entre50et100"/> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element ref="nombre" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 44 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.23 / L'élément enumeration L'élément enumeration permet de contraindre la valeur d'un élément ou d'un attribut à une seule possibilité. <xsd:enumeration id = ID value = simpleType {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:enumeration> L'élément enumeration possède plusieurs attributs destinés à identifier la facette et à préciser une valeur possible. Attributs Description id précise un identificateur unique pour l'élément. value spécifie une valeur de type simple (simpleType). L'élément enumeration ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant attribut="Veuf"> Monsieur </element_enfant> <element_enfant attribut="Mariée"> Madame </element_enfant> <element_enfant attribut="Célibataire"> Mademoiselle </element_enfant> <element_enfant attribut="Concubin"> Monsieur </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:complexType name="type_enfant"> <xsd:simpleContent> <xsd:extension base="valeurs_enfant"> <xsd:attribute name="attribut" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="Célibataire"/> <xsd:enumeration value="Concubin"/> <xsd:enumeration value="Concubine"/> <xsd:enumeration value="Marié"/> <xsd:enumeration value="Mariée"/> <xsd:enumeration value="Veuf"/> <xsd:enumeration value="Veuve"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> Modifié le 10/05/2003 Page 45 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:complexType> <xsd:simpleType name="valeurs_enfant"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Madame"/> <xsd:enumeration value="Mademoiselle"/> <xsd:enumeration value="Monsieur"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="element_enfant" type="type_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 46 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.24 / L'élément pattern L'élément pattern permet de créer un modèle pour la valeur d'une élément ou d'un attribut XML à partir d'une expression régulière. <xsd:pattern id = ID value = simpleType {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:pattern> L'élément pattern possède plusieurs attributs destinés à identifier la facette et à préciser une expression régulière. Attributs Description id précise un identificateur unique pour l'élément. value spécifie une valeur de type simple (simpleType). L'élément pattern ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant>[email protected]</element_enfant> <element_enfant>[email protected]</element_enfant> <element_enfant>[email protected]</element_enfant> <element_enfant>[email protected]</element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_enfant"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="(.)+@(.)+"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element ref="element_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 47 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.25 / L'élément totalDigits L'élément totalDigits permet de définir le nombre total de chiffres dans un élément ou un attribut XML. <xsd:totalDigits fixed = boolean : false id = ID value = positiveInteger {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:totalDigits> L'élément totalDigits possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie un nombre total de chiffres. L'élément totalDigits ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <produit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <prix>10.25</prix> <prix>1010.55</prix> <prix>99.50</prix> <prix>23.45</prix> <prix>250.00</prix> <prix>9999.99</prix> </produit> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="type_prix"> <xsd:restriction base="xsd:float"> <xsd:totalDigits value="6"/> <xsd:fractionDigits value="2"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="produit"> <xsd:complexType> <xsd:sequence> <xsd:element name="prix" type="type_prix" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 48 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.26 / L'élément fractionDigits L'élément fractionDigits permet de définir le nombre total de chiffres dans la partie fractionnaire d'un nombre à virgule flottante. <xsd:fractionDigits fixed = boolean : false id = ID value = nonNegativeInteger {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:fractionDigits> L'élément fractionDigits possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une longueur en caractères ou en octets. L'élément fractionDigits ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <produit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <prix>10.25</prix> <prix>1010.55</prix> <prix>99.50</prix> <prix>23.45</prix> <prix>250.00</prix> <prix>9999.99</prix> </produit> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="type_prix"> <xsd:restriction base="xsd:float"> <xsd:totalDigits value="6"/> <xsd:fractionDigits value="2"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="produit"> <xsd:complexType> <xsd:sequence> <xsd:element name="prix" type="type_prix" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 49 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.27 / L'élément minInclusive L'élément minInclusive permet de définir une valeur minimum inclusive pour l'élément ou l'attribut XML. <xsd:minInclusive fixed = booléen : false id = ID value = simpleType {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:minInclusive> L'élément minInclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une valeur de type simple (simpleType). L'élément minInclusive ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <valeur attribut="200">0</valeur> <valeur attribut="170">19</valeur> <valeur attribut="100">100</valeur> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="valeur" type="valeurType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="valeurType"> <xsd:simpleContent> <xsd:extension base="valeurSimpleType"> <xsd:attribute name="attribut" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minInclusive value="100"/> <xsd:maxInclusive value="200"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Modifié le 10/05/2003 Page 50 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:simpleType name="valeurSimpleType"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> Modifié le 10/05/2003 Page 51 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.28 / L'élément maxInclusive L'élément maxInclusive permet de définir une valeur maximum inclusive pour l'élément ou l'attribut XML. <xsd:maxInclusive fixed = booléen : false id = ID value = simpleType {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:maxInclusive> L'élément maxInclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une valeur de type simple (simpleType). L'élément maxInclusive ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <valeur attribut="200">0</valeur> <valeur attribut="170">19</valeur> <valeur attribut="100">100</valeur> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="valeur" type="valeurType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="valeurType"> <xsd:simpleContent> <xsd:extension base="valeurSimpleType"> <xsd:attribute name="attribut" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minInclusive value="100"/> <xsd:maxInclusive value="200"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Modifié le 10/05/2003 Page 52 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:simpleType name="valeurSimpleType"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> Modifié le 10/05/2003 Page 53 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.29 / L'élément minExclusive L'élément minExclusive permet de définir une valeur maximum exclusive pour l'élément ou l'attribut XML. <xsd:minExclusive fixed = booléen : false id = ID value = simpleType {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:minExclusive> L'élément minExclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une valeur de type simple (simpleType). L'élément minExclusive ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <valeur attribut="199">1</valeur> <valeur attribut="170">19</valeur> <valeur attribut="99">99</valeur> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="valeur" type="valeurType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="valeurType"> <xsd:simpleContent> <xsd:extension base="valeurSimpleType"> <xsd:attribute name="attribut" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minExclusive value="100"/> <xsd:maxExclusive value="200"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Modifié le 10/05/2003 Page 54 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:simpleType name="valeurSimpleType"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minExclusive value="0"/> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> Modifié le 10/05/2003 Page 55 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.30 / L'élément maxExclusive L'élément maxExclusive permet de définir une valeur maximum pour l'élément ou l'attribut XML. <xsd:maxExclusive fixed = booléen : false id = ID value = simpleType {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:maxExclusive> L'élément maxExclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une valeur de type simple (simpleType). L'élément maxExclusive ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <valeur attribut="199">1</valeur> <valeur attribut="170">19</valeur> <valeur attribut="99">99</valeur> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="valeur" type="valeurType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="valeurType"> <xsd:simpleContent> <xsd:extension base="valeurSimpleType"> <xsd:attribute name="attribut" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minExclusive value="100"/> <xsd:maxExclusive value="200"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> Modifié le 10/05/2003 Page 56 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:simpleType name="valeurSimpleType"> <xsd:restriction base="xsd:nonNegativeInteger"> <xsd:minExclusive value="0"/> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> Modifié le 10/05/2003 Page 57 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.31 / L'élément minLength L'élément minLength permet de définir une longueur minimum pour l'élément ou l'attribut XML. <xsd:minLength fixed = booléen : false id = ID value = nonNegativeInteger {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:minLength> L'élément minLength possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une longueur maximum. L'élément minLength ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <adresse ref_site="1201203609"> http://xmlfr.org/documentations/tutoriels/001219-0001#maxlength </adresse> <adresse ref_site="3269135683"> http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#rf-maxlength </adresse> <adresse ref_site="2180877944"> http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=8 </adresse> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="adresse_uri"> <xsd:restriction base="xsd:anyURI"> <xsd:minLength value="15"/> <xsd:maxlength value="255"/>" </xsd:restriction> </xsd:simpleType> <xsd:complexType name="adresseType"> <xsd:simpleContent> <xsd:extension base="adresse_uri"> <xsd:attribute name="ref_site" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:length value="10" fixed="true"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> Modifié le 10/05/2003 Page 58 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="adresse" type="adresseType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 59 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.32 / L'élément maxlength L'élément maxlength permet de définir une longueur maximum pour l'élément ou l'attribut XML. <xsd:maxlength fixed = booléen : false id = ID value = nonNegativeInteger {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:maxlength> L'élément maxlength possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une longueur maximum. L'élément maxlength ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <adresse ref_site="1201203609"> http://xmlfr.org/documentations/tutoriels/001219-0001#maxlength </adresse> <adresse ref_site="3269135683"> http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#rf-maxlength </adresse> <adresse ref_site="2180877944"> http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=8 </adresse> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="adresse_uri"> <xsd:restriction base="xsd:anyURI"> <xsd:minLength value="15"/> <xsd:maxlength value="255"/>" </xsd:restriction> </xsd:simpleType> <xsd:complexType name="adresseType"> <xsd:simpleContent> <xsd:extension base="adresse_uri"> <xsd:attribute name="ref_site" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:length value="10" fixed="true"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:extension> </xsd:simpleContent> Modifié le 10/05/2003 Page 60 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:complexType> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element name="adresse" type="adresseType" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 61 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.33 / L'élément length L'élément length permet de définir une longueur pour l'élément ou l'attribut XML. <xsd:length fixed = booléen : false id = ID value = nonNegativeInteger {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:length> L'élément length possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie une longueur en caractères ou en octets. L'élément length ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <appreciation ref_eleve="TA120360"> Elève très studieux méritant d'entrée en faculté de Lettres </appreciation> <appreciation ref_eleve="TB213568"> Bon élève devant être plus attentionné pour obtenir de bien meilleur résultat </appreciation> <appreciation ref_eleve="SA218877"> Très bon élève méritant de passer en terminal scientifique </appreciation> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="element_racine"> <xs:complexType> <xs:sequence> <xs:element name="appreciation" type="type_appreciation" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="type_appreciation"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="ref_eleve" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> Modifié le 10/05/2003 Page 62 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xs:length value="8" fixed="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:schema> Modifié le 10/05/2003 Page 63 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.34 / L'élément whiteSpace L'élément whiteSpace permet de définir le comportement à adopter vis-à-vis des espaces blancs dans une valeur de chaîne de caractères. <xsd:whiteSpace fixed = booléen : false id = ID value = (collapse | preserve | replace) {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:whiteSpace> L'élément whiteSpace possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le comportement de cette dernière. Attributs Description fixed permet de fixer la valeur de l'élément. id précise un identificateur unique pour l'élément. value spécifie un comportement à appliquer aux espaces blancs dans une chaîne de caractères. L'élément whiteSpace ne peut être inclus que dans l'élément suivant : restriction Exemple [voir] <?xml version="1.0" encoding="iso-8859-1"?> <poesie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <titre>Locution des pierrots</titre> <texte>Je ne suis qu'un viveur lunaire Qui fait des ronds dans le bassin Et cela, sans autre dessein Que de devenir légendaire. Retroussant d'un air de défin Mes manches de Mandarin pâle, J'arrondis ma bouche et - j'exhale Des conseils doux de Crucifix Ah! oui, devenir légendaire, Au seuil des siècles charlatans ! Mais où sont les Lunes d'antan ? Et que Dieu n'est-il à refaire ?</texte> <auteur>Jules Laforgue</auteur> </poesie> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:simpleType name="type_texte"> <xsd:restriction base="xsd:string"> <xsd:whiteSpace value="preserve"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="poesie"> <xsd:complexType> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="texte" type="type_texte"/> Modifié le 10/05/2003 Page 64 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <xsd:element name="auteur" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 65 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.35 / L'élément key L'élément key permet de définir un élément clé dans une structure XML. <xsd:key id = ID name = NCName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (selector, field+)) </xsd:key> L'élément key possède plusieurs attributs destinés à l'identifier et à préciser son nom. Attributs Description id précise un identificateur unique pour l'élément. name spécifie un nom pour l'élément. L'élément key ne peut être inclus que dans l'élément suivant : element Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <site:annuaire xmlns:site="http://www.site.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.site.com c:\schema.xsd"> <page numero="1" langue="US"> <titre>XML Schema</titre> <lien>http://www.w3.org/XML/Schema/</lien> <commentaire> XML Schemas express shared vocabularies and allow machines ... </commentaire> <cle_site>1</cle_site> </page> <page numero="2" langue="FR"> <titre>XML Schema tome 0 : Introduction</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien> <commentaire> Le tome 0 de la spécification XML Schema n'est qu'une introduction ... </commentaire> <cle_site>1</cle_site> </page> <page numero="3" langue="FR"> <titre>XML Schema tome 1 : Structures</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien> <commentaire> XML Schema tome 1 : Structures est la spécification du langage ... </commentaire> <cle_site>2</cle_site> </page> <page numero="4" langue="US"> <titre>XML Schema Part 2: Datatypes</titre> <lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien> <commentaire> XML Schema: Datatypes is part 2 of the specification of the XML ... <cle_site>1</cle_site> </page> <site numero="1"> <nom>W3C</nom> Modifié le 10/05/2003 Page 66 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <url>http://www.w3.org/</url> </site> <site numero="2"> <nom>XMLfr</nom> <url>http://www.xmlfr.org/</url> </site> </site:annuaire> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.site.com" targetNamespace="http://www.site.com"> <xsd:complexType name="type_page"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="lien" type="xsd:string"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:element name="cle_site" type="xsd:positiveInteger"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="langue" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="type_site"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="url" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> </xsd:complexType> <xsd:complexType name="type_annuaire"> <xsd:sequence> <xsd:element name="page" maxOccurs="unbounded" type="type_page"> <xsd:unique name="cle_page"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./@numero"/> </xsd:unique> </xsd:element> <xsd:element name="site" maxOccurs="unbounded" type="type_site"> <xsd:key name="num_site"> <xsd:selector xpath=".//site"/> <xsd:field xpath="./@numero"/> </xsd:key> <xsd:keyref name="cle_site" refer="num_site"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./cle_site"/> </xsd:keyref> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="annuaire" type="type_annuaire"/> </xsd:schema> Modifié le 10/05/2003 Page 67 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.36 / L'élément keyref L'élément keyref permet de créer une référence à une clé existante dans le schéma XML. <xsd:keyref id = ID name = NCName refer = QName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (selector, field+)) </xsd:keyref> L'élément keyref possède plusieurs attributs destinés à définir la clé référencée. Attributs Description id précise un identificateur unique pour l'élément. name spécifie un nom pour l'élément. refer se référe à un élément key existant. L'élément keyref ne peut être inclus que dans l'élément suivant : element Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <site:annuaire xmlns:site="http://www.site.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.site.com c:\schema.xsd"> <page numero="1" langue="US"> <titre>XML Schema</titre> <lien>http://www.w3.org/XML/Schema/</lien> <commentaire> XML Schemas express shared vocabularies and allow machines ... </commentaire> <cle_site>1</cle_site> </page> <page numero="2" langue="FR"> <titre>XML Schema tome 0 : Introduction</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien> <commentaire> Le tome 0 de la spécification XML Schema n'est qu'une introduction ... </commentaire> <cle_site>1</cle_site> </page> <page numero="3" langue="FR"> <titre>XML Schema tome 1 : Structures</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien> <commentaire> XML Schema tome 1 : Structures est la spécification du langage ... </commentaire> <cle_site>2</cle_site> </page> <page numero="4" langue="US"> <titre>XML Schema Part 2: Datatypes</titre> <lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien> <commentaire> XML Schema: Datatypes is part 2 of the specification of the XML ... <cle_site>1</cle_site> Modifié le 10/05/2003 Page 68 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </page> <site numero="1"> <nom>W3C</nom> <url>http://www.w3.org/</url> </site> <site numero="2"> <nom>XMLfr</nom> <url>http://www.xmlfr.org/</url> </site> </site:annuaire> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.site.com" targetNamespace="http://www.site.com"> <xsd:complexType name="type_page"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="lien" type="xsd:string"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:element name="cle_site" type="xsd:positiveInteger"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="langue" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="type_site"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="url" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> </xsd:complexType> <xsd:complexType name="type_annuaire"> <xsd:sequence> <xsd:element name="page" maxOccurs="unbounded" type="type_page"> <xsd:unique name="cle_page"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./@numero"/> </xsd:unique> </xsd:element> <xsd:element name="site" maxOccurs="unbounded" type="type_site"> <xsd:key name="num_site"> <xsd:selector xpath=".//site"/> <xsd:field xpath="./@numero"/> </xsd:key> <xsd:keyref name="cle_site" refer="num_site"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./cle_site"/> </xsd:keyref> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="annuaire" type="type_annuaire"/> </xsd:schema> Modifié le 10/05/2003 Page 69 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.37 / L'élément unique L'élément unique permet de définir une contrainte d'unicité sur un noeud d'une arborescence XML. <xsd:unique id = ID name = NCName {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?, (selector, field+)) </xsd:unique> L'élément unique possède plusieurs attributs destinés à l'identifier et à préciser son nom. Attributs Description id précise un identificateur unique pour l'élément. name spécifie un nom pour l'élément. L'élément unique ne peut être inclus que dans les éléments suivants : element Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <site:annuaire xmlns:site="http://www.site.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.site.com c:\schema.xsd"> <page numero="1" langue="US"> <titre>XML Schema</titre> <lien>http://www.w3.org/XML/Schema/</lien> <commentaire> XML Schemas express shared vocabularies and allow machines ... </commentaire> <cle_site>1</cle_site> </page> <page numero="2" langue="FR"> <titre>XML Schema tome 0 : Introduction</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien> <commentaire> Le tome 0 de la spécification XML Schema n'est qu'une introduction ... </commentaire> <cle_site>1</cle_site> </page> <page numero="3" langue="FR"> <titre>XML Schema tome 1 : Structures</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien> <commentaire> XML Schema tome 1 : Structures est la spécification du langage ... </commentaire> <cle_site>2</cle_site> </page> <page numero="4" langue="US"> <titre>XML Schema Part 2: Datatypes</titre> <lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien> <commentaire> XML Schema: Datatypes is part 2 of the specification of the XML ... <cle_site>1</cle_site> </page> <site numero="1"> Modifié le 10/05/2003 Page 70 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <nom>W3C</nom> <url>http://www.w3.org/</url> </site> <site numero="2"> <nom>XMLfr</nom> <url>http://www.xmlfr.org/</url> </site> </site:annuaire> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.site.com" targetNamespace="http://www.site.com"> <xsd:complexType name="type_page"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="lien" type="xsd:string"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:element name="cle_site" type="xsd:positiveInteger"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="langue" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="type_site"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="url" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> </xsd:complexType> <xsd:complexType name="type_annuaire"> <xsd:sequence> <xsd:element name="page" maxOccurs="unbounded" type="type_page"> <xsd:unique name="cle_page"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./@numero"/> </xsd:unique> </xsd:element> <xsd:element name="site" maxOccurs="unbounded" type="type_site"> <xsd:key name="num_site"> <xsd:selector xpath=".//site"/> <xsd:field xpath="./@numero"/> </xsd:key> <xsd:keyref name="cle_site" refer="num_site"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./cle_site"/> </xsd:keyref> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="annuaire" type="type_annuaire"/> </xsd:schema> Modifié le 10/05/2003 Page 71 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.38 / L'élément selector L'élément selector permet de définir une expression XPath chargée de sélectionner un élément XML afin de lui appliquer une clé. <xsd:selector id = ID xpath = {sous-ensemble d'expressions XPath} {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:selector> L'élément selector possède plusieurs attributs destinés à identifier le champ et à préciser une expression XPath. Attributs Description id précise un identificateur unique pour l'élément. xpath spécifie un sous-ensemble d'expressions XPath. L'élément selector ne peut être inclus que dans les éléments suivants : key keyref unique Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <site:annuaire xmlns:site="http://www.site.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.site.com c:\schema.xsd"> <page numero="1" langue="US"> <titre>XML Schema</titre> <lien>http://www.w3.org/XML/Schema/</lien> <commentaire> XML Schemas express shared vocabularies and allow machines ... </commentaire> <cle_site>1</cle_site> </page> <page numero="2" langue="FR"> <titre>XML Schema tome 0 : Introduction</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien> <commentaire> Le tome 0 de la spécification XML Schema n'est qu'une introduction ... </commentaire> <cle_site>1</cle_site> </page> <page numero="3" langue="FR"> <titre>XML Schema tome 1 : Structures</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien> <commentaire> XML Schema tome 1 : Structures est la spécification du langage ... </commentaire> <cle_site>2</cle_site> </page> <page numero="4" langue="US"> <titre>XML Schema Part 2: Datatypes</titre> <lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien> <commentaire> XML Schema: Datatypes is part 2 of the specification of the XML ... Modifié le 10/05/2003 Page 72 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <cle_site>1</cle_site> </page> <site numero="1"> <nom>W3C</nom> <url>http://www.w3.org/</url> </site> <site numero="2"> <nom>XMLfr</nom> <url>http://www.xmlfr.org/</url> </site> </site:annuaire> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.site.com" targetNamespace="http://www.site.com"> <xsd:complexType name="type_page"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="lien" type="xsd:string"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:element name="cle_site" type="xsd:positiveInteger"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="langue" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="type_site"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="url" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> </xsd:complexType> <xsd:complexType name="type_annuaire"> <xsd:sequence> <xsd:element name="page" maxOccurs="unbounded" type="type_page"> <xsd:unique name="cle_page"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./@numero"/> </xsd:unique> </xsd:element> <xsd:element name="site" maxOccurs="unbounded" type="type_site"> <xsd:key name="num_site"> <xsd:selector xpath=".//site"/> <xsd:field xpath="./@numero"/> </xsd:key> <xsd:keyref name="cle_site" refer="num_site"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./cle_site"/> </xsd:keyref> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="annuaire" type="type_annuaire"/> </xsd:schema> Modifié le 10/05/2003 Page 73 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.39 / L'élément field L'élément field permet de sélectionner par l'intermédiaire d'une expression XPath , des éléments ou des attributs destinés à être utilisés comme clé. <xsd:field id = ID xpath = {sous-ensemble d'expressions XPath} {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (annotation?) </xsd:field> L'élément field possède plusieurs attributs destinés à identifier le champ et à préciser une expression XPath. Attributs Description id précise un identificateur unique pour l'élément. xpath spécifie un sous-ensemble d'expressions XPath. L'élément field ne peut être inclus que dans les éléments suivants : key keyref unique Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <site:annuaire xmlns:site="http://www.site.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.site.com c:\schema.xsd"> <page numero="1" langue="US"> <titre>XML Schema</titre> <lien>http://www.w3.org/XML/Schema/</lien> <commentaire> XML Schemas express shared vocabularies and allow machines ... </commentaire> <cle_site>1</cle_site> </page> <page numero="2" langue="FR"> <titre>XML Schema tome 0 : Introduction</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien> <commentaire> Le tome 0 de la spécification XML Schema n'est qu'une introduction ... </commentaire> <cle_site>1</cle_site> </page> <page numero="3" langue="FR"> <titre>XML Schema tome 1 : Structures</titre> <lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien> <commentaire> XML Schema tome 1 : Structures est la spécification du langage ... </commentaire> <cle_site>2</cle_site> </page> <page numero="4" langue="US"> <titre>XML Schema Part 2: Datatypes</titre> <lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien> <commentaire> XML Schema: Datatypes is part 2 of the specification of the XML ... Modifié le 10/05/2003 Page 74 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <cle_site>1</cle_site> </page> <site numero="1"> <nom>W3C</nom> <url>http://www.w3.org/</url> </site> <site numero="2"> <nom>XMLfr</nom> <url>http://www.xmlfr.org/</url> </site> </site:annuaire> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.site.com" targetNamespace="http://www.site.com"> <xsd:complexType name="type_page"> <xsd:sequence> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="lien" type="xsd:string"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:element name="cle_site" type="xsd:positiveInteger"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> <xsd:attribute name="langue" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="type_site"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="url" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="numero" type="xsd:positiveInteger" use="required"/> </xsd:complexType> <xsd:complexType name="type_annuaire"> <xsd:sequence> <xsd:element name="page" maxOccurs="unbounded" type="type_page"> <xsd:unique name="cle_page"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./@numero"/> </xsd:unique> </xsd:element> <xsd:element name="site" maxOccurs="unbounded" type="type_site"> <xsd:key name="num_site"> <xsd:selector xpath=".//site"/> <xsd:field xpath="./@numero"/> </xsd:key> <xsd:keyref name="cle_site" refer="num_site"> <xsd:selector xpath=".//page"/> <xsd:field xpath="./cle_site"/> </xsd:keyref> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:element name="annuaire" type="type_annuaire"/> </xsd:schema> Modifié le 10/05/2003 Page 75 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.40 / L'élément annotation L'élément annotation propose une structure permttant de fournir des informations applicatives ou destinées à l'utilisateur dans un schéma. <xsd:annotation id = ID {tout attribut ayant un espace de noms différent de celui du schéma...}> Contenu : (appinfo | documentation)* </xsd:annotation> L'élément annotation possède un seul attribut destiné à l'identifier. Attributs id Description précise un identificateur unique pour l'élément. L'élément annotation ne peut être inclus que dans les éléments suivants : all any anyAttribute attribute attributeGroup choice complexContent complexType element enumeration extension field fractionDigits group import include key keyref length list maxExclusive maxInclusive maxLength minExclusive minInclusive minLength pattern redefine restriction schema selector sequence simpleContent simpleType totalDigits union unique whiteSpace Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <code_service>K512</code_service> <code_service>R256</code_service> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:annotation> <xsd:documentation> Liste des codes de services établie le 12/04/2002 </xsd:documentation> </xsd:annotation> <xsd:element name="code_service"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="K512"/> <xsd:enumeration value="R256"/> <xsd:enumeration value="A002"/> </xsd:restriction> </xsd:simpleType> Modifié le 10/05/2003 Page 76 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:element> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element ref="code_service" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 77 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.41 / L'élément appinfo L'élément appinfo permet de spécifier des informations destinées à être utilisée par une application. <xsd:appinfo source = anyURI> Contenu : ({any})* </xsd:appinfo> L'élément appinfo possède un seul attribut destiné à cibler une information applicative. Attributs source Description spécifie une adresse URI pointant vers une information. L'élément appinfo ne peut être inclus que dans l'élément suivant : annotation Exemple [voir] <?xml version="1.0"?> <element_racine xmlns="http://www.demo.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.demo.org/schema.xsd"> <a>10</a> <b>20</b> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.demo.org" xmlns="http://www.demo.org" xmlns:sch="http://www.ascc.net/xml/schematron" elementFormDefault="qualified"> <xsd:annotation> <xsd:appinfo> <sch:title>Schematron Validation</sch:title> <sch:ns prefix="d" uri="http://www.demo.org"/> </xsd:appinfo> </xsd:annotation> <xsd:element name="element_racine"> <xsd:annotation> <xsd:appinfo> <sch:pattern name="Vérifie que A est plus grand que B"> <sch:rule context="d:element_racine"> <sch:assert test="d:A > d:B" diagnostics="moinsGrandQue"> A doit être plus grand que B. </sch:assert> </sch:rule> </sch:pattern> <sch:diagnostics> <sch:diagnostic id="moinsGrandQue"> Erreur! A est moins grand que B A = <sch:value-of select="d:A"/> B = <sch:value-of select="d:B"/> </sch:diagnostic> </sch:diagnostics> </xsd:appinfo> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="A" type="xsd:integer"/> <xsd:element name="B" type="xsd:integer"/> </xsd:sequence> </xsd:complexType> Modifié le 10/05/2003 Page 78 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 79 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 2.42 / L'élément documentation L'élément documentation spécifie une information à propos du schéma destinée à l'utilisateur. <xsd:documentation source = anyURI xml:lang = language> Contenu : ({any})* </xsd:documentation> L'élément documentation possède deux attributs destinés à cibler une information et à définir le langage utilisé par cette dernière. Attributs source Description spécifie une adresse URI pointant vers une information. xml:lang précise le langage dans lequel est écrit la documentation. L'élément documentation ne peut être inclus que dans l'élément suivant : annotation Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <code_service>K512</code_service> <code_service>R256</code_service> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="code_service"> <xsd:simpleType> <xsd:annotation> <xsd:documentation> Liste des codes de services établie le 12/04/2002 </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="K512"/> <xsd:enumeration value="R256"/> <xsd:enumeration value="A002"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="element_racine"> <xsd:complexType> <xsd:annotation> <xsd:documentation> L'élément code_service est limité à 50 occurrences par page </xsd:documentation> </xsd:annotation> <xsd:sequence> <xsd:element ref="code_service" maxOccurs="50"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Modifié le 10/05/2003 Page 80 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3 / XML-Data Reduced La technologie XML-Data Reduced (XDR) est un langage de schéma implémenté à partir de la deuxième version de l'analyseur Microsoft MSXML. Le langage XDR est apparu avant que les propositions du W3C sur les schémas ne deviennent des spécifications. En conséquence, le W3C s'appuyant sur cette technologie expérimentée conservera certaines de ces caractéristiques dans ses normes finales. Toutefois, les schémas XML-Data Reduced ayant été utilisés dans de nombreuses applications comme BizTalk devraient être dépréciés et remplacés par les spécifications XML Schema. Sommaire 3.1 / L'élément schema 3.2 / L'élément elementType 3.3 / L'élément element 3.4 / L'élément attributeType 3.5 / L'élément attribute 3.6 / L'élément datatype 3.7 / L'élément group 3.8 / L'élément description Modifié le 10/05/2003 Page 81 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.1 / L'élément schema L'élément schema encadre une définition de schéma en se comportant comme un élément racine. <Schema name="schema-name" xmlns="namespace"> ... </Schema> L'attribut name représente le nom du schéma. L'attribut xmlns indique un ou plusieurs espaces de noms destinés à être utilisé avec le schéma. L'élément schema est unique et ne peut posséder de parents. Par contre, il est susceptible de contenir des éléments enfants tels que ElementType, AttributeType et description. Les espaces de noms spécifiés utilisant l'attribut xmlns doivent inclure l'espace de noms pour les éléments de définition du schéma, soit ElementType, AttributeType, etc.. N'importe quel préfixe peut être utilisé, mais il est opportun de créer un espace de nom par défaut pour le schéma afin d'éviter d'utiliser des préfixes devant les éléments le composant. L'élément schema dans un schéma XML doit aussi contenir des déclarations d'espaces de noms pour tous les autres schémas, comme l'espace de noms qui définit les types de données insérés dans le schéma. <Schema name="nom_schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> ... </Schema> Modifié le 10/05/2003 Page 82 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.2 / L'élément elementType L'élément elementType définit un type d'élément pour une utilisation à l'intérieur d'une élément Schema. <ElementType content="empty | textOnly | eltOnly | mixed" dt:type="Type_Donnee" model="open | closed" name="Identificateur" order="one | seq | many"> </ElementType> L'attribut content détermine si le contenu doit être vide (empty), ou contient du texte (textOnly), des éléments (eltOnly) ou les deux derniers (mixed). L'attribut dt:type indique un type de données pour l'attribut. L'attribut model spécifie si l'élément peut (open) ou ne peut pas (closed) inclure des éléments, des attributs ou un contenu mixte non-déclarés explicitement dans le modèle de contenu. L'attribut name fournit un identificateur pour le type d'attribut. L'attribut order permet un seul jeu d'éléments (one), ou plusieurs éléments apparaissant dans une séquence spécifiée (seq) ou un ordre quelconque (many). La valeur seq est requise pour spécifier des séquences valides. Paar exemple, elle peut être utilisée pour indiquer lorsqu'une séquence particulière, telle que x1,y1 ou x2,y2 est valide mais aucune autre combinaison n'est valide. La valeur many de l'attribut order crée les attributs maxOccurs et minOccurs non pertinent durant la validation. Plutôt qu'une utilisation de many pour l'attribut order en conjonction avec minOccurs et maxOccurs, utilise à la place la valeur seq. Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <librairie xmlns="x-schema:c:\schema.xdr"> <livre isbn="2212110472" categorie="XML"> <titre> Services Web avec XML, SOAP, WSDL, UDDI, ebXML... </titre> <auteur>Jean-Marie Chauvet</auteur> <editeur>Eyrolles</editeur> </livre> <livre isbn="2100065203" categorie="XML"> <titre>XML - Manuel de Référence</titre> <auteur>R.Wyke</auteur> <auteur>S.Rehman</auteur> <auteur>B.Leupen</auteur> <editeur>Microsoft Press</editeur> </livre> <livre isbn="1928994474" categorie="XML"> <titre>XML.NET Developer's Guide</titre> <auteur>Collectif</auteur> <editeur>Syngress</editeur> </livre> </librairie> <?xml version="1.0" encoding="ISO-8859-1"?> <Schema name="schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="auteur" model="closed" content="textOnly" dt:type="string"/> <ElementType name="editeur" model="closed" content="textOnly" dt:type="string"/> Modifié le 10/05/2003 Page 83 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <ElementType name="librairie" model="closed" content="eltOnly" order="seq"> <attributeType name="xmlns" dt:type="string"/> <attribute type="xmlns"/> <element type="livre" minOccurs="1" maxOccurs="*"/> </ElementType> <ElementType name="livre" model="closed" content="eltOnly" order="seq"> <attributeType name="isbn" dt:type="enumeration" dt:values="1928994474 2100065203 2212110472" required="yes"/> <attributeType name="categorie" dt:type="string" required="yes"/> <attribute type="isbn"/> <attribute type="categorie"/> <element type="titre" minOccurs="1" maxOccurs="1"/> <element type="auteur" minOccurs="1" maxOccurs="*"/> <element type="editeur" minOccurs="1" maxOccurs="1"/> </ElementType> <ElementType name="titre" model="closed" content="textOnly" dt:type="string"/> </Schema> Modifié le 10/05/2003 Page 84 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.3 / L'élément element L'élément element se référe à un type d'élément déclaré qui peut apparaître à l'intérieur de la portée de l'élément ElementType nommé. <element type="Type_Element" [minOccurs="{0 | 1}"] [maxOccurs="{1 | *}"]> </element> L'attribut type indique le nom d'un élément ElementType défini dans le schéma ou un autre schéma spécifié par un espace de noms fourni. La valeur donnée doit correspondre à l'attribut name de l'élément ElementType. Le type peut inclure un préfixe d'espace de noms. L'attribut minOccurs détermine si l'élément est requis au mois une fois (1) ou ne l'est pas (0). L'attribut maxOccurs détermine si l'élément doit apparaître au maximum une fois (1) ou un nombre de fois illimité. Les attributs minOccurs et maxOccurs ont la valeur 1 par défaut. Un élément sans attribut spécifié utilise ces valeurs par défaut et par conséquent doit apparaître une seule fois dans un modèle de contenu. L'élément element peut posséder un élément parent ElementType ou group, mais aucun élément enfant. Les déclarations d'élément ElementType peuvent contraindre le contenu et les attributs qui apparaissent dans les éléments de type nommé en se référant à d'autres déclarations de types d'élément ou d'attribut. Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns="x-schema:c:\schema.xdr"> <element_enfant> Chaîne de caractères </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <Schema name="schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="element_enfant" model="closed" content="textOnly" dt:type="string"/> <ElementType name="element_racine" model="closed" content="eltOnly" order="seq"> <attributeType name="xmlns" dt:type="string"/> <attribute type="xmlns"/> <element type="element_enfant" minOccurs="1" maxOccurs="1"/> </ElementType> </Schema> Modifié le 10/05/2003 Page 85 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.4 / L'élément attributeType L'élément attributeType définit un type d'attribut pour une utilisation à l'intérieur d'un élément schema. <AttributeType default="Valeur" dt:type="Type_Primitif" dt:values="Valeur_Enumeree" name="Identificateur" required="{yes | no}"> </AttributeType> L'attribut default définit une valeur par défaut pour l'attribut. L'attribut dt:type indique un type de données pour l'attribut. L'attribut dt:value spécifie une liste de valeurs possible pour l'attribut si dt:type est fixé à enumerated. L'attribut name fournit un identificateur pour le type d'attribut. L'attribut required détermine si l'attribut est requis dans l'élément. Dans l'implémentation fournie avec Internet Explorer 5.0, un attribut peut prendre un des types suivants : entity, entities, enumeration, id, idref, idrefs, nmtoken, nmtokens, notation, string. Lorsque le type enumeration est sélectionné, l'attribut dt:values doit indiquer une liste de valeurs permises. Des références à cet attribut à l'intérieur d'une définition d'un ElementType sont créées dans le schéma avec l'élément attribute. Le nom fourni correspond à l'attribut type de l'élément attribute. L'élément AttributeType peut posséder un élément parent ElementType ou Schema et des éléments enfants datatype et description. Une déclaration AttributeType contenue à l'intérieur d'un ElementType définit que le type d'attribut à l'intérieur de la portée du type d'élément qui le contient. Dans un schéma XML, l'ordre d'apparence des attributs dans un élément n'est pas contraint et un attribut donné ne peut apparaître plus d'une fois dans un élément. <attributeType name="couleurs" dt:type="enumeration" dt:values="red green blue"/> <!ATTLIST x colors (red | green | blue)> L'exemple suivant déclare un type d'attribut appelé nom. Cette déclaration contraint les attributs nom pour contenir seulement un nom symbolique. <attributeType name="nom" dt:type="nmtoken"/> Modifié le 10/05/2003 Page 86 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns="x-schema:c:\schema.xdr" attribut_racine="valeur"> <element_enfant attribut_enfant="valeur"> Chaîne de caractères </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <Schema name="schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="element_enfant" model="closed" content="textOnly" dt:type="string"> <attributeType name="attribut_enfant" dt:type="string" required="yes"/> <attribute type="attribut_enfant"/> </ElementType> <ElementType name="element_racine" model="closed" content="eltOnly" order="seq"> <attributeType name="attribut_racine" dt:type="string" required="yes"/> <attribute type="attribut_racine"/> <attributeType name="xmlns" dt:type="string"/> <attribute type="xmlns"/> <element type="element_enfant" minOccurs="1" maxOccurs="1"/> </ElementType> </Schema> Modifié le 10/05/2003 Page 87 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.5 / L'élément attribute L'élément attribute correspond à un type d'attribut déclaré qui peut apparaître à l'intérieur de la portée d'un élément défini par elementType. <attribute default="Valeur" type="Type_Attribut" [required="{yes | no}"]> ... </attribute> L'attribut default définit une valeur par défaut pour l'élément attribute. L'attribut type indique le nom de l'élément attributeType défini dans le schéma en cours. L'attribut required détermine si l'élément attribute est requis dans l'élément. Lorsque l'attribut required est fixé à yes et une valeur est indiquée dans l'attribut default, la valeur par défaut fournie doit toujours être la valeur de l'attribut. Les documents contenant d'autres attributs sont invalides. Lorsque l'attribut required est fixé à yes et aucune valeur par défaut n'est spécifiée, chaque élément dont le type est déclaré pour avoir l'attribut, doit fournir sa valeur. L'élément attribute posséde forcément un élément parent elementType, mais aucun enfant. Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns="x-schema:c:\schema.xdr" attribut_racine="valeur"> <element_enfant attribut_enfant="valeur"> Chaîne de caractères </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <Schema name="schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="element_enfant" model="closed" content="textOnly" dt:type="string"> <attributeType name="attribut_enfant" dt:type="string" required="yes"/> <attribute type="attribut_enfant"/> </ElementType> <ElementType name="element_racine" model="closed" content="eltOnly" order="seq"> <attributeType name="attribut_racine" dt:type="string" required="yes"/> <attribute type="attribut_racine"/> <attributeType name="xmlns" dt:type="string"/> <attribute type="xmlns"/> <element type="element_enfant" minOccurs="1" maxOccurs="1"/> </ElementType> </Schema> Modifié le 10/05/2003 Page 88 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.6 / L'élément datatype L'élément datatype spécifie le type de données pour les éléments ElementType et AttributeType. <datatype dt:type="Type_Donnee"/> L'attribut dt:type détermine un type de données pour un élément ou un attribut. <ElementType name="colors"> <datatype dt:type="char"/> </ElementType> L'élément datatype peut posséder un élément parent ElementType ou AttributeType et aucun élément enfant. La fonctionnalité de datatype est une extension proposée par le schéma XML qui ne peut être spécifié en utilisant la syntaxe de la définition de type de document (DTD). Sommaire 3.6.1 / Référence des types de données XML Modifié le 10/05/2003 Page 89 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.6.1 / Référence des types de données XML En plus des chaînes de caractères et les autres types primitifs définis par les recommandations XML 1.0, l'analyseur XML de Microsoft supporte un jeu additionnel de types de données. Il supporte aussi les conversions entre les type primitifs et les types de données précités. Les types de données sont référencés à partir de l'espace de noms urn:schemas-microsoftcom:datatypes. Pour utiliser les types de données à l'intérieur d'un schéma XML, il suffit de déclarer cet espace de noms à l'intérieur de l'élément schema par l'intermédiaire de l'attribut xmlns. <Schema name="schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <!-- ... --> </Schema> Types de données Type Description id représente un attribut de type ID. idref représente une référence à un attribut de type ID. idrefs représente une liste de références à des attributs ID. nmtoken représente un attribut de type NMTOKEN. nmtokens représente des attributs de type NMTOKENS. enumeration représente une liste de valeurs de type NMTOKEN permises. string représente un chaîne de caractères CDATA. number représente un nombre décimal. int représente un entier. fixed.14.4 représente un nombre avec 14 chiffres avant la virgule et 4 après. boolean représente une valeur booléenne true ou false. dateTime représente une date au format ISO 8601 (2002-05-07T19:40:25). dateTime.tz représente une date au format ISO 8601 (2002-05-07T19:40:25-05:00). date représente une date au format ISO 8601 (2002-10-08). time représente une heure au format ISO 8601 (17:30:54). time.tz représente une date au format ISO 8601 (17:30:25-08:00). i1 représente un nombre entier compris entre -128 et 127. i2 représente un nombre entier compris entre -32768 et 32767. i4 représente un nombre entier compris entre -2147483648 et 2147483647. i8 représente un nombre entier compris entre -9223372036854775808 et 9223372036854775807. ui1 représente un nombre entier non-signé compris entre 0 et 255. ui2 représente un nombre entier non-signé compris entre 0 et 65535. ui4 représente un nombre entier non-signé compris entre 0 et 4294967296. ui8 représente un nombre entier non-signé compris entre 0 et 18446744073709551615). Modifié le 10/05/2003 Page 90 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML r8 représente un nombre à virgule flottante compris entre 2.2250738585072014E-308 et 1.7976931348623157E+308. r4 représente un nombre à virgule flottante compris entre 1.17549435E-38F et 3.40282347E+38F. uri représente une adresse URI (Uniform Resource Identifier). bin.hex représente des données binaires encodées en hexédécimal. bin.base64 représente des données binaires encodées en Base 64. Modifié le 10/05/2003 Page 91 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.7 / L'élément group L'élément group organise le contenu à l'intérieur d'un groupe pour spécifier une séquence. <group maxOccurs="{1 | *}" minOccurs="{0 | 1}" order="{one | seq | many}"> ... </group> L'attribut minOccurs détermine si l'élément est requis au mois une fois (1) ou ne l'est pas (0). L'attribut maxOccurs détermine si l'élément doit apparaître au maximum une fois (1) ou un nombre de fois illimité. Les attributs minOccurs et maxOccurs ont une valeur par défaut égale à 1. Un groupe sans attributs doit apparaître une et une seule fois dans un modèle de contenu. L'attribut order permet une seule instance (one) de chaque élément contenu dans un groupe, ou plusieurs éléments apparaissant dans une séquence spécifiée (seq) ou un ordre quelconque (many). L'élément group possède un parent ElementType et des frères element ou description. L'attribut order prend les mêmes valeurs que l'attribut order de l'élément ElementType. Exemple [voir] <?xml version="1.0" encoding="ISO-8859-1"?> <recueil xmlns="x-schema:c:\schema.xdr"> <poeme> <titre>Locution des pierrots</titre> <strophe>Je ne suis qu'un viveur lunaire Qui fait des ronds dans le bassin Et cela, sans autre dessein Que de devenir légendaire.</strophe> <strophe>Retroussant d'un air de défin Mes manches de Mandarin pâle, J'arrondis ma bouche et - j'exhale Des conseils doux de Crucifix</strophe> <strophe>Ah! oui, devenir légendaire, Au seuil des siècles charlatans ! Mais où sont les Lunes d'antan ? Et que Dieu n'est-il à refaire ?</strophe> <auteur>Jules Laforgue</auteur> </poeme> <poeme> <ref>1254369785</ref> <lien>http://localisation.poeme.com</lien> </poeme> </recueil> <?xml version="1.0" encoding="ISO-8859-1"?> <Schema name="schema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="recueil" model="closed" content="eltOnly" order="seq"> <element type="poeme" minOccurs="1" maxOccurs="*"/> </ElementType> <ElementType name="lien" model="closed" content="textOnly" dt:type="uri"/> <ElementType name="ref" model="closed" content="textOnly" dt:type="i4"/> <ElementType name="auteur" model="closed" content="textOnly" dt:type="string"/> <ElementType name="strophe" model="closed" content="textOnly" dt:type="string"/> Modifié le 10/05/2003 Page 92 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML <ElementType name="titre" model="closed" content="textOnly" dt:type="string"/> <ElementType name="poeme" model="closed" order="one"> <group order="seq" minOccurs="1"> <element type="titre" minOccurs="1" maxOccurs="1"/> <element type="strophe" minOccurs="1" maxOccurs="*"/> <element type="auteur" minOccurs="1" maxOccurs="1"/> </group> <group order="seq" minOccurs="1"> <element type="ref" minOccurs="1" maxOccurs="1"/> <element type="lien" minOccurs="1" maxOccurs="1"/> </group> </ElementType> </Schema> Modifié le 10/05/2003 Page 93 sur 94 L'Altruiste : Le guide des langages Web - Les schémas XML 3.8 / L'élément description L'élément description fournit une documentation à propos d'un élément ElementType ou AttributeType. <description> Contenu XML bien formé... </description> L'élément description peut posséder un élément parent ElementType, AttributeType, element, attribute, group, Schema et n'importe quel contenu XML bien formé. Un seul et unique élément description peut être contenu dans un des éléments parents précités. L'information fournie à l'intérieur de l'élément description n'est pas utilisée dans la validation, mais donne un chemin standardisé pour fournir une information qui peut être récupéré par des outils. <ElementType name="livre"> <description> 'date' indique la date d'édition du livre. </description> <element type="date"/> </ElementType> Modifié le 10/05/2003 Page 94 sur 94