Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Si vous vous posez une question, vous n'êtes peut-être pas le premier...Les traductions en français des bibles XML.Ces articles sont des références dans leur domaine.Tout ce qu'il faut savoir pour démarrer sur un sujet XML...


W3C XML Schema, pour le meilleur ou pour le pire?

Longtemps attendu et publié il y a un an, W3C XML Schema est l'objet de nombreuses polémiques. C'est une raison de plus pour prendre un peu de hauteur par rapport à cette technologie dérangeante ce que j'essaye de faire à la lumière du livre que j'ai écrit à ce sujet pour les éditions O'Reilly.

Eric van der Vlist, Dyomedea (vdv@dyomedea.com).
lundi 24 juin 2002

Introduction

Note: Cet article a été publié sur XML.com sous le titre "Can XML Be The Same After W3C XML Schema?"

Le caractère perturbateur de toute observation est un phénomène bien connu dans nombre de disciplines: les physiciens, les médecins et mêmes les publicitaires ont remarqué que les objets sont modifiés par notre observation. Les psychologues ont en outre remarqué que nos schémas et représentations de notre environnement modifient la manière dont nous le percevons.

L'un des effets secondaires de W3C XML Schema (WXS) est d'avoir montré que ces phénomènes n'étaient pas étranger à XML: l'analyse d'un document XML par un processeur WXS change ce document et l'écriture de schémas change notre perception des documents XML.

Cette constatation me conduit à demander: XML peut-il être le même après W3C XML Schema?

Qu'est-ce qui est différent avec W3C XML Schema?

La première question qui vient à l'esprit est de se demander ce qui rend W3C XML Schema différent? Pourquoi notamment ne se pose t'on pas la même question à propos des DTDs, de Schematron ou de Relax NG?

La réponse tient en deux concepts: les types de données et l'orientation objet. Ces deux concepts sont fortement couplés au niveau de W3C XML Schema et les types de données sont à W3C XML Schema ce que les classes sont à l'orientation objet. Et ces deux concepts introduisent une méthode de classification en classes et sous classes (ou types et types dérivés) qui est analogue aux taxonomies utilisées par les biologistes pour classer les espèces.

Bien que ce processus de classification et de dérivation soit si habituel qu'il semble naturel, il ne constitue pas une méthodologie universelle et est beaucoup moins omniprésent dans les autres langages de schémas XML.

Pour poursuivre notre métaphore, les langages de schémas basés sur des règles tels que Schematron ne tentent pas de coller des étiquettes sur des espèces mais définit des ensembles de règles permettant de dire si un animal est "valide" comme par exemple "a quatre pattes et court au moins à 50 km/h".

Les langages de schémas grammaticaux tels que les DTDs et Relax NG décrivent la manière dont sont constitués les animaux comme "ces animaux sont constitués d'un corps, un cou, une tête, une queue et quatre pattes".

Ce qui rend W3C XML Schema différent et beaucoup plus susceptible de modifier la manière dont nous percevons les documents XML est sa capacité à dériver des types et définir des taxonomies comme "cet animal est un chordata / mammalia / carnivora / felidae / acinonyx / jubatus".

Pourquoi classifier?

Une telle classification est-elle utile? Les biologistes et programmeurs orienté objets en sont convaincus et il faut convenir que l'utilisation de ce type de modélisation hiérarchique présente de nombreux avantages. Classification and orientation objet sont particulièrement efficaces pour réutiliser ce que l'on sait de manière générale à des cas particuliers: si je sais qu'un guépard est un mammifère je peux en déduire sans avoir besoin d'étudier les guépards que ce sont des animaux à sang chaud et que ses femelles allaitent leurs petits. Je peux donc déduire des propriétés s'appliquant aux guépards du simple fait que je sais que le guépard appartient à une classe plus générales et que je connais certaines propriétés de cette classe.

Le même principe s'applique à la programmation orientée objet et à W3C XML Schema! Le simple fait de savoir qu'un élément ou attribut appartient à un type de données me donne des informations que je n'ai pas besoin de formuler de manière spécifique pour cet élément ou attribut et me permet de savoir quels algorithme utiliser pour le traiter.

C'est en fait là que réside la principale promesse de l'orientation objet et de W3C XML Schema. Si, au lieu d'écrire de la documentation et des traitements spécifiques à chaque élément et attribut (c'est à dire pour chaque objet), nous devenons capables d'écrire cette documentation et ces traitements pour chaque type (c'est à dire pour chaque classe) et si nos types peuvent être réutilisé pour définir plusieurs éléments et attributs nous pouvons espérer réaliser des gains de productivité.

Est-ce que ça marche ? Est-ce dangereux ?

Plusieurs années d'expérience d'orientation objet montrent un résultat mitigé. Parmi les points positifs, de nombreuses bibliothèques de classes sont disponibles pour les différents langages orientés objets et ces bibliothèques réduisent les coûts de développement. Du côté négatif, la réutilisation de composants (notamment celle des composants "métier") n'est pas naturelle pour les développeurs et il est assez aléatoire de transformer in composant réutilisable en composant réutilisé.

