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] Problème pour modifier un fichier xhtml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Points : 132
    Points
    132
    Par défaut [XSLT] Problème pour modifier un fichier xhtml
    Bonjour,

    Je travaille avec Java. J'ai un document DOM en entrée et je cherche à créer un fichier à partir de ce document en utilisant une xsl,
    mon but étant de modifier certaines balises (comme les balises images par exemple).

    Mon problème est que je n'arrive pas à passer dans les différents templates de ma xsl et je ne comprend pas pourquoi.

    Voici ma 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="html" indent="yes" encoding="UTF-8"
    		doctype-public="-//W3C//DTD HTML 4.0//EN" doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
    	<xsl:template match="img">
    		<testBalise></testBalise>
    	</xsl:template>
    	<xsl:template match="@*|node()">
    		<xsl:copy>
    			<xsl:apply-templates select="@*|node()" />
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>

    Lors du parsing, le template qui matche la balise <img> ne sera jamais appellé.

    J'ai fait plusieurs tests pour valider ma xsl :
    à partir du Dom, j'ai crée un fichier puis ensuite j'ai parsé ce fichier avec la xsl et là tous mes templates sont bien pris en compte.

    Une idée du pourquoi de l'échec de la première méthode?

    Cdlt

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    il faut appliquer une règle au moins pour la racine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="/">
    		<xsl:apply-templates/>
    	</xsl:template>
    En suite, tes expressions XPath doivent sélectionner des éléments de ton fichier XML.
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Points : 132
    Points
    132
    Par défaut
    Rebonjour,

    Merci pour la réponse.

    Mais cela ne change rien.
    Tous mes éléments sont bien copiés mais le template qui matche la balise <img> n'est toujours pas appelé.

    Je continue à chercher.

    Cdlt

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Il est clair que si tu l'applique à la lettre, il y a peu de chance que cela fonctionne.

    Pourrais tu nous faire passer ton fichier XML ...
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  5. #5
    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
    Hello,
    Ton xml en entrée ressemble à quoi?
    Il y a pas de namespace?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Points : 132
    Points
    132
    Par défaut
    merci pour les réponses.

    C'est justement là mon problème.
    en fait en entrée j'ai un DOM issu d'une transfo Fo vers xhtml.

    Mais si je mets ce DOM dans un fichier et ensuite que je parse ce fichier avec ma xsl, tous mes templates vont bien être utilisés.

    Je ne comprend donc pas ce que peut avoir mon Dom qui ferait échouer la xsl.

    Cdlt

    ps : je suis débutant en xsl....

  7. #7
    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
    En entrée du a donc déja du xhtml?
    Si c'est le cas, tous les éléments devraient appartenir au namespace "http://www.w3.org/1999/xhtml".

    Donc ton XSL devrait plutôt ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:stylesheet version="1.0"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    	xmlns:xhtml="http://www.w3.org/1999/xhtml"
    >
    ...
    <xsl:template match="xhtml:img">
    	<testBalise></testBalise>
    </xsl:template>
    Parcontre, ce que tu indiques en disant que "si tu sérializes le DOM en dans un fichier ça marche", ben c'est pas vraiment logique . Il doit y avoir une erreur quelque part.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Points : 132
    Points
    132
    Par défaut
    Re,

    super c'était effectivement ça le problème.
    Je ne pensais pas avoir à préciser le namespace de cette façon. Merci beaucoup.


    Parcontre, ce que tu indiques en disant que "si tu sérializes le DOM en dans un fichier ça marche", ben c'est pas vraiment logique . Il doit y avoir une erreur quelque part.
    En fait je faisais un parsing vers un fichier.
    Ensuite je recréait un Dom à partir de ce fichier et ensuite je lui appliqué ma xsl pour créer un nouveau fichier. dans ce cas là ça marchait.


    En tout cas merci à tous

    Cdlt

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

Discussions similaires

  1. Problème pour modifier mon fichier xml
    Par encoremoi21258 dans le forum C#
    Réponses: 4
    Dernier message: 11/05/2014, 20h15
  2. Réponses: 21
    Dernier message: 10/08/2009, 15h52
  3. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  4. [win] problème pour partager des fichiers entre 2 pc
    Par goma771 dans le forum Administration
    Réponses: 1
    Dernier message: 01/12/2005, 16h15
  5. Problème pour Télécharger des fichiers
    Par joce3000 dans le forum C++Builder
    Réponses: 8
    Dernier message: 21/01/2005, 10h30

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