From: Stephane Bonhomme (s.bonhomme@wanadoo.fr)
Date: 09/02/2004 - 07:45
Le lun 09/02/2004 à 08:30, Herve AGNOUX a écrit :
> Bonjour,
>
> Les langages de schémas dont j'ai entendu parler valident un document. C'est
> le principe du XML : soit un document est valide, soit il est invalide.
>
> Je voudrais être capable de valider un élément seul ; c'est à dire pouvoir
> évaluer que tel contenu de tel élément est valide, sans être obligé
> d'analyser l'ensemble du document pour cela. A la limite, si le reste du
> document est invalide, cela m'est égal.
>
Est ce que vous voulez valider un élément particulier d'un document (une
instance) ou toutes les instance d'un type d'élément ? Dans le premier
cas je vois pas de "mécanisme" standard permettant de le faire, (sauf à
utiliser certaines api spécialisées telle que celle de la libxml2
permettant de valider le sous-arbre découlant d'un noeud. Je pense qu'il
doit exister d'autres produits proposant de telles apis (qui ne sont
prévues ni dans DOM ni dans SAX).
Si votre problematique ressemble plutot à la deuxime, il est possible
d'envisager un schéma (ou une DTD) définissant tout élément de votre
document comme pouvant avoir un modèle "libre", en utilisant par exemple
la regle ANY dans une DTD et en donnant une règle explicite pour le type
de l'élément que vous voulez valider. Je ne sais pas bien si cela peut
fonctionner, mais quelques considérations me font tout de suite penser
que ça risque d'être difficile : d'abord, que l'on utilise une DTD ou un
schéma (relaxNG aussi - <start> à vérifier ?), on doit toujours définir
le type de la racine d'un document, cette balise là ne pourra deja pas
etre quelconque.
> Bien sûr, vous allez me répondre que je n'ai qu'à considérer chaque élément
> comme un petit document, et travailler de cette façon. Mais, d'une part, je
> ne pense pas que ce soit juste, d'autre part j'ai peur que cela m'oblige à
> multiplier le nombre de schémas.
>
> Il me semble qu'il me faut un langage de schéma spécial, qui me garantisse
> que, pour valider un élément, je n'ai pas besoin de connaître son contexte.
>
> Autant que je puisse le comprendre, les DTD pourraient convenir.
Non car avec une DTD, au moins un règle définissant l'élément racine de
votre document doit être donnée.
> Par contre, Relax NG, non, me semble-t-il ; en effet, si j'ai (exemple
> stupide) :
>
> <element name="a">
> <element name="b">
> <element name="a">
> <element name="c">
> <text/>
> </element>
>
> (... et on ferme tout...) alors, pour valider qu'un élément "a" contienne "b",
> j'ai besoin de savoir à quel niveau de l'arborescence on est. Et je ne pense
> pas que l'on puisse exprimer ce genre de schéma avec une DTD.
>
> Me trompe-je ? Existe-t-il d'autres langage de schémas que les DTD qui ont
> cette propriété ?
>
> Merci d'avance pour votre aide.
--
Stéphane Bonhomme - Formations, Conseil et Réalisations
Ingénierie Documentaire - Technologies Web - Logiciels Libres
s.bonhomme@wanadoo.fr - http://perso.wanadoo.fr/s.bonhomme
04 76 17 09 40 / 06 88 57 27 08
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|