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] Fichier HTML vide si noeud dans template enfant


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut [XSLT] Fichier HTML vide si noeud dans template enfant
    Salut,

    Mon titre n'est sans doute pas très clair mais mon problème est relativement simple à expliquer. Voilà déjà un exemple de code fautif :
    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
    <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Ce que vous voulez</title>
      </head>
      <body>
        <div>
          <xsl:call-template name="pouetpouet" />
        </div>
      </body>
    </html>
    </xsl:template>
     
    <xsl:template name="pouetpouet">
    <div id="le_div_qui_pose_problème">
    <xsl:text>youpi</xsl:text>
    </div>
    </xsl:template>
    Si je créé un noeud comme "le_div_qui_pose_problème" dans un template enfant, le fichier HTML résultat après application de la XSLT sur un XML est complètement vide. Si le vire le div incriminé, tout va bien. Mais j'ai besoin de créer ce genre de noeud dans les templates enfants. Est-ce que quelque chose m'aurait échappé?

    D'avance merci.

  2. #2
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    bizarre cela fonctionne chez moi as tu un fichier xml et un fichier xsl a nous proposer

  3. #3
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut
    Alors en fait je viens juste de trouver la solution. Mais c'est un peu bizarre.

    Avec ma XSLT je créé un fichier HTML avec l'Output suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html" indent="yes" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
    J'avais déjà pu constater que ça ne fonctionnait (document final non vide) que si je mettais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template match="/">
        <html xmlns="http://www.w3.org/1999/xhtml">
        </html>
    </xsl:template>
    Notez bien l'attribut xmlns. Si je ne le mets pas, mon fichier HTML résultant est vide à tous les coups.

    Eh bien c'est pareil avec les template que j'appelle avec call-template. Il faut forcément que leur élément racine ait l'attribut xmlns pointant vers le schéma XHTML du W3C (et pas un autre). Comme ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      <xsl:template name="ListeMedia">
        <xsl:param name="typeMedia" />
        <div xmlns="http://www.w3.org/1999/xhtml">
          <xsl:for-each select="$descripteurs">
            <xsl:call-template name="Descripteurs">
              <xsl:with-param name="genre" select="@Genre" />
              <xsl:with-param name="typeMedia" select="$typeMedia" />
              <xsl:with-param name="positionDesc" select="position()" />
            </xsl:call-template>
          </xsl:for-each>
        </div>
      </xsl:template>
    C'est un peu chiant à gérer, mais ça fonctionne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur dans un fichier HTML vide dans un projet Tomcat sous Eclipse
    Par The_Miagiste dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/02/2011, 15h21
  2. Réponses: 2
    Dernier message: 04/09/2010, 17h30
  3. Tester si un fichier est vide + recup valeur dans ce fichier
    Par Johann7751 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/02/2009, 15h51
  4. [XSLT][>(X)HTML/JS] Menu déroulant dans XSL
    Par tomy29 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/01/2007, 11h17
  5. [XSLT]introduire la valeur d'un noeud dans une balise html
    Par delma dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 19/10/2006, 22h08

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