En passe d’être élevés au rang de recommandation par le W3C, les schémas XML pourraient succéder aux DTD (Définitions de types de documents). Ces dernières n’ont, en effet, pas été prévues pour imposer un format précis aux données, une condition aujourd’hui nécessaire dans le cadre des échanges interentreprises. À la base, ces deux spécifications, schémas et DTD, ont la même vocation : formaliser l’ordonnancement d’un document XML par la description de règles de structuration qui précisent ce qui doit être utilisé ou non au sein dudit document. Une DTD correspondant à un document listant des livres imposera, par exemple, que chacun ait un seul titre, un ou plusieurs auteurs, etc. Dans l’accomplissement de cette tâche, les schémas XML présentent l’avantage fondamental sur les DTD de pouvoir exercer des contraintes supplémentaires sur les données en associant des types (datatypes) aux données du document XML. Ces contraintes concernent exclusivement le format utilisé pour la saisie des caractéristiques que peuvent prendre les éléments et les attributs d’un document XML. L’élément est l’entité que l’on cherche à définir (un livre, par exemple), les attributs servent à le caractériser (le titre, l’auteur, etc. ). Une application simple du principe de typage des données pourrait consister à obliger l’auteur d’un document XML à ne saisir que des caractères Ascii pour définir l’attribut ” Titre ” de l’élément ” Livre “. Pour appréhender la puissance des schémas, il est nécessaire de se pencher sur la définition des types de données du W3C : “Un type de données consiste en un espace de valeurs, un espace lexical et un ensemble de facettes.” L’espace de valeurs contient l’ensemble des valeurs possibles que peut prendre un type de données. L’espace lexical correspond, quant à lui, à la représentation visuelle d’un type de données. Ainsi, si 100 et 102 ont la même valeur, celle-ci ne pourra être représentée que par 100.
Un véritable contrôle d’intégrité des données du document XML
Enfin, les facettes définissent les différents types de restrictions applicables sur un type de données. En reprenant l’exemple du livre, on appliquera à son titre le type de données ” String “, par exemple, qui contraint l’auteur du document à ne saisir que des cha”nes de caractères. Selon la deuxième version de la spécification XML 1. 0 du W3C, l’espace de valeur de ” String ” est constitué de séquences de caractères dont la longueur est limitée. En appliquant la facette ” maxLength ” au type de données ” String “, on obligera l’auteur du document XML à ne saisir qu’une chaîne de 32 caractères Ascii au maximum.Lorsqu’un document est conforme aux règles édictées dans un schéma, il est alors dit schema-valid. Comme pour les documents basés sur des DTD, l’attestation de cette validité est automatisée à l’aide d’un parser livré sous la forme d’une API. Cette opération devient de plus en plus critique pour les entreprises, dont les applications web de grande envergure reçoivent et envoient des informations depuis et vers de nombreuses sources. C’est le seul moyen de s’assurer que le format des données qu’elles ont reçues est conforme à celui des informations qu’elles possèdent dans sa base de données, afin de pouvoir les traiter sans passer par une étape de formatage. Or, c’est dans le cadre de ce processus de validation que l’incapacité des DTD à associer des types aux données est un inconvénient. En effet, si une DTD permet d’imposer la présence d’un attribut portant sur la date de parution d’un élément ” Livre “, elle ne pourra contraindre l’auteur d’un document à saisir un mois, un jour et une année pour définir la date de sortie du livre. De fait, même si le créateur d’un document XML entre la date de sortie du livre à la place de son titre, le parser considérera le document comme valide. Une telle erreur est impossible si le schéma impose de donner un type à l’attribut portant sur la date de parution.
Une prise en compte du contexte grâce aux espaces de nommage
La seconde avancée des schémas, par rapport aux DTD, est la gestion des espaces de nommage (namespaces). Ils permettent de lever l’ambiguïté sur deux éléments dont l’intitulé est le même, mais qui prennent un sens différent dans leurs contextes respectifs. Ainsi, un document XML qui traiterait à la fois de livres et de personnes peut comporter des balises < Title > qui renvoient tantôt au titre d’un livre tantôt à la qualité d’une personne. Les espaces de nommage permettent de résoudre ce problème de sens en associant à la balise une URL pointant vers un fichier qui contient la définition exacte de l’élément. Reste que, malgré leurs désavantages, les DTD sont largement utilisées aujourd’hui et il faudra un certain temps pour que les schémas s’imposent. Ironie du sort, selon les travaux en cours du W3C, c’est une DTD qui contraint la construction d’un schéma XML.
🔴 Pour ne manquer aucune actualité de 01net, suivez-nous sur Google Actualités et WhatsApp.