Pb xslt transformation avec xsi:schemaLocatio

Résolu/Fermé
biloubobby - 3 sept. 2008 à 19:35
 biloubobby - 4 sept. 2008 à 11:01
Bonjour à tous,

Je cherche à réaliser une transformation xml vers xml. Pour cela j'utilise un parser xslt (xalan pour être plus précis).

J'ai déjà réalisé mes transformations mais un nouveau pb a pointé le bout de son immonde museau lors de l'implémentation d'une référence à un xsi:schemaLocation

Voici l'exemple :

Je souhaite transformer un fichier xml en un autre fichier au format xml en utilisant un moteur de transformation xslt. Le fichier xml référence un schema via l'utilisation de la balise xsi:schemaLocation...

--------------------------------------------------------------------------------------
Je dispose d'un fichier xml structuré comme suit :

<?xml version="1.0" encoding="ISO-8859-1"?>
<StandardBusinessDocument xsi:schemaLocation="http://www.unece.org/fileadmin/DAM/cefact/namespaces/StandardBusinessDocumentHeader/StandardBusinessDocumentHeader.xsd StandardBusinessDocumentHeader.xsd">
<StandardBusinessDocumentHeader>
<HeaderVersion>1.1</HeaderVersion>
<Sender>Bobby</Sender>
</StandardBusinessDocumentHeader>
</StandardBusinessDocument>
-----------------------------------------------------------

J'opère une transformation via l'utilisation d'un moteur xslt et de la feuille de style suivante :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
<ImportDACmd>
<Header ref="{StandardBusinessDocument/StandardBusinessDocumentHeader/HeaderVersion}">
<Status>Purchase Order</Status>
</Header>
</ImportDACmd>
</xsl:template>
</xsl:stylesheet>
----------------------------------------------------------------------------------------

J'obtiens l'erreur suivante :
ERROR: 'The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "StandardBusinessDocument" is not bound.'
ERROR: 'com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "StandardBusinessDocument" is not bound.'

Un fichier vide est généré.

-------------------------------------------------------------

Je m'arrache les cheveux sur ce pb depuis un petit moment maintenant et n'ai pas trouvé de réponse dans les recommandations w3c et autres docs traitant mon affaire (je n'ai pas eu d'exemple concret et les docs trouvés sont en général difficilement déchiffrable pour un nioubz en xml et autres joyeusetés xsltiennes)

Je vous remercie d'avance pour vos conseils eclairés !
Biloubob

1 réponse

Bon bah je m'auto-répond vu que j'ai enfin trouvé une solution plutot extrême à mon problème...

Il me manque la déclaration du namespace 'xsi' au début du document xml :
<StandardBusinessDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.unece.org/fileadmin/DAM/cefact/namespaces/StandardBusinessDocumentHeader/StandardBusinessDocumentHeader.xsd StandardBusinessDocumentHeader.xsd">

........

.......

Bah au moins je porte bien mon pseudo... J'suis un vrai bilou !

Allez moi j'me retourne tuné ma nouvelle mobylette pour flamber un coup à la braderie de lille...
1