Mise à Niveau XML Sana Sellami sana.sellami@univ-amu.fr M2PRO SIR 2015-2016
2 Pourquoi? Vous rafraîchir la mémoire Qu est ce qu un document XML? Qu est ce qu un schéma XML? Comment manipuler un document XML? Comment analyser un document XML?
3 Document XML prologue Élément racine Élément Corps du document attribut
Document XML Schéma XML XSLT SAX Document XML Prologue? <?xml version="1.0" encoding="iso-8859-1 standalone="yes"?> Optionnel mais conseillé Paramètre Version: Version de XML utilisée pour décrire le document soit 1.0 soit 1.1 Paramètre encoding: Le jeu/codage de caractères utilisé. L encodage est basé sur la norme ISO 10646 (http://www.unicode.org). Les analyseurs XML reconnaissent automatiquement l'encodage UTF-8 et UTF-16. Paramètre standalone: Une indication de traitement qui précis si le fichier est autonome.
5 Elément Combien d éléments racine? Comment déclarer un élément? Une balise de début qui contient le nom de l élément (dont le premier caractère est soit une lettre, soit un espace souligné soit un deux points) et une balise de fin Que peut comporter un élément? Eventuellement des attributs: codepostal= 13013 D un contenu: vide (pas de contenu sauf des attributs), du texte, du texte et des éléments (élément mixte), un mélange de tout ça (élément complexe).
6 Elément Complexe <element-complexe> <element1> textuel </element1> <element2> <!--exemple d élément imbriqué complexe-- > <sous-element>encore un élément textuel </sous-element> </element2> </ element-complexe >
7 Commentaires <!-- commentaire--> Instructions de traitement Destinées aux applications qui traitent les documents XML. Elles sont l'analogue des directives #... du langage C qui s'adressent au compilateur Commence par <? Suivi du nom de l instruction de traitement suivi de ses éventuels paramètres suivis de?> <?xml-stylesheet href= unefeuille.css type= text/css?>
8 Document Bien Formé? Doit commencer par une déclaration XML Toutes les balises avec et sans contenu doivent être fermées Doit contenir un et un seul élément racine Les balises ne doivent pas se chevaucher Les valeurs d attributs doivent être entre guillemets ou apostrophes La casse doit être respectée pour toutes les occurrences de noms de balise (MAJUSCULES ou minuscules). Le nom d un élément ne peut commencer par un chiffre. Si le nom d un élément est composé d un seul caractère il doit être dans la plage [a-za-z] ou _ ou :. Avec au moins 2 caractères, le nom d un élément peut contenir _, -,. et : plus les caractères alphanumériques (attention, le caractère : est réservé à un usage avec les espaces de nom). Document Valide? Par rapport une DTD, un schéma XML
9 Schéma XML Qu est ce qu un schéma XML? Est un document XML bien formé(arbre) avec : Une racine schema (xs:schema ou xsd:schema), L'espace de noms des schémas XML est identifié par l'url http://www.w3.org/2001/xmlschema. Généralement associé, au préfixe xsd ou à xs. Une suite de définitions de types, d'éléments et d'attributs <?xml version= 1.0 encoding= iso-8859-1?> <xsd:schema xmlns:xsd= http://www.w3.org/2001/xmlschema > <! déclarations d éléments, d attributs et définitions de types -->.. </xsd:schema>
10 Comment lier un schéma XML à un document XML? Un document XML décrit par un XSD est appelé instance document. Dans le document XML: Il faut déclarer le namespace xsi: ( XMLSchema-instance) 2 façons de lier un schéma XSD à un document XML: Sans espace de noms Avec espace de noms
11 Comment lier un schéma XML à un document XML? Sans espace de noms La balise ouvrante de l élément racine du document XML contient des informations sur le schéma L attribut xsi:nonamespaceschemalocation définit l URL de votre unique XSD permettant de valider l intégralité du document. Le document XML: Le schéma XML (maisons.xsd):
12 Comment lier un schéma XML à un document XML? Avec espace de noms Le document XML doit inclure en plus : une déclaration pour le XMLSchema-instance namespace un attribut xsi:schemalocation qui dit où trouver XSD Cet attribut peut contenir plusieurs pairs "namespace-url " Le schéma XML (maisons.xsd)
13 Qu est ce qu on déclare dans un schéma XML? Des éléments Des attributs Leurs types: Simples pour les attributs Simples ou complexes pour les éléments Qui peuvent être définis par extension ou par restriction Des groupes d éléments et d attributs
14 Comment on déclare les éléments? Syntaxe: <xs:element/> Éléments parents: schema, choice, all, sequence
15 Déclaration locale ou globale Comment on fait référence à un élément global? <!-- Déclaration globale de l'élément title --> <xsd:element name="title type="titletype"/>... <!-- Définition d'un type global ou local --> <xsd:complextype... >... <!-- Utilisation de l'élément title --> <xsd:element ref="title"/>... </xsd:complextype>
16 Comment on déclare les attributs? Syntaxe: <xs:attribute/>
17 Déclaration d attributs Comment indiquer qu un attribut est optionnel? Use: dire si l attribut est optionnel (optional), obligatoire (required) ou interdit (prohibited) <xs:attribute name="lang" type="xs:string" use=" optional"/> Comment préciser qu un attribut a une valeur par défaut? <xs:attribute name="lang" type="xs:string" default="en"/> Par défaut un attribut est optionnel Comment on peut affecter une valeur fixe à un attribut? <xs:attribute name="lang" type="xs:string" fixed="en"/>
18 Types de données Quels types de données sont déclarés dans un schéma XML? a) Types simples: Utilisés pour les déclarations d attributs, d éléments dont le contenu se limite à des données atomiques. Ne peuvent pas contenir d autres éléments ou attributs 2 catégories Types de base: entier, chaine de caractères, etc. À définir b) Types complexes: Type composé d autres éléments ou contenant des attributs Permet de définir des séquences d éléments, des ensembles, des cardinalités, etc
19 Types Simples Types de base Les chaînes et les données xs:string: toute chaîne de caractères xs:normalizedstring: suite de blancs compactée xs:token: idem plus les blancs devant et derrière Les décimaux et les durées xs:time (HH:MM:SS.sss) xs:date (YYYY-MM-DD) xs:datetime (datettime) Les entiers Les noms Les clefs et les références: xs:id; xs:idref, xs:idrefs Les données de la DTD: xs:entity, xs: NMTOKEN, etc.
20 Types Simples
21 Types Simples Comment peut on définir un type simple? Syntaxe: <xs:simpletype> Peut être Nommé: défini directement sous la racine et muni de l attribut name qui donne son nom. <xs:simpletype name="montype"> Anonyme <xs:simpletype> sera inclus dans les déclarations xs:element ou xs:attribute des éléments ou attributs qu il sert à typer.
22 Types Simples Comment peut on déclarer un ensemble de valeurs de même type séparés par un blanc? Les listes <xs:list/> La liste 10 20 333 4 3 est donc bien cohérente avec ce type
23 Types Simples Comment déclarer plusieurs types? Type Union: <xs:union/> Les types simples sont spécifiés par leur nom (attribut membertypes) <xsd:simpletype name= " numérodetéléphonetechnique "> <xsd: union membertypes= "xsd:string numérodetéléphone"/> </xsd:simpletype> Instance valide: <téléphone>18</téléphone> <téléphone>pompiers </téléphone>
24 Types Complexes Comment peut on définir un type complexe? Syntaxe: <xs:complextype/>
25 Types Complexes Quand est ce qu on considère qu un élément est de type complexe? 1. Éléments vides (contenant des attributs) <product pid="1345"/> 2. Éléments qui contiennent d autres éléments <employee> <firstname>john</firstname> <lastname>smith</lastname> </employee> 3. Éléments qui contiennent seulement du texte et des attributs <food type="dessert">ice cream</food> 4. Éléments qui contiennent d autres éléments et du texte (Mixte) <description> It happened on <date lang="norwegian">03.03.99</date>... </description>
26 Types Complexes 1. Elément vide Ne peut contenir que des attributs Définition d un élément vide: Doc valide Doc valide Doc non valide
27 Types Complexes 2. Eléments composés d éléments est un type complexe contenant un élément qui contient seulement d autres éléments Exemple : élément "person" contenant d autres éléments On peut définir l élément "person" dans un schéma comme suit :?
28 Types Complexes 3. Éléments qui contiennent seulement du texte et des attributs Met en commun 2 principes contradictoires: le contenu est du texte (type simple)+ un typage complexe puisque l élément contient un attribut Se fait par dérivation une extension de type L'extension de type est similaire à l'héritage des langages de POO. Elle permet de définir un nouveau type en ajoutant des éléments et/ou des attributs à un type.
29 Types Complexes 4. Types complexes à contenu mixte Peut contenir des sous éléments, des attributs et du texte Afin de spécifier qu'il peut contenir également du texte, on utilise l'attribut mixed de l'élément xs:complextype. Par défaut, mixed="false"; il faut dans ce cas forcer mixed="true". Par exemple: L élément letter:
30 Types Complexes Comment définir une séquence d éléments? Indicateurs d ordre pour définir comment les éléments devraient se produire Sans ordre: (xs:all) Les choix: (xs:choice) Les séquences (xs:sequence)
31 Types Complexes Comment définir un nombre d occurrences pour un élément? 2 indicateurs: maxoccurs et minoccurs L infini est caractérisé par la chaîne unbounded
32 Dérivations de types Comment dériver de nouveaux types? Par extension Par restriction
33 Dérivations par extension a) Type complexe à contenu Simple: lui ajouter de nouveaux attributs. Similaire à l extension de type simple (toujours <xs:extension/>) L'élément <xs:extension> est encore enfant d'un élément <xs:simplecontent> b) Type complexe à contenu Complexe: Ajouter du contenu et/ou des attributs. Le contenu est ajouté après le contenu du type de base L'élément <xs:extension> est enfant d'un élément <xs:complexcontent>
34 Dérivations par extension 1. Extension de types simples Déclaration: <xs:extension/> (enfant de xs:simplecontent) L élément auteur est un type complexe dont le contenu simple (typé xs:string) a été étendu pour lui ajouter un attribut nom.
35 Dérivations par extension 2. Extension de types complexes <xs:complextype name="avectitretype"> <xs:attribute name="titre" type="xs:string"/> </xs:complextype> tendre <xs:complextype name="sectiontype"> <xs:complexcontent> <xs:extension base="avectitretype"> <xs:sequence> <xs:group minoccurs="0" ref="auteursgrp"/> <xs:element maxoccurs="unbounded" minoccurs="2" name="chapitre" type="chapitretype"/> </xs:sequence> </xs:extension> </xs:complexcontent> </xs:complextype>
36 Dérivations par restriction 1. Pour les types Simples Application d une facette: créer un sous type en limitant certaines caractéristiques (e.g: longueur d une chaîne) 2. Pour les types complexes Définit des contraintes sur une définition <xs:complexcontent> avec <xs:restriction>.
Contraintes numériques Expression régulière Contraintes textuelles Document XML Schéma XML XSLT SAX 37 Dérivations par restriction: Types simples Facette Enumeration Description Définit une liste de valeurs possibles. Length Nombre exact de caractères ou d item de liste autorisés (>=0) maxlength Nombre maximum de caractères autorisés ou d item de liste autorisés (>=0) minlength Nombre minimum de caractères autorisés ou d item de liste autorisés (>=0) WhiteSpace Spécification de traitement des espaces Pattern fractiondigits maxexclusive Définit la séquence de caractères acceptables en fonction d une expression régulière. Spécifie le nombre maximal de décimales à droite du point décimal Spécifie (exclusivement) la valeur maximum légale pour le type maxinclusive minexclusive mininclusive totaldigits Spécifie (inclusivement) la valeur maximum légale pour le type Spécifie (exclusivement) la valeur minimum légale pour le type Spécifie (inclusivement) la valeur minimum légale pour le type Spécifie le nombre maximum de chiffres dans une valeur décimale
38 Dérivations par restriction: Types simples Restriction à un ensemble de valeurs et gestion des blancs Restriction du type prédéfini string Liste de 3valeurs: Audi, Golf, BMW Doc non valide (valeur non listée) Doc valide Doc non valide (attention aux espaces)
39 Dérivations par restriction: Types simples Entre 5 et 8 caractères alphanumériques Doc non valide (espaces non gérés) Doc valide
40 Dérivations par restriction: Types simples Restriction à une série de valeurs Répétition du triplet (+) (Lettre minuscule, lettre majuscule, chiffre (\d)) 6digits exactement Doc valide Doc non valide (minuscule, majuscule ensuite chiffre) et 6 caractères
41 Dérivations par restriction: Types Complexes Le type complexe, USAddress, est dérivé d'un type complexe Adress et son élément country a pour valeur US.
42 Les groupes Comment nommer des groupes d éléments et d attributs?
43 Comment peut on définir un groupe d attributs? Syntaxe: <xs:attributegroup/> Les groupes d attributs sont définis globalement utilisés par référence
44 Comment peut on définir un groupe d éléments Syntaxe: <xs:group/> L élément xs:group permet de regrouper un contenu complexe. <xs:group name="xs:ncname(?)" minoccurs="xs:nonnegativeinteger(1)" maxoccurs="xs:nonnegativeinteger unbounded(1)" > (xs:annotation?) (xs:all xs:choice xs:sequence) </xs:group>
45 TP Réalisez le TP1 (www.lsis.org/sellamis/courses.html) A faire sous Altova XML Spy