« STIC Discussion:STIC I - exercice 6 (Nestor-Pixel) » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 115 : Ligne 115 :


Mes fichiers sont accessibles à http://tecfa.unige.ch/etu-maltt/nestor/sutterw5/stic/ex6/
Mes fichiers sont accessibles à http://tecfa.unige.ch/etu-maltt/nestor/sutterw5/stic/ex6/
Denise Sutter Widmer - 2 novembre 2007

Version du 2 novembre 2007 à 12:48

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 :)

--Bertrand Schneider 29 octobre 2007 à 21:12 (CET)Répondre[répondre]

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!

--Bertrand Schneider 29 octobre 2007 à 21:12 (CET)Répondre[répondre]


Exercice 6

J'obtiens deux erreurs que je ne m'explique pas. Elles sont peut-être à l'origine de l'absence d'affichage de contenu pour mon fichier xml sur le serveur.

Première message d'erreur (fichier grilleTIC.xml) : "Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. Saw 'attributeFormDefault="unqualified" '." Les numéros de ligne impliqués (7 et 8) ne contiennent pourtant plus de code après formattage de la page. J'ai le sentiment que l'éditeur ne digère pas la ligne suivante: xsi:schemaLocation="http://tecfa.unige.ch/perso/maltt/sutterw5 grilleTIC.xsd"

Deuxième message d'erreur (fichier grilleTIC.xsd): Ln 94 Col 15 - cvc-complex-type.2.3: Element 'xs:schema' cannot have character [children], because the type's content type is element-only." Ce message concerne la dernière ligne du code qui contient la balise suivante: </xs:schema> Il n’apparaît que lorsque je reprends les éléments de l’en-tête du template XSD du cours. Par contre, si je garde les éléments donnés par défaut lors de la traduction de la dtd en XSD par Exchanger XML editor, je n’obtiens pas ce message.

Mes fichiers sont accessibles à http://tecfa.unige.ch/etu-maltt/nestor/sutterw5/stic/ex6/

Denise Sutter Widmer - 2 novembre 2007