En ce qui concerne W3C XML Schema il est beaucoup trop tôt pour dire si cela fonctionnera mieux et si les types de données seront utilisables et réutilisés en pratique. Il y a toutefois une différence de taille entre les langages de programmations orientés objets et W3C XML Schema: alors que l'orientation objet est une caractéristique intrinsèque des langages orientés objets, ce n'est qu'une pièce rajoutée à XML qui n'est pas nativement orienté objet et l'on peut se demander si la place l'orientation objet est dans un schéma XML plutôt que dans une modélisation amont en UML par exemple.

Par ailleurs, si le bénéfice lié à la réutilisation de librairies de types de données semble potentiellement énorme en terme d'interopérabilité et de reutisabilité (la vie des développeurs ne serait-elle pas plus simple si nous avions un type universel décrivant un nom et une adresse?), cette méthodologie comporte un risque qu'il nous faut analyser.

Dans 20000 lieues sous les mers, Jules Verne décrit Conseil, un aide biologiste qui connaît exactement la classification de n'importe quelle espèce de poisson mais est incapable d'en reconnaître un dans la nature et un pêcheur, Ned Land capable de reconnaître n'importe quel poisson au premier coup d'oeil mais incapable de le classifier.

Je vois un danger réel que W3C XML Schema conduise à la création de deux types d'applications potentiellement incompatibles: celles qui comme Ned Land et les applications actuelles identifient les éléments et attributs par leur nom dans les documents et celles qui comme Conseil les identifient par leur type et ne savent pas les reconnaître dans un document. Autrement dit, notre perception d'un document XML risque à l'avenir d'être fortement différente suivant que nous utiliserons W3C XML Schema ou non.

XML peut-il être le même après W3C XML Schema?

Que W3C XML Schema affecte notre perception de XML est évident: Conseil et Ned Land ne voient pas le même poisson lorsqu'ils regardent le même poisson et, de même, le fait d'associer des types de données à des éléments et des attributs change notre manière de les voir: ce ne sont plus de simples construction syntaxiques mais ils sont colorés par ce que nous connaissons des types de données qui leur sont affectés.

Pour que cette coloration soit permanente et utilisable, elle doit être exprimée et communiquée aux applications. C'est le but du mystérieux Post Schema Validation Infoset (PSVI), qui sans être formellement défini est communiqué aux applications par les processeurs W3C XML Schema.

La transformation d'un Infoset XML (c'est à dire de l'ensemble des informations utiles présentes dans un document XML avant validation) en PSVI (c'est à dire l'Infoset XML augmenté des informations présentes dans le schéma) modifie le document XML et peut être vu comme le biais induit par l'observation. Son adoption par XPath 2.0, XSLT 2.0, et XQuery 1.0 est la preuve que, pour le meilleur ou pour le pire, XML ne peut pas être pareil après W3C XML Schema.

Pour le meilleur ou pour le pire?

Que nous le voulions ou pas, la plupart d'entre nous devrons utiliser W3C XML Schema tôt ou tard, et c'est à nous de faire en sorte que ce soit pour le meilleur plutôt que pour le pire. Ma démarche pour cela (et c'est la ligne directrice que j'ai suivi pendant l'écriture de mon livre sur W3C XML Schema publié aux éditions O'Reilly) est de faire une analyse critique du langage, en acceptant aucune affirmation sans la vérifier et d'essayer d'analyser les conséquences et pièges qui se cachent derrière la formulation souvent ambiguë de la recommandation.

Je suis convaincu que c'est la seule manière pratique et utile d'aborder cette spécification intrusive et le but de mon livre est de guider le lecteur de manière aussi peu risquée que possible.

Une perle inattendue

Ma récompense pour cette exploration hasardeuse a été la découverte d'une perle qui se cachait loin des feux des projecteurs: W3C XML Schema est très efficace pour associer des méta-données avec des éléments et attributs.

D'un point de vue technique, cette association peut être faite en utilisant les éléments xs:annotation ou des attributs "étrangers" et je donne des exemples qui me semblent étonnants et intéressants qui associent des éléments Dublin Core, des graphiques SVG, des éléments SAF, des règles Schematron, des templates XSLT, ou des descriptions à la RDDL inclus dans les schémas ou référencés par les schémas.

Ces fonctionnalités peuvent améliorer la documentation de vocabulaires XML en fournissant un moyen d'attacher des informations aux attributs et éléments dans leur contexte et en ce domaine, W3C XML Schema permet de dépasser ce qui pourrait être fait avec Schematron ou Relax NG.

Schematron gère des règles et Relax NG des patterns et aucun d'entre eux ne décrit des éléments ou attributs en tant que tels. Tant que seule compte la validation cela ne fait aucune différence, mais pour attacher des informations à un élément ou un attribut, mieux vaut un langage qui les manipule en tant que tel.

Copyright 2002, Eric van der Vlist.


 

Mots clés.



L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.


Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot  

Conception, réalisation et hébergement
Questions ou commentaires
  redacteurs@xmlfr.org