TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Ressources Externes En Xml, Entités externes pas dispo dans Firefox?
okami
  Ecrit le : Dimanche 30 Juillet 2006 à 21h16
Quote Post


Kid
*

Groupe : Membre
Messages : 27


En voulant faire un premier site statique simple en XML/XSLT pour apprendre à manier cette technologie, j'ai été pratiquement dès le départ confronté à un problème tout bête. kid.gif

J'ai imaginé que la manière la plus simple de structurer le site et de gérer le menu serait de faire autant de fichiers XML que de pages web et de se débrouiller pour appeler à chaque fois le même menu pour faire la navigation.

Au début j'ai imaginé mettre le menu dans la feuille XSL. Ca marche très bien sauf que je n'ai pas trouvé de moyen simple pour mettre en valeur la page sur laquelle se trouve le visiteur.
Le seul moyen que j'ai trouvé est de mettre dans le fichier XML...
CODE
<menu actif="accueil"/>
...pour signifier que je voulais que soit affiché un menu avec le lien vers la page d'accueil (par exemple) mis en valeur parce que l'internaute est dessus.

Sauf que pour utiliser cette information dans le fichier XSL, je me retrouve à tester ligne par ligne s'il faut affiche de manière spéciale ou pas chaque lien du menu :
CODE
<xsl:template match="menu">
 <ul>
   <li>
     <a href="accueil.xml">
       <xsl:if test="@actif='accueil'">
         <xsl:attribute name="title">actif</xsl:attribute>
       </xsl:if>
       Accueil
     </a>
   </li>
   <li>
     <a href="page1.xml">
       <xsl:if test="@actif='page1'">
         <xsl:attribute name="title">actif</xsl:attribute>
       </xsl:if>
       Page 1
     </a>
   </li>
   <li>
     <a href="page2.xml">
       <xsl:if test="@actif='page2'">
         <xsl:attribute name="title">actif</xsl:attribute>
       </xsl:if>
       Page 2
     </a>
   </li>
 </ul>
</xsl:template>
(le code ci-dessus met un "title" spécial à la page active, c'est juste pour tester que j'arriver à modifier les attributs du lien vers la page active)

Ca marche... mais je trouve ça lourd.

Une autre solution serait que le l'élément "menu" du fichier XML contienne lui-même, en plus de l'attribut "actif", la liste des éléments de la navigation (les titres des différentes pages du site et leurs adresses) car je pense pouvoir me débrouiller ensuite, avec un for-each dans le fichier XSL, pour bien tout afficher, avec un seul test (dans la boucle for-each) plutôt qu'avec autant de test qu'il existe de page dans le site.

Comme la liste de éléments de navigation et commune à tout le site, j'aurais aimé en faire un fichier externe que j'appelle dans chaque page xml de mon site. Après pas mal de recherche je me suis rendu compte que les XLink ne marchait pas blink.gif (c'est fantastique le nombre de sites qui décrivent comment fonctionne XLink en omettant de préciser que Firefox et MSIE ne les interprètent pas... Ca limite tout de même la porté à un traitement purement serveur et non client, c'est pas rien !).

J'ai vu alors que la seule solution qui me restait c'était d'utiliser les entités externes DTD. huh.gif
Je le fais avec remord parce que pour moi les DTD c'est une technologie du passé et je pensais tout faire en XSD, m'enfin bon...

Le problème est que je n'arrive pas à faire fonctionner ça sous Firefox. Le code suivant, que j'ai simplifié au maximum, fonctionne parfaitement sous MSIE mais pas sous Firefox 1.5.0.5 (l'entité est remplacée par du vide)
CODE
<?xml version="1.0" ?>
<!DOCTYPE siteWeb [
  <!ENTITY test SYSTEM "tmp.txt">
]>
<siteWeb>
  &test;
</machin>
(le fichier tmp.txt est une fichier texte comprennant un texte bateau)
J'ai essayé avec des adresses absolues mais c'est pas mieux. À noter que si l'entité n'est pas externe (c'est-à-dire que je vire le mot "SYSTEM"), tout marche comme prévu : "&test;" est remplacé par "tmp.txt".
wall.gif
Est-ce que qqn peut me donner des conseils sur les manière de gérer un menu dans un site web XML statique et/ou me dire pourquoi le code ci-dessus ne marche pas sous Firefox ?
Sauvez les derniers cheveux qui me restent ! crybaby.gif
PMEmail Poster
Top
okami
Ecrit le : Dimanche 30 Juillet 2006 à 22h37
Quote Post


Kid
*

Groupe : Membre
Messages : 27


J'ai finalement trouvé un moyen pour incorporer le menu dans la feuille XSL sans multiplier les instructions.

Je fais un fichier menu.xml
CODE
<?xml version="1.0" encoding="UTF-8" ?>
<sections>
 <section href="accueil.xml">Accueil</section>
 <section href="page1.xml">Page 1</section>
 <section href="page2.xml">Page 2</section>
</sections>

Dans le fichier accueil.xml, j'introduis :
CODE
<menu actif="accueil.xml"/>

Dans le fichier XSL, je modifie mon modèle :
CODE

 <xsl:template match="menu">
     <xsl:variable name="actif" select="@actif"/>
     <ul id="menu">
        <xsl:for-each select="document('menu.xml')/sections/section">
           <li>
              <a href="@href">
                 <xsl:attribute name="href">
                    <xsl:value-of select="@href"/>
                 </xsl:attribute>
                 <xsl:if test="@href=$actif">
                    <xsl:attribute name="title">actif</xsl:attribute>
                 </xsl:if>
                 <xsl:value-of select="node()"/>
              </a>
           </li>
        </xsl:for-each>
     </ul>
  </xsl:template>


Bref, j'ai chargé ma ressource externe dans le fichier XSL puisque je n'arrive pas à faire dans le fichier XML (et, de fait, c'est sûrement mieux pour ce que je voulais en faire).

Si qqn a une réponse sur l'incorporation d'une ressource externe dans un fichier XML, je suis toujours prenneur... wink.gif
PMEmail Poster
Top
Haram turval
Ecrit le : Lundi 31 Juillet 2006 à 14h34
Quote Post


Pro
*

Groupe : Membre
Messages : 126


Le premier exemple que tu donnes (avec ENTITY et SYSTEM) ne fonctionne pas sous FF.
C'est un des défauts du navigateur qui ne supporte pas encore tous les standards XML/XSL.

Pour le reste, je ne vois pas d'autre méthodes.
J'utilise moi même XML/XSL et je fonctionne à grands coups de référencement de fichiers XML externes.
Ca permet une plus grande modularité.


--------------------
Tant va la cruche à l'eau qu'à la fin elle est mouillée.
PMEmail Poster
Top
Manest
Ecrit le : Mercredi 02 Août 2006 à 19h00
Quote Post


Ouf
*

Groupe : Membre
Messages : 503


J'en profite pour glisser des ressources XML (et compagnie) interessantes d'un prof que j'ai eu.
http://disc.inria.fr/perso/philippe.poulard/cours/cours.html

Plein de choses interessantes.


--------------------
PMEmail PosterUsers Website
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll