Transfo XSLT dans validation Schematron

Transfo XSLT dans validation Schematron - XML/XSL - Programmation

Marsh Posté le 21-10-2007 à 14:04:23    

Bonjour,
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 "ID0002" 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 toujours l'ID du 1er document de même type que celui en erreur.  
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

Reply

Marsh Posté le 21-10-2007 à 14:04:23   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed