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]Copie du contenu d'un fichier en XSL


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut [XSL]Copie du contenu d'un fichier en XSL
    Salut,
    Voilà ce que je veux faire :
    J'ai une feuille XSL qui me génère une page HTML
    J'ai un autre fichier qui contient un morceau de code HTML (indépendant de mon appli).
    Est ce qu'il est possible dans ma feuille XSL de copier le contenu du fichier HTML pour qu'il apparaissent dans mon document généré final HTML ?

    Merci de m'aider.
    Delphine.

  2. #2
    EJ
    EJ est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Je ne comprends pas très bien ce que tu veux faire?
    par exemple en html tu as écrit "bonjour bienvenue chez Delphine + une image" et tu veux l'avoir aussi dans ton xsl?
    Il existe 10 catégories de gens.
    Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Ouais, en faite j'ai une appli ou je dois généré du code HTML via mes feuilles XSL. Toutes mes données sont dans un gros fichier XML.
    Le truc, c'est que l'utilisateur peut externaliser des bouts de codes. Il peut saisir par exemple dans un fichier comment.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <b>Kikou c'est fifi. 
         <a href="http://<a href="http://www.developpez.com">clic" target="_blank">www.developpez.com">clic</a> la! </a>
    </b>
    Après dans ma feuille XSL, je mouline mon fichier XML, apres quand je tombe la balise qui contient le chemin du fichier comment.html, il faut que j'insère dans la génération de mon doc le contenu de comment.html.


    C'est faisable ?

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    si ton html respecte une syntaxe xml tu peux peut etre l'appeler avec la fonction xpath document(nom du fichier),et intercale son conytenu avec <xsl:copy-of select="ce_que tu veux copier">
    par exemple si tu veux copier le contenu de la div qui a comme id="truc"
    ca peut peut etre donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="document(tonfichier.html)/HTML/BODY/DIV[ID="truc"]">,
    mais j'ai jamais essaye avec un html ou un copy-of donc je promet pas le resultat

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Bah le truc, c'est que je connais pas le contenu de son fichier comment.html
    ca peut etre des conneries, du code HTML mal écrit.
    Je veux pas interpréter son contenu dans ma feuille XSL (xsl:value-of) car sinon ma génération va planter.
    A la rigueur, si il a mis du code HTML faux dans son comment.html il faut que ça le fasse ç l'affichage de la page et pas pdt la génération.
    C'est pour ça que je veux copier bêtement le contenu du comment.html dans mon doc html généré final...
    Vais essayer qd même ce que tu m'as dit...
    Merci pour ton aide.
    Si t'as d'autre idée, je suis prenante.

    Parceque là, je galère grave...


    Delphine.

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    pourquoi tu ne genere pas un include pointant sur son fichier alors?

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Comment on fait ?
    il suffit de mettre un include (comme en jsp) et c bon ?

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:for-each select=<mon_node>>
      <xsl:copy-of select="."/><br/>
    </xsl:for-each>
    <!--Test d'un include -->
    <xsl:include href="L:/temp/pub_include.html"/>
    Ca marche pas, le parseur aime pas.
    Je peux pas mettre de balise include ou je veux...

  9. #9
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    je pensais a generer un include html ou serveur

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    euhh...
    Tu peux m'expliquer, comprends pas trop comment faire...
    (je débute dans le XSL, faut pas m'en vouloir).

  11. #11
    EJ
    EJ est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Et pourquoi pas un iframe?
    J'en ai un dans mon doc, jsutement, donc c'est possible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe frameborder="0" height="150" name="mapage" width="100%"/>
    Il existe 10 catégories de gens.
    Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  12. #12
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Salut,
    Excusez-moi d'être chiante ...
    Mais j'ai essayer de mettre un iframe dans ma feuille XSL comme tu m'as dit EJ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <iframe border="0" src="L:/temp/pub_include.html" name="comment"></iframe>
    Ca marche bien, mais c'est pas ça que je veux (le résultat c'est bon, mais le fonctionnement, non).
    Mon fichier pub_include.html contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <b>On va essayer ça</b>
    <br>
    <a href="http://www.google.com">Lien vers google</a>
    Mon code HTML (généré par le XSL) référence le fichier L:/temp/pub_include.html. Alors que moi je veux que dans le fichier HTML généré, le contenu de pub_include.html. Autrement, ça veut dire qu'il faudrait que je me trimballe le fichier pub_include.html avec mes fichiers HTML générés...
    C'est vraiment une action copier/coller que je veux faire...
    Désolé les namis...

    Delphine.
    En tt cas, merci bcp pour tt !
    Other ideas ?
    [/code]

  13. #13
    EJ
    EJ est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Attends je pige pas là...
    Qu'est-ce que tu appelles "référencer"?
    Tu vois ici http://verennes.univ-tln.fr/site/index.htm (c'est un site que j'ai fait pour un prof pendant le DUT, c'est pas fini mais heu bon là j'suis en stage ), y'a que des iframes: le bandeau de menu c'est la page, et le contenu est appelé en iframe à chaque fois.
    Regarde le nom de la page quand tu cliques, ça ne change jamais.
    C'est pas ça que tu as, toi, quand tu mets une iframe?
    Il existe 10 catégories de gens.
    Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  14. #14
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Bien le site...
    Bon, pour mon pb, Je m'explique: Ta solution marche très bien, mais le seul hic, c'est que le fichier HTML généré par ma feuille XSL contient ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ....
    <td>
    <br>
    <iframe frameborder="0" height="150" name="L:/temp/pub_include.html" width="100%"></iframe>kikou!</p>
    <br>
    </td><td> 
    ...
    Alors que moi je veux que mon code XSL génère ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    <td>
    <br>
    b>On va essayer ça</b>
    <br>
    <a href="http://www.google.com">Lien vers google</a>
    <br><td><td>
    ...
    C'est pour éviter à l'utilisateur de se trimballer avec des fichiers supplémentaires.
    Ce que je veux faire dans ma feuille XSL, c'est vraiment copier le contenu du fichier pub_include.html pendant la génération de mon fichier HTML final.

  15. #15
    EJ
    EJ est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 49
    Points
    49
    Par défaut
    Bon hé ben tu donnes une instruction xsl:
    <xsl:delete "iframe">
    Bon ok j'arrête de dire des conneries
    Pour copier carrément les données, je me demande si tu ne pourrais pas traiter ton .html comme un .xml: tu importes le .html au début du fichier (dans le xsl, pour importer un autre xsl c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:import href="../monfichier.xsl"/>
    avec un peu de bol ça marche pareil ) et après tu rappatries les données: S'il trouve la balise <body> il affiche...
    A voir, je ne sais pas si ça peut fonctionner...
    Il existe 10 catégories de gens.
    Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  16. #16
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Faute de temps, je vais prendre la solution du iframe.
    Merci encore pour votre aide.

    Delphine.

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Yé trouvé !!!!
    On peut copier depuis le XSL le contenu d'un fichier externe (html, texte...) sous forme de texte avec la super méga fonction :
    unparsed-text()
    C'est dispo dans le XSLT2.0 (moi j'utilise la 1.0, du coup j'ai pas encore testé).
    Voilà le lien
    http://<br /> http://www.w3.org/TR/...sed-text<br />

    Comment on fait pour passer dans en 2.0

  18. #18
    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,

    Saxon version 8 utilise la version 2.0 de XSLT, mais je suis pas sur que ce soit une version de production.
    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

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/04/2011, 13h26
  2. copie le contenu d'un fichier xls dans un fichier txt
    Par mariafan dans le forum Langage
    Réponses: 22
    Dernier message: 09/08/2007, 14h07
  3. [VBA-E]macro fichier protégé xsl copie de fichiers partagés
    Par matou_aouh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/04/2006, 15h08

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