Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1613 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML/XSL] [WIP] Gestionnaire de liens (1er problème résolu !)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML/XSL] [WIP] Gestionnaire de liens (1er problème résolu !)

n°559433
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 11:13:09  profilanswer
 

Hello !
 
Contexte
 
Je newbise à fond dans le XML/XSL en ce moment. L'idée c'est que j'ai un fichier XML avec des liens. Je veux générer avec PHP un document où je liste les catégories de liens, je peux cliquer sur les catégories pour voir les liens concernés, affichés 5 par 5.
 
Où j'en suis ?
 
Pas très loin :D
 
Pour l'instant, j'arrive à filtrer par catégorie et commencer à afficher les liens à partir d'une variable (en gros afficher les liens de la catégorie X à partir du lien Y).
 
Premier problème (résolu)
 
Je voudrais rajouter une condition pour n'afficher que les liens de 1 à 5 par exemple. Donc j'ai rajouté une variable $fin, mais je n'arrive pas à faire mon test avec 2 conditions... :(
 
Le code
 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <liens>
  3. <categorie id="1">
  4.  <intitule>Categorie 1</intitule>
  5.  <description>Super la catégorie 1 !</description>
  6.  <lien id="1">
  7.   <intituleLien>Premier lien</intituleLien>
  8.   <urlLien>http://www.yahoo.com/1</urlLien>
  9.   <descriptionLien>Il est vraiment super ce premier lien</descriptionLien>
  10.  </lien>
  11.  <lien id="2">
  12.   <intituleLien>Deuxième lien</intituleLien>
  13.   <urlLien>http://www.yahoo.com/2</urlLien>
  14.   <descriptionLien>Il est vraiment super ce Deuxième lien</descriptionLien>
  15.  </lien>
  16.  <lien id="3">
  17.   <intituleLien>Troisième lien</intituleLien>
  18.   <urlLien>http://www.yahoo.com/3</urlLien>
  19.   <descriptionLien>Il est vraiment super ce Troisième lien</descriptionLien>
  20.  </lien>
  21.  <lien id="4">
  22.   <intituleLien>Quatrième lien</intituleLien>
  23.   <urlLien>http://www.yahoo.com/4</urlLien>
  24.   <descriptionLien>Il est vraiment super ce Quatrième lien</descriptionLien>
  25.  </lien>
  26.  <lien id="5">
  27.   <intituleLien>Cinquième lien</intituleLien>
  28.   <urlLien>http://www.yahoo.com/5</urlLien>
  29.   <descriptionLien>Il est vraiment super ce Cinquième lien</descriptionLien>
  30.  </lien>
  31.  <lien id="6">
  32.   <intituleLien>Sixième lien</intituleLien>
  33.   <urlLien>http://www.yahoo.com/6</urlLien>
  34.   <descriptionLien>Il est vraiment super ce Sixième lien</descriptionLien>
  35.  </lien>
  36. </categorie>
  37. <categorie id="2">
  38.  <intitule>Categorie 2</intitule>
  39.  <description>Super la catégorie 2 !</description>
  40.  <lien id="1">
  41.   <intituleLien>Premier lien cat 2</intituleLien>
  42.   <urlLien>http://www.yahoo.com/1</urlLien>
  43.   <descriptionLien>Il est vraiment super ce premier lien</descriptionLien>
  44.  </lien>
  45.  <lien id="2">
  46.   <intituleLien>Deuxième lien cat 2</intituleLien>
  47.   <urlLien>http://www.yahoo.com/2</urlLien>
  48.   <descriptionLien>Il est vraiment super ce Deuxième lien</descriptionLien>
  49.  </lien>
  50. </categorie>
  51. </liens>


 

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <xsl:stylesheet
  3.   version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  4. <xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/>
  5. <xsl:param name="cat"/>
  6. <xsl:param name="debut"/>
  7. <xsl:param name="fin"/>
  8. <xsl:template match="/">
  9. <html>
  10. <head>
  11.  <title>Liens</title>
  12. </head>
  13. <body>
  14.  <h1><xsl:value-of select="$cat"/> ) <xsl:value-of select="liens/categorie[@id=$cat]/intitule"/></h1>
  15.  <p><em><xsl:value-of select="liens/categorie[@id=$cat]/description"/></em></p>
  16.  <xsl:for-each select="liens/categorie[@id=$cat]/lien">
  17.   <xsl:choose>
  18.   <xsl:when test="@id &gt;= $debut">
  19.   <xsl:value-of select="id"/>
  20.   <h2><a>
  21.             <xsl:attribute name="href"><xsl:value-of select="urlLien"/></xsl:attribute>
  22.             <xsl:value-of select="intituleLien"/>
  23.             </a></h2>
  24.   <p><xsl:value-of select="descriptionLien"/></p>
  25.   </xsl:when>
  26.   </xsl:choose>
  27.  </xsl:for-each>
  28. </body>
  29. </html>
  30. </xsl:template>
  31. </xsl:stylesheet>


 
