Problème transfo XSLT - validation Schematron

Fermé
Sigmund Messages postés 4 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 23 octobre 2007 - 20 oct. 2007 à 16:28
Sigmund Messages postés 4 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 23 octobre 2007 - 23 oct. 2007 à 20:05
Bonjour,
Je viens vers vous sur les conseils de gens du forum Webmastering.
Je ne sais pas exactement quel parser j'utilise mais je vais essayer d'être clair.
J'ai récupérer sur le net des sources Java qui permettent de valider un fichier XML par rapport à un schéma Schematron.
Le principe est basé sur 2 transfo XSLT, la première transforme le schéma Schematron à l'aide d'un 'preprocessor.xslt' fournit avec les sources Java, en un 'processor.xslt' qui, appliqué au fichier XML à valider, fournit soit un log.xml des erreurs de validation, soit un fichier vide si le XML est valide.
Mon problème concerne le log.xml dans lequel je n'arrive pas à récupérer l'ID de l'élément qui est en erreur.
Mon fichier XML d'entrée a la forme suivante:

<ec:lotdocuments xmlns:ec="URI" xml:id="ID0100">
<ec:document1 xml:id="ID0001">
<ec:balise1>
<ec:sousbalise1>xxx</ec:sousbalise1>
</ec:balise1>
...
</ec:document1>
<ec:document1 xml:id="ID0002">
<ec:balise1>
<ec:sousbalise1>yyy</ec:sousbalise1>
</ec:balise1>
</ec:document1>
<ec:document1 xml:id="ID0003">
<ec:balise1>
<ec:sousbalise1>zzz</ec:sousbalise1>
</ec:balise1>
</ec:document1>
<ec:document2 xml:id="ID0004">
...
</ec:document2>
<ec:document2 xml:id="ID0005">
...
</ec:document2>
</ec:lotdocuments>

Si par exemple l'élément <document1 xml:id="ID0003"> a une erreur Schematron dans une de ces balises, avec la commande :
<axsl:value-of select="//ec:document1/@xml:id"/> dans la feuille intermédiaire processor.xslt,
je récupère dans ma log non pas l'ID "ID0003" mais le "ID0001". Idem si' c'est le
<ec:document2 xml:id="ID0005"> qui est en erreur, je récupère l'ID "ID0004".
Bref, je récupère tjs le 1er ID du type de document concerné.
Est-ce juste ma commande xslt qui est mauvaise, et dans ce cas quelle est la bonne, ou est-ce plus grave docteur ?... :(
Merci d'avance pour vos réponses

1 réponse

Sigmund Messages postés 4 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 23 octobre 2007
23 oct. 2007 à 20:05
Pour ceux que ça intéresse, le problème vient de l'expression XPath dans la balise XSL.
Le bon code est :
ancestor::ec:document1/@xml:id et non //ec:document1/@xml:id
-1