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 :

[XSL] Inclure une balise dans un <xsl:if></xsl:if>


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de hedgehog
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 133
    Points
    133
    Par défaut [XSL] Inclure une balise dans un <xsl:if></xsl:if>
    Bonjour à tous,

    J'effectue une mise en forme dans mon XML et je souhaite effectuer ce test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:if test="position() mod 3 = 0">
       </tr><tr>
    </xsl:if>
    Lorsque j'éxécute, j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Erreur d'analyse XML : balise ne correspondant pas. Attendu : </xsl:if>.
    Emplacement : file:///G:/D%C3%A9veloppement/Dev/XML/Liens/liens.xsl
    Numéro de ligne 46, Colonne 12 :
           		</tr><tr>
    ------------------^
    Comment puis-je insérer ma balise </tr> sans erreur ?

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 77
    Points
    77
    Par défaut
    essay avec la balise : <xsl:element name="balise"> </xsl:element>

  3. #3
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Peux-tu afficher ton XSL et un XML d'exemple ? Il doit bien y avoir un moyen de faire ce que tu veux sans pour autant utiliser ce xsl:if
    See you, space cowboy... and if you're satisfied, click on

  4. #4
    Membre habitué Avatar de hedgehog
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 133
    Points
    133
    Par défaut
    Voici un XML d'exemple :

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="liens.xsl"?>
    <liens>
    	<tableaux largeur="100" />
    	<categorie titre="categorie1">
    		<lien titre="lien1" url="url1" />
    		<lien titre="lien2" url="url2" />
    	</categorie>
    	<categorie titre="categorie2">
    		<lien titre="lien1" url="url1" />
    		<lien titre="lien2" url="url2" />
    		<lien titre="lien3" url="url3" />
    	</categorie>
    	<categorie titre="categorie3">
    		<lien titre="lien1" url="url1" />
    		<lien titre="lien2" url="url2" />
    	</categorie>
    </liens>
    et le XSL :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?xml version="1.0" encoding="utf-8"?><!DOCTYPE xsl:stylesheet  [
    	<!ENTITY nbsp   " ">
    	<!ENTITY copy   "©">
    	<!ENTITY reg    "®">
    	<!ENTITY trade  "™">
    	<!ENTITY mdash  "—">
    	<!ENTITY ldquo  "“">
    	<!ENTITY rdquo  "”"> 
    	<!ENTITY pound  "£">
    	<!ENTITY yen    "¥">
    	<!ENTITY euro   "€">
    ]>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
        <xsl:template match="liens">
     
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                <link rel="stylesheet" type="text/css" href="liens.css" />
                <title>Liens</title>
            </head>
            <body>
                <table align="center">
                    <tr valign="top">
                    	<xsl:apply-templates select="categorie" />
                    </tr>
                </table>
                <xsl:apply-templates select="test" />
            </body>
        </html>
     
        </xsl:template>
     
        <!-- Affichage des catégories -->
        <xsl:template match="categorie">
        	<td>
                <table border="0" cellpadding="0" cellspacing="3" class="liens">
                	<xsl:attribute name="width"><xsl:value-of select="/liens/tableaux/@largeur" /></xsl:attribute>
                    <tr align="center"><td class="categorie"><xsl:value-of select="@titre" /></td></tr>
                    <tr align="center"><td><hr width="85%" /></td></tr>
                    <xsl:apply-templates select="lien" />
                </table>
            </td>
            <xsl:if test="position() mod 3 = 0">
           		</tr><tr> <!-- LE PROBLEME EST ICI -->
            </xsl:if>
        </xsl:template>
        <!-- Affichage des catégories -->
        <xsl:template match="lien">
            <tr align="center">
            	<td onmouseover="this.className='tdDessus'" onmouseout="this.className='tdHors'">
                	<a target="_blank">
                        <xsl:attribute name="href"><xsl:value-of select="@url" /></xsl:attribute>
                        <xsl:value-of select="@titre" />
                    </a>
               	</td>
            </tr>
        </xsl:template>
     
    </xsl:stylesheet>

  5. #5
    Membre habitué Avatar de hedgehog
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 133
    Points
    133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            <xsl:if test="(position() mod 3 = 0) and (position() != last())">
           		<xsl:text disable-output-escaping="yes">&lt;/tr&gt;&lt;tr&gt;</xsl:text>
            </xsl:if>
    J'ai essayé ca mais le probléme c'est que cela ne marche que sous IE, FireFox me le prend en tant que texte pur et non balise

  6. #6
    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
    C'est pas une approche adapté au traitement XSL, tu ne peux pas conditionner la fermeture d'un noeud dans un if.
    Le seule façon qui me vient à l'esprits serait de faire un for-each du nombre de ligne (count(lien) div 3 + 1) et de faire des call-templates pour remplir les colonnes.

  7. #7
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Un problème analogue s'est posé sur ce thread.

    La personne essaie de découper un ensemble de balises toutes les X occurrences pour changer de lignes dans son tableau. Tu peux donc facilement t'inspirer de ce XSL pour ensuite appliquer le traitement adéquat au ton fichier XML pour le transformer comme bon te semble.
    See you, space cowboy... and if you're satisfied, click on

  8. #8
    Membre habitué Avatar de hedgehog
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 133
    Points
    133
    Par défaut
    Merci, je vais regarder ca

Discussions similaires

  1. inclure une balise dans un test
    Par vidici dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 02/12/2014, 10h06
  2. [XSL]Généré une balise dans un texte
    Par Devilpika dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/06/2008, 14h59
  3. Inclure une balise dans une autre balise
    Par Tomfun dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2007, 12h28
  4. [XSL]faire une balise dans une balise??? (ComboBox)
    Par rastoix dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/05/2003, 08h34
  5. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24

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