Je suppose que c'est ici que je dois réussir à indiquer les deux conditions :
 

Code :
  1. <xsl:when test="@id &gt;= $debut">


 
J'ai essayé <xsl:when test="@id &gt;= $debut and @id &lt;= $fin"> ou avec un | d'union mais ça ne marche pas.
 
Des idées ?


Message édité par fastclemmy le 05-11-2003 à 17:16:05
mood
Publicité
Posté le 05-11-2003 à 11:13:09  profilanswer
 

n°559463
walli
Posté le 05-11-2003 à 11:43:49  profilanswer
 

en passant par une fonction dans laquelle tu poses tes deux conditions :??:
du style :  

Code :
  1. function doubleTest(noeud)
  2. {
  3. if ((noeud.selectSingleNode("./@id" ).text=$debut && ((noeud.selectSingleNode("./@id" ).text=$fin))
  4.  return true;
  5. else
  6.  returne false;
  7. }


et au lieu de ton when un if :

Code :
  1. <xsl:if expr="doubleTest(this);">
  2. ...
  3. </xsl:if>


 
pas du tout testé [:ddr555]


Message édité par walli le 05-11-2003 à 11:44:17

---------------
NP :
n°559519
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 12:32:41  profilanswer
 

Je vois le truc, mais je l'insère où et comment la fonction ?

n°559641
walli
Posté le 05-11-2003 à 14:00:22  profilanswer
 

la fonction tu l'insères dans ton xsl avant le template

Code :
  1. <xsl:script><![CDATA[
  2. function doubleTest(noeud)
  3.   {
  4.      if ((noeud.selectSingleNode("./@id" ).text=$debut && ((noeud.selectSingleNode("./@id" ).text=$fin))
  5.         return true;
  6.      else
  7.         returne false;
  8.   }
  9.      ]]></xsl:script>


---------------
NP :
n°559656
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 14:05:09  profilanswer
 

Warning: domxml_xslt_stylesheet_file(): xsltStylePreCompute: unknown xsl:script in /home/toto/www/tests/xml/index.php on line 7
 
D'après mes quelques recherches c'est pas une fonctionnalité du parsing XML made in Microsoft ? Moi je parse via PHP & DomXML... :/

n°559677
the real m​oins moins
Posté le 05-11-2003 à 14:15:11  profilanswer
 

tu peux pas imbriquer tes deux conditions, betement?
<xsl:when test="@id &gt;= $debut">
 <xsl:when test="@id &lt;= $fin">
  ...
 </xsl:when>
</xsl:when>
 
?
 
 
j'ai jamais fait d'xsl, et j'en suis pas fâché


Message édité par the real moins moins le 05-11-2003 à 14:16:54
n°559678
walli
Posté le 05-11-2003 à 14:15:29  profilanswer
 

aie... :/
doit y avoir une autre syntaxe alors..


---------------
NP :
n°559711
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 14:32:29  profilanswer
 

the real moins moins a écrit :

tu peux pas imbriquer tes deux conditions, betement?
<xsl:when test="@id &gt;= $debut">
 <xsl:when test="@id &lt;= $fin">
  ...
 </xsl:when>
</xsl:when>
 
?
 
 
j'ai jamais fait d'xsl, et j'en suis pas fâché


 
Très bonne idée ! Pas de bol, il ne m'affiche plus rien pour le coup :/

n°559733
simogeo
j'ai jamais tué de chats, ...
Posté le 05-11-2003 à 14:41:26  profilanswer
 

et tu es sur que tes params passent bien ?


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°559749
the real m​oins moins
Posté le 05-11-2003 à 14:58:15  profilanswer
 

dans le bouquin qu'on a ici je vois <xsl:if mais pas <xsl:when !?

mood
Publicité
Posté le 05-11-2003 à 14:58:15  profilanswer
 

n°559751
walli
Posté le 05-11-2003 à 15:01:12  profilanswer
 

the real moins moins a écrit :

dans le bouquin qu'on a ici je vois <xsl:if mais pas <xsl:when !?


 
je plussoie...
par contre, jamais testé l'insertion de variables php dans un fichier xsl.. :/


---------------
NP :
n°559755
the real m​oins moins
Posté le 05-11-2003 à 15:05:17  profilanswer
 

ha ok le when est dans un choose; ça doit etre un equivalent de select/case!?

n°559758
the real m​oins moins
Posté le 05-11-2003 à 15:07:55  profilanswer
 

à priori ton and devrait marcher: http://www.biglist.com/lists/xsl-l [...] 00496.html

n°559760
the real m​oins moins
Posté le 05-11-2003 à 15:09:23  profilanswer
 

sinon tu peux ptet imbriquer un <xsl:if test="2e condition"> dans ton <xsl:when>

n°559761
walli
Posté le 05-11-2003 à 15:11:13  profilanswer
 

ah si :  
<xsl:when> est tjs un enfant de <xsl:choose>
un element <xsl:choose> doit contenir au moins un element <xsl:when>
[:boidleau]
par contre c'est forcement une condition booleenne qui est a tester dans le <xsl:when>


---------------
NP :
n°559769
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 15:14:53  profilanswer
 

walli a écrit :


 
je plussoie...
par contre, jamais testé l'insertion de variables php dans un fichier xsl.. :/


 
Pourtant ça, ça marche :
http://www.fastclemmy.com/tests/xm [...] =1&debut=2
 
Change cat à 2 et tu verras le contenu de la catégorie 2. Change debut et tu verras s'afficher les liens > $debut.

n°559770
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 15:15:32  profilanswer
 
n°559771
walli
Posté le 05-11-2003 à 15:15:38  profilanswer
 

fastclemmy a écrit :


 
Pourtant ça, ça marche :
http://www.fastclemmy.com/tests/xm [...] =1&debut=2
 
Change cat à 2 et tu verras le contenu de la catégorie 2. Change debut et tu verras s'afficher les liens > $debut.


 
je voulais pas dire que ca marchait pas, juste que je connaissais pas la syntaxe ;)


---------------
NP :
n°559783
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 15:18:13  profilanswer
 

the real moins moins a écrit :

sinon tu peux ptet imbriquer un <xsl:if test="2e condition"> dans ton <xsl:when>


 
Bien joué ! Ca marche !
http://www.fastclemmy.com/tests/xm [...] ut=2&fin=3
 
Marchi beaucoup pour votre persévérance ! [:fastclemmy]

n°559785
the real m​oins moins
Posté le 05-11-2003 à 15:18:55  profilanswer
 

fastclemmy a écrit :


 
N'affiche rien [:ruisseau de larmes]

ha bah ok mais dans ce cas, c'est ton test qu'est pas bon, ou bien tes valeurs... (désolé j'avais pas  bien capté), sinon t'aurais un msg d'erreur..

n°559789
the real m​oins moins
Posté le 05-11-2003 à 15:20:32  profilanswer
 

fastclemmy a écrit :


 
Bien joué ! Ca marche !
http://www.fastclemmy.com/tests/xm [...] ut=2&fin=3
 
Marchi beaucoup pour votre persévérance ! [:fastclemmy]  

ha ben ok
c etrange, le and devrait pourtant marcher.

n°559793
the real m​oins moins
Posté le 05-11-2003 à 15:20:53  profilanswer
 

enfin, je dis ça, j'en sais rien, j'ai jamais fait d'xsl, mais d'apres ce que j'ai lu en vitesse..

n°559800
avander
Posté le 05-11-2003 à 15:24:42  profilanswer
 

Je confirme le 'and' doit marcher, utilisé avec MSXML 3.0!

n°559807
fastclemmy
(re-)Dictateur en plastique
Posté le 05-11-2003 à 15:29:22  profilanswer
 

Avander a écrit :

Je confirme le 'and' doit marcher, utilisé avec MSXML 3.0!


 
Oui mais comme je disais plus haut, je n'utilise pas MSXML, je parse côté serveur avec domXML, peut-être que ce n'est pas supporté ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML/XSL] [WIP] Gestionnaire de liens (1er problème résolu !)

 

Sujets relatifs
[Résolu][HTML] Problème de marge [ok]
Problème de RecordSet avec des champs vides [Résolu merci drasche][VB] problème erreur HELP
[XML] Générer un graphe à partir de données XML ?[MySQL-résolu] apprécierais aide sur requete
[ASP/SQL] probleme de Select. [Rezolu]pb avec CRecordset, Ctime et Update() [RESOLU]
Calculette Lex + Yacc | probleme avec des strutures | oK 
Plus de sujets relatifs à : [XML/XSL] [WIP] Gestionnaire de liens (1er problème résolu !)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR