Bonjour à tous,

Voici mon problème...

j'ai le fichier XML suivant:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="pack.xsl"?>
<articles>
	<contenu>
		<id>1</id>
		<pack_1>texte...</pack_1>
		<pack_2>texte...</pack_2>
		<pack_3>texte...</pack_3>
		<pack_4>texte...</pack_4>
		<pack_5>texte...</pack_5>
		<pack_6>texte...</pack_6>
		<pack_7></pack_7>
		<pack_8></pack_8>
		<pack_9></pack_9>
		<pack_10></pack_10>
	</contenu>
</articles>


Ainsi que le fichier XSL associé:
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- DWXMLSource="pack.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
  <xsl:param name="tri"/>
  <xsl:template match="/">
    <h3>Contenu du pack : </h3>
    <xsl:for-each select="articles/contenu[./id = 1]">
      <ul>
        <li><xsl:value-of select="pack_1"/></li>
        <li><xsl:value-of select="pack_2"/></li>
        <li><xsl:value-of select="pack_3"/></li>
        <li><xsl:value-of select="pack_4"/></li>
        <li><xsl:value-of select="pack_5"/></li>
        <li><xsl:value-of select="pack_6"/></li>
        <li><xsl:value-of select="pack_7"/></li>
        <li><xsl:value-of select="pack_8"/></li>
        <li><xsl:value-of select="pack_9"/></li>
        <li><xsl:value-of select="pack_10"/></li>
      </ul>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>


et lorsque je l'affiche cela me donne:

Contenu du pack :

* texte...
* texte...
* texte...
* texte...
* texte...
*
*
*
*
*

Ce qui me pose problème c'est que les champs vide soit affichés alors que j'aimerai qu'ils soient masqué.

Y a t'il une requête genre: if not " " => on affiche ?

Merci de votre aide
Modifié par Sp4tz (10 Jun 2008 - 17:36)
Je réponds à ta question: "Oui" Smiley smile

Bon, je vais quand même détailler un peu...

Tu peux utiliser un <xsl:if>. Par exemple, dans ce cas...

<xsl:for-each select="articles/contenu[./id = 1]">
      <ul>
        <xsl:if test="not(pack_1='')"><li><xsl:value-of select="pack_1"/></li></xsl:if>
        <xsl:if test="not(pack_2='')"><li><xsl:value-of select="pack_2"/></li></xsl:if>
(...)
        <xsl:if test="not(pack_10='')"><li><xsl:value-of select="pack_10"/></li></xsl:if>
      </ul>
    </xsl:for-each>


L'attribut test évalue une expression XPath. Ici, on teste si par exemple pack_1 n'est pas égal à la chaîne vide...

Si tu veux tester la présence d'un élément, tu peux écrire <xsl:if test="pack_1">...</xsl:if>.
heuu... je peux t'appeler Roi du xsl?

Ça fonctionne à merveille! exactement ce que je voulais faire. Merci mille fois !!!!