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 :

[XSLT] Débutant erreur sur déclaration template


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 26
    Points
    26
    Par défaut [XSLT] Débutant erreur sur déclaration template
    Bonjour,

    Le code suivant m'affiche : XSLT Error: (essai.xsl, line 47, column 38.)
    La ligne 47 correspond à : <xsl:template name="affiche_donnees">

    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
     
    <body>
    <table width="100%" border="0">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    	<td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    	<td>&nbsp;</td>
      </tr>
     
     
    <xsl:variable name="ville">
    <xsl:value-of select="LEI/resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE" />
    </xsl:variable>
     
    <xsl:if test="position()=1">
    	<xsl:call-template name="affiche_donnees">
    		<xsl:with-param name="val_ville" select="$ville">
    		</xsl:with-param>
    	</xsl:call-template>
    </xsl:if>
    <xsl:template name="affiche_donnees">
    	<xsl:param name="val_ville" />
    		<xsl:for-each "LEI/resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE"="$val_ville">
    			<tr>
    				<td>LEI/Resultat/sit_liste/NOM</td>
    				<td>LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE</td>
    				<td>LEI/Resultat/sit_liste/ADRPROD_TEL</td>
    			</tr>
    		</xsl:for-each>
    </xsl:template>
     
    </table>
    </body>
    Je ne vois pas du tout !
    J'espère que la solution est aussi évidente que lors de mon dernier message. Merci.

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:variable name="ville">
    <xsl:value-of select="LEI/resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE" />
    </xsl:variable>
     
    <xsl:if test="position()=1">
    	<xsl:call-template name="affiche_donnees">
    		<xsl:with-param name="val_ville" select="$ville">
    		</xsl:with-param>
    	</xsl:call-template>
    </xsl:if>
    est elle dans un xsl:template?..si ce n'est pas le cas, essaye de la mettre dans un <xsl:template match="/"> par exemple.
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    je mets le code complet, car tout est englobé dans un template oui :

    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
    63
    64
     
    <?xml version="1.0" encoding="iso-8859-15"?><!-- DWXMLSource="esh.xml" --><!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="iso-8859-15" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
    <xsl:template match="/">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"/>
    <title>Untitled Document</title>
    </head>
     
    <body>
    <table width="100%" border="0">
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    	<td>&nbsp;</td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    	<td>&nbsp;</td>
      </tr>
     
     
    <xsl:variable name="ville">
    <xsl:value-of select="LEI/resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE" />
    </xsl:variable>
     
    <xsl:if test="position()=1">
    	<xsl:call-template name="affiche_donnees">
    		<xsl:with-param name="val_ville" select="$ville">
    		</xsl:with-param>
    	</xsl:call-template>
    </xsl:if>
    <xsl:template name="affiche_donnees">
    	<xsl:param name="val_ville" />
    		<xsl:for-each "LEI/resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE"=$val_ville>
    			<tr>
    				<td>LEI/Resultat/sit_liste/NOM</td>
    				<td>LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE</td>
    				<td>LEI/Resultat/sit_liste/ADRPROD_TEL</td>
    			</tr>
    		</xsl:for-each>
    </xsl:template>
     
    </table>
    </body>
    </html>
     
    </xsl:template>
    </xsl:stylesheet>

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il est interdit d'imbriquer les templates. Tu vas devoir réorganiser ton code en conséquence.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    comme dit GrandFather, tu ne peux pas imbriquer des templates. ce que tu peux déja faire ici c'est de fermer ton premier template juste avant <xsl:template name="affiche_donnees">

    et non juste aprés..

    ensuite je vois ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <td>LEI/Resultat/sit_liste/NOM</td>
    				<td>LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE</td>
    				<td>LEI/Resultat/sit_liste/ADRPROD_TEL</td>
    sache juste que ces chemin ne seront pas évalué et que qu'ils sont considerer comme toute autre string.
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Vu que je n'arrivais à rien, je suis passé par un code qui n'appelle pas de template et qui boucle uniquement sur 1 LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUN et qui fonctionne exactement comme je veux. Voici le code :

    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
     
    <?xml version="1.0" encoding="iso-8859-1"?><!-- DWXMLSource="esh.xml" --><!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="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
    <xsl:template match="/">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>Untitled Document</title>
    </head>
     
    <body>
    <xsl:variable name="ville">
    	<xsl:value-of select="LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE" />
    </xsl:variable>
    <table width="100%" border="0">
      <tr>
        <td colspan="2"><xsl:value-of select="$ville" /></td>
        <td>&nbsp;</td>
      </tr>
     
    <xsl:for-each select="LEI/Resultat/sit_liste">
    	<xsl:variable name="maville">
    		<xsl:value-of select="ADRPROD_LIBELLE_COMMUNE" />
    	</xsl:variable>	
    	<xsl:if test="$ville=$maville">
    	<tr>
        <td><xsl:value-of select="NOM" disable-output-escaping="yes"/></td>
        <td><xsl:value-of select="ADRPROD_LIBELLE_COMMUNE" disable-output-escaping="yes"/></td>
        <td><xsl:value-of select="ADRPROD_TEL" disable-output-escaping="yes"/></td>
      </tr>	 
      	</xsl:if>
     
    </xsl:for-each>
    </table>
    </body>
    </html>
     
    </xsl:template>
    </xsl:stylesheet>
    Voici le code html résultant :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Untitled Document</title>
    </head>
    <body>
    <table width="100%" border="0">
    <tr>
    <td colspan="2">
     Bellac
     
      </td><td>&nbsp;</td>
    </tr>
    <tr>
    <td>
     Crêperie du Vincou
     
      </td><td>
     Bellac
     
      </td><td></td>
    </tr>
    <tr>
    <td>
     Le BLanzac
     
      </td><td>
     Bellac
     
      </td><td>
     05 55 60 24 53
     
      </td>
    </tr>
    <tr>
    <td>
     Chez Boulette
     
      </td><td>
     Bellac
     
      </td><td>
     05 55 68 83 82
     
      </td>
    </tr>
    <tr>
    <td>
     Cafétaria Lamartine
     
      </td><td>
     Bellac
     
      </td><td>
     05 55 68 48 37
     
      </td>
    </tr>
    <tr>
    <td>
     Le Palais
     
      </td><td>
     Bellac
     
      </td><td>
     05 55 68 06 24
     
      </td>
    </tr>
    <tr>
    <td>
     Café du Pont de la Pierre
     
      </td><td>
     Bellac
     
      </td><td>
     06 74 50 90 79
     
      </td>
    </tr>
    <tr>
    <td>
     Auberge des quatre saisons
     
      </td><td>
     Bellac
     
      </td><td>
     05 55 53 45 45
     
      </td>
    </tr>
    <tr>
    <td>
     Auberge du Vincou
     
      </td><td>
     Bellac
     
      </td><td>
     05 55 68 75 61
     
      </td>
    </tr>
    </table>
    </body>
    </html>

    Ensuite, j'ai essayé de le transformer avec des template afin que ça boucle justement sur les LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE

    voici le code :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    <?xml version="1.0" encoding="iso-8859-1"?><!-- DWXMLSource="esh.xml" --><!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="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
    <xsl:template match="/">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>Untitled Document</title>
    </head>
     
    <body>
     
     
    <table width="100%" border="0">
    <xsl:call-template name="aff_titre">
    	<xsl:with-param name="ville">
    		<xsl:value-of select="LEI/Resultat/sit_liste/ADRPROD_LIBELLE_COMMUNE" />
    	</xsl:with-param>
    </xsl:call-template>
     
    </table>
    </body>
    </html>
    </xsl:template>
     
    <xsl:template name="aff_titre" match="LEI/Resultat/sit_liste">
    	<xsl:param name="ville" />
    	<tr>
        <td colspan="2"><xsl:value-of select="$ville" /></td>
        <td>&nbsp;</td>
     	</tr>
    	<xsl:call-template name="aff_info">
    		<xsl:with-param name="maville">
    		<xsl:value-of select="$ville" />
    		</xsl:with-param>
    	</xsl:call-template>	
     
    </xsl:template>
     
    <xsl:template name="aff_info" match="/">
    	<xsl:param name="maville" />
    	<xsl:for-each select="LEI/Resultat/sit_liste">
    		<xsl:variable name="laville">
    			<xsl:value-of select="ADRPROD_LIBELLE_COMMUNE" />
    		</xsl:variable>	
    		<xsl:if test="$laville=$maville">
    			<tr>
        			<td><xsl:value-of select="NOM" disable-output-escaping="yes"/></td>
        			<td><xsl:value-of select="ADRPROD_LIBELLE_COMMUNE" disable-output-escaping="yes"/></td>
        			<td><xsl:value-of select="ADRPROD_TEL" disable-output-escaping="yes"/></td>
      			</tr>	 
      		</xsl:if>
     
    	</xsl:for-each>
    </xsl:template>
     
     
    </xsl:stylesheet>
    et là, oh merveille, il apparait une page blanche !
    J'avais pourtant l'impression d'avoir compris comment ça fonctionnait, mais il semble que non finalement !

Discussions similaires

  1. Erreur sur mes templates et urlconf
    Par makelou dans le forum Django
    Réponses: 2
    Dernier message: 29/04/2010, 15h01
  2. Erreur sur déclaration de liste
    Par La Truffe dans le forum C++
    Réponses: 4
    Dernier message: 19/02/2006, 19h38
  3. Réponses: 6
    Dernier message: 20/11/2005, 02h53
  4. Réponses: 16
    Dernier message: 19/11/2005, 16h47
  5. Réponses: 1
    Dernier message: 06/10/2005, 10h09

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