La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Schémas XML - cours 2 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.

Présentations similaires


Présentation au sujet: "1 Schémas XML - cours 2 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée."— Transcription de la présentation:

1 1 Schémas XML - cours 2 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée

2 2 Sommaire Valider un seul élément 4 Déclarations locales 7 Identifiants et références 13 Modularisation 41

3 3 4.Valider un élément (1/2) 5.Valider un élément (2/2) 6.Schéma pour plusieurs types de documents 7.Contraindre l'élément racine (1/2) 8.Contraindre l'élément racine (2/2) 9.Éléments déclarés en local (1/3) Éléments déclarés en local (2/3) Éléments déclarés en local (3/3) Déclarations locales ou globales Identifiants Déclarer des identifiants Le type simple s:ID (1/2) Le type simple s:ID (2/2) Références à des identifiants (1/2) Références à des identifiants (2/2) Listes de références à des identifiants (1/2) Listes de références à des identifiants (2/2) Identifiants et références s:unique (1/6) s:unique (2/6) s:unique (3/6) s:unique (4/6) s:unique (5/6) s:unique (6/6) Expressions Xpath (1/6) Expressions Xpath (2/6) Expressions Xpath (3/6) 31.Expressions Xpath (4/6) 32.Expressions Xpath (5/6) 33.Expressions Xpath (6/6) 34.s:key 35.Déclarer des références à des identifiants (1/5) 36.Déclarer des références à des identifiants (2/5) 37.Déclarer des références à des identifiants (3/5) 38.Déclarer des références à des identifiants (4/5) 39.Déclarer des références à des identifiants (5/5) 40.s:ID ou s:unique 41.Une grammaire en plusieurs schémas 42.Solution 1 : s:include (1/2) 43.Solution 1 : s:include (2/2) 44.s:include 45.Coexistence de plusieurs espaces de noms 46.Solution 2 : s:import (1/2) 47.Solution 2 : s:import (2/2) 48.s:import 49.Solution 3 : s:any (1/2) 50.Solution 3 : s:any (2/2) 51.Référence à plusieurs schémas XML 52.Espaces de noms acceptés 53.Contrôle de la validation Schéma d'un document cible sans espace de noms (1/2) 56.Schéma d'un document cible sans espace de noms (2/2) 57.Schémas caméléons

4 4 Valider un élément (1/2) On peut valider un document contenant seulement un élément Il suffit qu'il ait été déclaré en global dans le schéma 37 American Beauty - Theme Air american beauty soundtrack

5 5 Valider un élément (2/2) L'élément Track a été déclaré en global (...)

6 6 Schéma pour plusieurs types de documents Un schéma unique pour plusieurs types de documents (...)

7 7 Contraindre l'élément racine (1/2) On veut imposer aud:iTunes comme seul élément racine possible Déclarer tous les autres éléments en local

8 8 Contraindre l'élément racine (2/2) Déclarer un élément en local : à l'intérieur de la spécification du type dont il fait partie

9 9 Éléments déclarés en local (1/3) Si l'élément est utilisé dans plusieurs contextes, il faut le déclarer plusieurs fois Cela peut être avec des types différents (...)

10 10 Éléments déclarés en local (2/3) Si tous les éléments sont déclarés en local, sauf l'élément racine : schéma en poupées russes

11 11 Éléments déclarés en local (3/3) Pour qu'ils aient l'espace de noms cible, déclarer elementFormDefault="qualified" à la racine ou form="qualified" dans chaque déclaration Sinon, ils n'ont pas d'espace de noms (mauvaise pratique)

12 12 Déclarations locales ou globales Déclarations locales Plus strict : les éléments ne peuvent être que là où on les a déclarés Possibilité de surcharge : utiliser le même nom d'élément pour autre chose ailleurs Déclarations globales Plus souple : les éléments peuvent apparaître à la racine Plus de réutilisation Plus lisible : plus faciles à trouver dans le schéma On peut mélanger

13 13 Identifiants Quand le même objet figure plusieurs fois dans un document, cela complique toute modification de l'objet Conserver une seule représentation de l'objet, avec un identifiant, et remplacer les autres par l'identifiant Crimée 5:31 5:37 5:41 0:34 0:36 1:37*

14 14 Déclarer des identifiants Garantir qu'un ensemble de valeurs sont toutes différentes Exemple : dans ligne7.xml, l'attribut id de td La Courneuve - 8 Mai 1945

15 15 Le type simple s:ID (1/2) Les s:ID déclarés s:ID d'un document doivent être tous différents Mécanisme issu des DTD

16 16 Le type simple s:ID (2/2) Valeurs : obligatoirement des identificateurs sans ":" Ne convient pas pour des identifiants numériques ou contenant des espaces element content failed type check: Marsh Marigold does not match pattern [_:A-Za-zÀ-ÖØ-öø-ÿĀ-... Columbine Aquilegia canadensis 3 Mostly Shady Marsh Marigold Caltha palustris

17 17 Références à des identifiants (1/2) Garantir qu'un identificateur est identique à un des identifiants déclarés s:ID Exemple : dans ligne7ref.xml, l'attribut name de a La Courneuve - 8 Mai 1945

18 18 Références à des identifiants (2/2) Spécifie que chaque identificateur déclaré s:IDREF est identique à un des identifiants déclarés s:ID

19 19 Listes de références à des identifiants (1/2) Références aux plantes de même nom scientifique Violet, Dog-Tooth Erythronium americanum (...) Trout Lily Erythronium americanum

20 20 Listes de références à des identifiants (2/2) s:IDREFS : liste de références séparées par des espaces (...) (...)

21 21 Identifiants et références s:ID, s:IDREF, s:IDREFS spécifient à la fois - la forme des identifiants - les propriétés d'unicité Les schémas XML permettent de séparer les deux questions Ils proposent un nouveau mécanisme qui couvre uniquement les propriétés d'unicité La forme des identifiants est déjà couverte par les types simples

22 22 s:unique (1/6) Spécifie que les contenus des COMMON dans un même CATALOG sont tous différents et que chaque noeud PLANT en contient au plus un

23 23 s:unique (2/6) N'importe quel type de chaîne de caractères peut servir d'identifiant La déclaration s:unique est rattachée à la déclaration de l'élément CATALOG S'il y a plusieurs CATALOG, il y a plusieurs "domaines" à l'intérieur desquels les identifiants sont tous différents (...)

24 24 s:unique (3/6) s:selector spécifie les noeuds qui peuvent avoir un identifiant s:field spécifie les identifiants Si on oublie l'espace de noms, il n'y a pas de message d'erreur : Le validateur ne trouve aucun noeud, et donc ne vérifie aucune contrainte (...)

25 25 s:unique (4/6) CATALOG PLANT BOTANICALCOMMON Bloodroot Sanguinaria Canadensis PLANT... ZONELIGHT 4 Mostly Shady... noeud à identifier identifiant "domaine" pour l'unicité

26 26 s:unique (5/6) L'évaluation de s:field xpath doit donner une valeur unique, qui est convertie en chaîne de caractères Expressions Xpath (langage normalisé par le W3C aussi)

27 27 s:unique (6/6) S'il y a plusieurs s:field, l'identifiant est le n-uplet des chaînes de caractères correspondantes (...) Spécifie qu'il n'y a pas deux entrées avec à la fois le même nom scientifique et le même prix

28 28 Expressions Xpath (1/6) Dans s:selector et s:field, xpath contient une expression Xpath Langage normalisé par le W3C aussi PLANT BOTANICALCOMMON Bloodroot Sanguinaria Canadensis ZONE 4 noeud à identifier identifiant

29 29 Expressions Xpath (2/6) Autres expressions Xpath utilisables dans s:unique PLANT BOTANICALCOMMON Bloodroot Sanguinaria Canadensis ZONE 4 noeud à identifier identifiant CATALOG

30 30 Expressions Xpath (3/6) Attributs PLANT NAME BOTANICALCOMMON Bloodroot Sanguinaria Canadensis ZONE... LIGHT 4 Mostly Shady noeud à identifier identifiant number="27" normalized= "bloodroot"

31 31 Expressions Xpath (4/6) PLANT NAME BOTANICALCOMMON Bloodroot Sanguinaria Canadensis ZONE... LIGHT 4 Mostly Shady noeud à identifier identifiant number="27" normalized= "bloodroot"

32 32 Expressions Xpath (5/6) PLANT NAME BOTANICALCOMMON Bloodroot Sanguinaria Canadensis ZONE... LIGHT 4Mostly Shady noeud à identifier identifiant number="27" normalized= "bloodroot"

33 33 Expressions Xpath (6/6) PLANT NAME BOTANICALCOMMON Bloodroot Sanguinaria Canadensis ZONE... LIGHT 4 Mostly Shady noeud à identifier identifiant number="27" normalized= "bloodroot"

34 34 s:key Comme mais spécifie que - les contenus des COMMON présents dans un même CATALOG sont tous distincts - chaque noeud PLANT en contient un et un seul

35 35 Déclarer des références à des identifiants (1/5) Garantir qu'un identificateur est identique à un des identifiants déclarés par s:unique ou s:key Exemple : références aux plantes de même nom scientifique Violet, Dog-Tooth Erythronium americanum (...) Trout Lily Adder's-Tongue Trout Lily

36 36 Déclarer des références à des identifiants (2/5) Spécifie que le contenu de chaque seeAlso est identique à un des identifiants (même valeur et même type) et que chaque seeAlso en contient au plus un (inutile ici) (...)

37 37 Déclarer des références à des identifiants (3/5) CATALOG PLANT BOTANICALCOMMON Trout Lily Erythronium americanum PLANT seeAlso Trout Lily noeud identifié identifiant "domaine" pour l'unicité BOTANICAL Erythronium americanum noeud référence

38 38 Déclarer des références à des identifiants (4/5) s:keyref fait référence à une déclaration s:unique ou s:key (...) On peut avoir plusieurs références au même identifiant Les noeuds du s:selector du s:keyref peuvent ne contenir aucune référence

39 39 Déclarer des références à des identifiants (5/5) L'élément auquel on attache s:keyref doit être soit l'élément auquel on a attaché s:unique ou s:key, soit un ancêtre de cet élément Si on attache s:keyref à un ancêtre, cela renforce la contrainte d'unicité : pour les références présentes, les identifiants doivent être uniques sur l'ensemble des domaines du s:unique ou du s:key, et non sur chaque domaine séparément

40 40 s:ID ou s:unique s:ID Plus simple Type prédéfini s:IDREFS s:unique et s:key Plus puissant : - Type des identifiants libre, y compris numéros et n-uplets - La portée de l'unicité n'est pas nécessairement tout le document - Plusieurs jeux d'identifiants possibles pour un même document

41 41 Une grammaire en plusieurs schémas Grammaires complexes Documents complexes Nouvelles variantes de projets existants Objectifs Répartir une grosse grammaire en plusieurs schémas Réutiliser Laisser un schéma ouvert à une évolution future 3 solutions

42 42 Solution 1 : s:include (1/2)

43 43 Solution 1 : s:include (2/2)

44 44 s:include Un schéma principal coordonne les autres Le schéma principal dépend des autres Il doit être construit et maintenu en tenant compte des autres Les modules inclus doivent avoir le même espace de noms cible Dans chaque module, répéter les déclarations

45 45 Coexistence de plusieurs espaces de noms Insérer des parties en XHTML dans le catalogue de plantes Anemone Bulbe rustique de la famille des renonculacées FEUILLAGE : Feuilles très lobées vert foncé semi érigées Le document a deux espaces de noms et deux schémas

46 46 Solution 2 : s:import (1/2) L'espace de noms principal du document est celui de l'élément racine Le schéma principal est le schéma correspondant Il importe les autres schémas

47 47 Solution 2 : s:import (2/2) (...) Déclarer des préfixes pour les espaces de noms Exception : l'espace de noms xml, inutile de le déclarer

48 48 s:import Un schéma principal coordonne les autres Le schéma principal dépend des autres Il doit être construit et maintenu en tenant compte des autres Un schéma importé doit avoir un autre espace de noms cible Le document cible peut contenir des éléments spécifiés dans le schéma importé Ces éléments ont l'espace de noms importé

49 49 Solution 3 : s:any (1/2) Le document cible fait référence aux deux schémas Celui qui correspond à l'élément racine et à son espace de noms s'applique en premier

50 50 Solution 3 : s:any (2/2) Le schéma qui s'applique en premier appelle l'autre par s:any s:any ne spécifie pas quel élément peut apparaître (...)

51 51 Référence à plusieurs schémas XML On peut faire référence à n schémas indépendants La valeur d'attribut contient 2n chaînes séparées par des espaces Le document cible doit être valide par rapport à chaque schéma indépendamment xsi:schemaLocation="espace-de-noms-1 URL-1.xsd espace-de-noms-2 URL-2.xsd" xmlns="espace-de-noms-1" xmlns:en2="espace-de-noms-2">

52 52 Espaces de noms acceptés Le validateur accepte un espace de noms spécifique ou Le validateur accepte n'importe quel espace de noms (défaut) Le validateur accepte tout espace de noms autre que l'espace de noms cible, et valide par rapport au schéma correspondant

53 53 Contrôle de la validation Le validateur vérifie la validité par rapport au schéma (défaut) Le validateur vérifie la validité seulement si le schéma correspondant à l'espace de noms est disponible Le validateur saute cette partie

54 54 Permettre n'importe quels attributs (...)

55 55 Schéma d'un document cible sans espace de noms (1/2) L'élément racine du document cible n'a pas d'espace de noms Le schéma ne peut valider que des documents sans espace de noms ("schéma caméléon") Ce n'est pas une bonne pratique

56 56 Schéma d'un document cible sans espace de noms (2/2) Le document cible peut faire référence au schéma

57 57 Schémas caméléons Les schémas inclus (s:include) doivent avoir le même espace de noms cible que le schéma principal Si le schéma inclus n'a pas d'espace de noms cible, les noms déclarés dedans passent automatiquement dans l'espace de noms cible du schéma principal


Télécharger ppt "1 Schémas XML - cours 2 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée."

Présentations similaires


Annonces Google