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à ...)


Corrections

Effectivement, les fichiers sur le serveur n'étaient pas les plus récent, mais toutes vos remarques m'ont aidé. Pour la construction du schéma j'ai juste pris la version qu'Exchanger fournit après avoir converti la .dtd en .xsd . Je voulais la corriger plus tard en fonction des explications sur les pdf du cours.

A propos du symbole > en trop à la ligne 6 ou 7 du fichier .xsd, l'erreur vient du chablon que j'ai copié/collé sur le site du cours (par ailleurs, en corrigeant cela mon fichier xsd devient valide). En passant ça serait pratique de rajouter le <?xml version="1.0"?> dans le chablon, comme ça ça évitera que d'autres personnes oublient de le mettre dans leur .xsd :)

Merci pour toutes vos explications!