Programmation Web : Schémas XSD Jérôme CUTRONA jerome.cutrona@univ-reims.fr 09:44:15 Programmation Web 2018-2019
Introduction 09:44:15 Programmation Web 2018-2019
Introduction L’utilisation d’un fichier XML demande la vérification de sa cohérence Un document bien formé n’est pas suffisant Les documents XML sont utilisés, entre autre, pour l’échange de données Traiter des données incorrectes ? Les vérifier manuellement ? Programmes de contrôle ? Validation d’un document XML : DTD : Document Type Definition XSD : XML Schema Definition 09:44:15 Programmation Web 2018-2019
Validation d’un document XML 09:44:15 Programmation Web 2018-2019
DTD : Document Type Definition Description non XML de la structure admissible d’un document à base de balises Décrit les éléments et attributs autorisés Décrit la structure autorisée : quels éléments peuvent se trouver dans quels éléments Peut être interne ou externe au document XML Description de structure Peu ou pas de contrôle de valeurs contenues dans la structure Limité, largement dépassé par les schémas XSD 09:44:15 Programmation Web 2018-2019
XSD : XML Schema Definition Description XML de la structure admissible d’un document à base de balises Décrit les éléments et attributs autorisés Décrit la structure autorisée : quels éléments peuvent se trouver dans quels éléments Peut être interne ou externe au document XML Description de structure Contrôle de valeurs contenues dans la structure Utilise les espaces de noms (namespace) 09:44:15 Programmation Web 2018-2019
Espaces de noms/nommage XML 09:44:15 Programmation Web 2018-2019
Espaces de noms XML Lever l’ambiguïté sur le nom des balises Ex : utilisation de la balise <table> de HTML et de <table> (meuble) dans une structure XML Distingués par l’utilisation d’un espace de noms <h:table> pour HTML <f:table> pour XML Utilisation de l’attribut xmlns <h:table xmlns:h="http://www.w3.org/TR/html4/"> <f:table xmlns:f="http://www.w3schools.com/furniture"> <root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> 09:44:15 Programmation Web 2018-2019
Espaces de noms XML Identification par une chaîne unique : URI <h:table xmlns:h="http://www.w3.org/TR/html4/"> Préfixe et identification xmlns:préfixe="Identification" La déclaration d'un espace de nommage doit se faire dans un élément (une balise) Utilisable pour l’élément et ses descendants xmlns sans préfixe = espace de nom par défaut 09:44:15 Programmation Web 2018-2019
Schémas XML 09:44:15 Programmation Web 2018-2019
Que peut-on vérifier avec un schéma XSD Éléments autorisés dans le document Attributs autorisés dans le document Quels sont les éléments enfants Ordre des éléments enfants Nombre des éléments enfants Éléments vides ou contenant du texte Types de données personnalisables pour les éléments et les attributs Valeurs fixes et pour défaut pour les éléments et les attributs 09:44:15 Programmation Web 2018-2019
Base des schémas XSD Un schéma XML est un document XML Sa déclaration est celle d’un document XML : <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... </xs:schema> Balise racine Espace de noms 09:44:15 Programmation Web 2018-2019
Référencer un schéma XML <?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Espace de noms par défaut Utiliser le schéma note.xsd pour l’espace de noms http://www.w3schools.com Déclaration de l’espace de noms xsi 09:44:15 Programmation Web 2018-2019
Contenu d’un schéma XSD 09:44:15 Programmation Web 2018-2019
Éléments simples Un élément simple contient du texte <xs:element name="xxx" type="yyy"/> xxx est le nom de l’élément yyy est le type de l’élément Les types prédéfinis dans les schémas sont : xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 09:44:15 Programmation Web 2018-2019
Éléments simples : exemple <login>cutron01</login> <lastlog>2014-09-04</lastlog> <webservers>2</webservers> <xs:element name="login" type="xs:string"/> <xs:element name="lastlog" type="xs:date"/> <xs:element name="webservers" type="xs:integer"/> 09:44:15 Programmation Web 2018-2019
Attributs Attribut d’un élément <xs:attribute name="xxx" type="yyy"/> xxx est le nom de l’attribut yyy est le type de l’attribut Exemple <login realm="INSERM">cutron01</login> <xs:attribute name="realm" type="xs:string"/> 09:44:15 Programmation Web 2018-2019
Restrictions / facettes Utilisées pour définir les valeurs acceptables Exemple : <xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element> 09:44:15 Programmation Web 2018-2019
Restrictions possibles xs:minInclusive xs:minExclusive xs:maxInclusive xs:maxExclusive xs:fractionDigits xs:enumeration xs:pattern xs:length xs:minLength … 09:44:15 Programmation Web 2018-2019
Éléments complexes Un élément complexe contient d’autres éléments et/ou des attributs <xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> Élément complexe Précise l’ordre des fils 09:44:15 Programmation Web 2018-2019
Et après ? 09:44:15 Programmation Web 2018-2019
Pour aller plus loin Les éléments présentés sont la base des schémas XSD Les schémas XSD possèdent d’autres capacités de description des documents XML et de nombreuses subtilités Vous venez de découvrir les fondements Suffisant pour les TP http://www.w3schools.com/schema/ 09:44:15 Programmation Web 2018-2019