IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[Débutant] [XSLT]balise xsl:if


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut [Débutant] [XSLT]balise xsl:if
    Bonjour,

    je débute en xsl.
    J'ai un fichier xsl déjà tout fait que je dois modifier.

    le fichier est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
     
    	<xsl:template match="DATA">
    			<br/>
    			<xsl:apply-templates select="PROCESSUS"/>
    	</xsl:template>
     
    	<xsl:template match="PROCESSUS">
    				<span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause">
     
    				<xsl:attribute name="id">spanDomaine<xsl:value-of select="@num_rcma"/></xsl:attribute>
    				<xsl:attribute name="onClick">SelectDomaine("<xsl:value-of select="@num_rcma"/>")</xsl:attribute>
    				<xsl:if test="count(./PROCESSUS)>0">
    					<img src="../images/icon_adddelete.gif" onmouseover="me.src='../images/icon_adddelete_over.gif'" onmouseout="me.src='../images/icon_adddelete.gif'" onclick="OpenClose({@num_rcma})"/>
    				</xsl:if>
    				<xsl:if test="count(./PROCESSUS)=0">
    					<span class="ListRefCause" style="line-height:2px;width:18px;visibility:hidden"></span>
    				</xsl:if>
    				<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
    				<xsl:value-of select="@num_rcma"/><xsl:text disable-output-escaping="yes">&amp;nbsp;-&amp;nbsp;</xsl:text><xsl:value-of select="@lib_rcma"/>
    				<br/>
    			</span>
     
    			<div style="display:'none'">
    				<xsl:attribute name="id">divDomaine<xsl:value-of select="@num_rcma"/></xsl:attribute>
    				<xsl:apply-templates select="./PROCESSUS"/>
    			</div>
     
    	</xsl:template>
     
    </xsl:stylesheet>
    le fichier XML a traité est du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <DATA>
      <PROCESSUS idrcma="1" num_rcma="1" lib_rcma="libelle1" rang="1">
        <PROCESSUS idrcma="11" num_rcma="11" lib_rcma="libelle2" rang="2">
          <PROCESSUS idrcma="111" num_rcma="11/1" lib_rcma="libelle3" rang="3"/>
        </PROCESSUS>
      </PROCESSUS>
        </PROCESSUS>
    </DATA>
    Ce que j'aimerais c'est que la classe diffère suivant le rang de mon processus
    j'ai donc voulu mettre après mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="PROCESSUS">
    quelque chose du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:if test="@rang = '1'">
    					<span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause">
    				</xsl:if>
    <xsl:if test="@rang = '2'">
    					<span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause2">
    				</xsl:if>
    <xsl:if test="@rang = '3'">
    					<span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause3">
    				</xsl:if>
    Si je ne mets rien dans mes if et que je metsma ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause">
    en dehors des if mon XSL est correct.

    J'ai du mal à capter en cet fin de journée.
    Quelqu'un aurait une idée?
    mais j'ai un message qui me dit que ma feuille de style est peut être vide ou n'est pas un document xml correctement constitué

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ceci te renverra le nombre de noeud parent quelconque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="count(ancestor::*)"/>

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Une des recommandations de xml est que les balises doivent être bien imbriquées. En d'autres termes :

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:if test="@rang = '1'">
      <span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause">
    </xsl:if>
    n'est pas correct, car la balise <span> s'ouvre dans une balise <xsl:if> mais ne se ferme pas!

    Solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:if test="@rang = '1'">
      <span style="padding-left:{@rang*20-15};cursor:hand;width:100%;text-align:left" class="ListRefCause">
     
     blablablablabla
     
      </span>
    </xsl:if>

Discussions similaires

  1. [XSLT] Balise xsl dans balise html
    Par Mercenary Developer dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/11/2009, 09h47
  2. [XSLT]la balise <xsl:sort >
    Par reeda dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/12/2007, 11h10
  3. [XSLT] Comment inclure une balise xsl dans une balise html
    Par sylsau dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/10/2006, 09h33
  4. XSLT et XSL-FO
    Par Ethylene dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/10/2005, 09h47
  5. [.NET][XSLT] balise META
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/05/2005, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo