<xsl:if sur un attribut ???

<xsl:if sur un attribut ??? - XML/XSL - Programmation

Marsh Posté le 27-11-2005 à 19:35:28    

youp,
 
je voudrais faire un <xsl:if sur un attribut mais je ne sais pas comment :(
 
<xsl:if test="@param != 3">   <!-- marche pas -->
<xsl:if test="noeud@param != 3"> <!-- marche pas -->
 
 
c'est comment qu'il faut faire ? :)

Reply

Marsh Posté le 27-11-2005 à 19:35:28   

Reply

Marsh Posté le 28-11-2005 à 11:26:37    

:bounce:


---------------
oui oui
Reply

Marsh Posté le 28-11-2005 à 12:07:16    

ça devrait marcher pourtant...
Rajoute des quotes pour voir:

Code :
  1. <xsl:if test="@param != '3'">


Si ça marche pas va falloir en montrer un peu plus ( au moins le template ...)

Reply

Marsh Posté le 28-11-2005 à 14:31:27    

effectivement ca marche :heink:  
 
je ne comprendrai jamais rien à l'informatique moi...
 
 
 
par contre j'ai un autre problème:
 
 
fichier xml

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
  3. <!-- Edited with XML Spy v4.2 -->
  4. <catalog>
  5. <cd id="3">
  6.  <title>Empire Burlesque</title>
  7.  <artist>Bob Dylan</artist>
  8.  <country>USA</country>
  9.  <company>Columbia</company>
  10.  <price>10.90</price>
  11.  <year>1985</year>
  12. </cd>
  13. <cd id="4">
  14.  <title id="5">Hide your heart</title>
  15.  <artist>Bonnie Tyler</artist>
  16.  <country>UK</country>
  17.  <company>CBS Records</company>
  18.  <price>9.90</price>
  19.  <year>1988</year>
  20. </cd>
  21. </catalog>


 
fichier xsl

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <xsl:stylesheet version="1.0"
  3. xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  4. <xsl:template match="/">
  5.   <html>
  6.   <body>
  7.     <h2>My CD Collection</h2>
  8.     <table border="1">
  9.       <tr bgcolor="#9acd32">
  10.         <th>Title</th>
  11.         <th>Artist</th>
  12.       </tr>
  13.       <xsl:for-each select="catalog/cd">
  14.       <xsl:if test="@id != 3">
  15.        <tr>
  16.          <td><xsl:value-of select="title"/></td>
  17.         <xsl:choose>
  18.            <xsl:when test="title@id = 5">
  19.              <td bgcolor="#ff00ff">
  20.              <xsl:value-of select="artist"/></td>
  21.            </xsl:when>
  22.            <xsl:otherwise>
  23.              <td><xsl:value-of select="artist"/></td>
  24.            </xsl:otherwise>
  25.          </xsl:choose>
  26.        </tr>
  27.   </xsl:if>
  28.       </xsl:for-each>
  29.     </table>
  30.   </body>
  31.   </html>
  32. </xsl:template>
  33. </xsl:stylesheet>


Ligne 15: <xsl:if test="@id != 3"> OK
 
 
ligne 19: <xsl:when test="title@id = 5"> PAS OK :( :Error loading stylesheet: XPath parse failure: binary operator expected:.
 
si je mets @id tout seul, il considère l'id de <cd id="..">
 
je dois faire comment pour qu'il fasse le test sur l'id de <title>
 
merci :)


---------------
oui oui
Reply

Marsh Posté le 28-11-2005 à 16:25:51    

il faut mettre title/@id ;)

Reply

Marsh Posté le 28-11-2005 à 16:52:47    

youp merci :)
 
 
encore une question :p
 
quand je fais <xsl:if test="@id != 3">
 
il me prend bien les <cd > dont l'id est différent de 3... mais uniquement s'ils ont un id.
 
ainsi, <cd id=""> ... </cd> est bien pris alors que <cd> ...</cd> n'est pas pris.
 
 
je dois faire comment ?
 
 
 :jap:


---------------
oui oui
Reply

Marsh Posté le 28-11-2005 à 17:11:42    

mets un ET dans ton if ...

Reply

Marsh Posté le 28-11-2005 à 22:28:01    

youp merci
 
 
<xsl:if test="(@id != 3) or (not(@id))">


---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed