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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Problème de paramètre vers une XSL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de paramètre vers une XSL

n°1971563
gatsu35
Blablaté par Harko
Posté le 06-03-2010 à 10:45:24  profilanswer
 

J'ai un fichier XML et une XSL que j'utilise via PHP.
Je passe des parametres à la feuille XSL, je les affiches et voit bien leur valeur, mais dans le select que je veux modifier il m'affiche toutes mes pages :(
le code est plus parlant :)
PS : j'ai fait de l'élagage pour ne garder que ce qui est utile.
le XML

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <categories>
  3.    <cat id="accueil" label="Accueil">
  4.        <page type="edito" background="/img/backgrounds/bg1.jpg">
  5.            <headcustom>
  6.                <![CDATA[
  7.                 <script type="text/javascript">
  8.                     //this is custom code
  9.                 </script>
  10.                 ]]>
  11.            </headcustom>
  12.            <title>
  13.                <![CDATA[this is edito1]]>
  14.            </title>
  15.            <text>
  16.                <![CDATA[this is the text]]>
  17.            </text>
  18.        </page>
  19.        <page type="edito">
  20.            <title>
  21.                <![CDATA[this is accueil edito2]]>
  22.            </title>
  23.            <text>
  24.                <![CDATA[this is the text]]>
  25.            </text>
  26.        </page>
  27.        <page type="edito">
  28.            <title>
  29.                <![CDATA[this is accueil edito3]]>
  30.            </title>
  31.            <text>
  32.                <![CDATA[this is the text]]>
  33.            </text>
  34.        </page>
  35.    </cat>
  36.    <cat id="carres" label="Les carrés">
  37.        <page type="edito">
  38.            <title>
  39.                <![CDATA[this is carres edito1]]>
  40.            </title>
  41.            <text>
  42.                <![CDATA[this is the text of carrés]]>
  43.            </text>
  44.        </page>
  45.         <page type="edito">
  46.            <title>
  47.                <![CDATA[this is carres edito2]]>
  48.            </title>
  49.            <text>
  50.                <![CDATA[this is the text of carrés]]>
  51.            </text>
  52.        </page>
  53.    </cat>
  54.    <cat id="papeterie" label="Papeterie">
  55.        <page type="edito">
  56.            <title>
  57.                <![CDATA[this is papeterie edito1]]>
  58.            </title>
  59.            <text>
  60.                <![CDATA[this is the text of papier]]>
  61.            </text>
  62.        </page>
  63.    </cat>
  64. </categories>
 

et la XSL

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0"
  3.     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  4.     <xsl:output method="xml" indent="yes" encoding="UTF-8"
  5.         doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
  6.         doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  7.         omit-xml-declaration="yes"
  8.         />
  9.  
  10.     <xsl:param name="catid"/>
  11.     <xsl:param name="pagenum"/>
  12.  
  13.     <xsl:template match="/">
  14.         <xsl:value-of select="$catid"/>
  15.         <xsl:value-of select="$pagenum"/>
  16.         <xsl:variable name="cat" select="descendant::cat[@id=$catid]"/>
  17.         <html dir="ltr" lang="fr-FR">
  18.             <head>
  19.             
  20.             </head>
  21.             <body>
  22.                 <div id="wrapper">
  23.                     <div id="content">
  24.                         <xsl:apply-templates select="descendant::cat[@id=$catid]/page[$pagenum]" />
  25.                     </div>
  26.                 </div>
  27.             </body>
  28.         </html>
  29.     </xsl:template>
  30.     <xsl:template match="page">
  31.             <xsl:value-of select="title" />
  32.     </xsl:template>
  33. </xsl:stylesheet>


ça merde sur cette ligne :

Code :
  1. <xsl:apply-templates select="descendant::cat[@id=$catid]/page[$pagenum]" />


avant j'avais

Code :
  1. <xsl:apply-templates select="descendant::cat[@id=$catid]/page" />


cela permettait d'attaquer tous les noeuds <page> du XML
maintenant je ne veux afficher qu'une seule page, en fonction de l'id que j'aurai passé. Mais ça ne marche pas
pourtant si je fais :

Code :
  1. <xsl:apply-templates select="descendant::cat[@id=$catid]/page[1]" />


j'ai bien la page 1, si je met un 2, j'ai bien la page 2
qu'est ce que j'ai loupé :'( :'(


Message édité par gatsu35 le 06-03-2010 à 11:04:01

---------------
Blablaté par Harko
mood
Publicité
Posté le 06-03-2010 à 10:45:24  profilanswer
 

n°1971577
masklinn
í dag viðrar vel til loftárása
Posté le 06-03-2010 à 12:32:41  profilanswer
 

descendant::cat[@id=$catid]/page[position()=$pagenum]
 
La partie que t'as loupé, c'est que $pagenum est une chaîne de caractères, pas un entier (et dans tous les cas, je ne suis pas persuadé que [] puisse prendre juste une variable, même si c'est un entier, à vérifier)
 
accessoirement, tu peux templacer tes descendant:: par .//, et comme . est /, tu peux juste écrire //cat[@id....
 
Et comme tu définis <xsl:variable name="cat" select="//cat[@id=$catid]"/>
 
beh en dessous tu peux écrire $cat/page[position()=$pagenum]


Message édité par masklinn le 06-03-2010 à 12:47:54

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?

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

  Problème de paramètre vers une XSL

 

Sujets relatifs
OpenLaszlo/Glassfish Probleme de chargement de mediaprobleme de SSH2
[Easyphp5.1.3] probleme connexion mysql en localhsot[Résolu] Problème de requête
Problème création site en flashProbleme Entity sous Hibernate
Probleme variable fichier [ langage C ][php] Problème d'include et génération d'image (résolu)
problème avec itérator c++[edit] probleme de submit
Plus de sujets relatifs à : Problème de paramètre vers une XSL


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)