STIC Discussion:STIC I - exercice 6 (Nestor-Pixel)

De EduTech Wiki
Aller à la navigation Aller à la recherche

template xml

Ce chablon ne fonctionne pas (chez moi en tout cas) :

<?xml version="1.0"?>
<?xml-stylesheet href="votre_style.xsl" type="text/xsl"?>

<votre_racine  
  xmlns="http://tecfa.unige.ch/perso/maltt/XXXX" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://tecfa.unige.ch/perso/maltt/XXXX" votre_xsd.xsd"
  >

   <!-- ici le contenu -->

</votre_racine>

Il y a déjà une erreur dans le xsi:schemaLocation. Ce n'est pas :

xsi:schemaLocation="http://tecfa.unige.ch/perso/maltt/XXXX" votre_xsd.xsd"

mais

xsi:schemaLocation="http://tecfa.unige.ch/perso/maltt/XXXX votre_xsd.xsd" (attention aux guillemets)

Ensuite la déclaration du namespace (xmlns) me renvoie une page grise quoi que je mette. J'ai résolu le problème en utilisant le template suivant :

<?xml version="1.0"?>
<?xml-stylesheet href="votre_xsl.xsl" type="text/xsl"?>

<votre_racine 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="votre_xsd.xsd">

  <!-- ici le contenu -->

</votre_racine>

Mais je reste quand même intrigué de savoir pourquoi le chablon où on définit notre namespace ne marche pas... j'ai pourtant essayé de mettre toutes les possibilités comme ns :

http://tecfa.unige.ch/perso/maltt/schneib0 (la solution conseillée)

http://tecfa.unige.ch/etu-maltt/nestor/schneib0/ (la location de la racine des fichiers)

http://tecfa.unige.ch/etu-maltt/nestor/schneib0/stic/ex6/ (le dossier exact)

http://tecfa.unige.ch/ (le nom de domaine)

En fait ça m'étonne que cette ligne pose problème, je pensais qu'elle était là uniquement à titre informatif... quelques éclaircissements seraient les bienvenus :)

Réponses (provisoires)

Effectivement, j'avais une erreur dans le template (un " en s'est glissé dedans). J'ai corrigé (merci) ceci:

xsi:schemaLocation="http://tecfa.unige.ch/perso/maltt/XXXX votre_xsd.xsd"

Ensuite: oui l'URL utilisé pour le namespace n'a aucune importance...

Votre problème vient du fait que votre XSD n'est pas valide. Il faut valider. Dans Exchanger, Menu Schema->Validate XML Schema (donc c'est une procédure spéciale pour valider !).

Dans l'exemple http://tecfa.unige.ch/etu-maltt/nestor/schneib0/stic/ex6/annuaire2.xsd:

  • Il y a un > en trop à la ligne 6 ou 7
  • Il manque la déclaration XML (<?xml version="1.0"?>

Votre solution adaptée ci-dessus ne peut pas non plus marcher avec le XSD que j'ai vu. En plus, il sera plus difficile de valider le XML par la suite.

  • Finalement le codage dans le fichier XML ne semble pas être en UTF-8 (enfin ce n'est pas génant pour valider).

... Ceci dit, je ne sais pas si les fichiers déposés sont les bons (genre dans le XML, vous faites référence à un XSD qui n'existe pas dans le répertoire. Mais bon, je suis parti de là. En tout cas, ceci marche avec vos fichiers:

Le XSD (annuaire2.xsd ... donc faites attention aussi aux noms de vos fichiers)

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://tecfa.unige.ch/perso/maltt/schneib0"
           targetNamespace="http://tecfa.unige.ch/perso/maltt/schneib0" 
           elementFormDefault="qualified"
           attributeFormDefault="unqualified" version="1.0">

Le XML (annuaire2.xml)

<nestor 
  xmlns="http://tecfa.unige.ch/perso/maltt/schneib0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://tecfa.unige.ch/perso/maltt/schneib0 annuaire2.xsd"
  >

... après il y d'autres problèmes (liés à la construction du schéma, mais j'imagine que vous vous êtes arrété là ...)