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 :

Mettre un lien hypertexte dans un document xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut Mettre un lien hypertexte dans un document xml
    Bonjour,
    après avoir longuement surfé sur internet, j'ai vu que c'était un pb récurrent et qu'il n'y avait pas de solution universelle d'après un internaute, d'où mon post.
    Dans un dossier, j'ai les fichiers suivants:
    ex.xml
    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet href="style.xsl" type="text/xsl"?>
    <rss version="2.0">
            <channel>
                    <title>Titre du channel</title>
    				<exemple>
                    <link>http://google.com</link>
    				</exemple>
                    <description>Description </description>
     
                    <item>
                            <title>Titre</title>
    						<exemple>
                            <link>http://google.com</link>
    						</exemple>
                            <description>Description</description>
    						<exemple>
                            <source url="http://google.com">Source</source>
    						</exemple>
                    </item>
     
            </channel>
    </rss>
    et la feuille de style xsl associée:
    style.xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" xmlns="http://www.w3.org/TR/REC-html40" result-ns="">
     
    	<xsl:template match="exemple"> 
    		<a href="{link}"><xsl:value-of select="link"/></a> 
    	</xsl:template> 
     
    </xsl:stylesheet>
    J'aimerais que tout ce qui est entre les balises link deviennent cliquable.

    J'ai plusieurs problemes:
    - Sur chrome:
    Lorsqu' il n'y a pas l'inclusion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet href="style.xsl" type="text/xsl"?>
    dans le ficher xml, j'obtiens bien l'arborescence du fichier xml. Mais quand je l'inclus, j'ai une page blanche

    - Sur firefox
    Je peux voir la page, mais les liens dans les balises <link> ne sont pas visualisables.

    J'aimerais résoudre ce soucis de compatibilité entre chrome et firefox au moins et faire apparaître dans les deux cas des liens cliquables.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 564
    Points : 21 629
    Points
    21 629
    Par défaut
    Citation Envoyé par Glork Voir le message
    après avoir longuement surfé sur internet, j'ai vu que c'était un pb récurrent et qu'il n'y avait pas de solution universelle d'après un internaute
    Pas le moins du monde. C'est juste une question d'apprendre à utiliser XSLT.

    <?xml-stylesheet href="style.xsl" type="text/xsl"?> demande au navigateur d'afficher ce fichier après avoir appliqué une transformation XSLT, avec la feuille XSLT style.xsl.
    Si tu ne mets pas ça, le fichier XML est affiché avec un visualiseur XML classique. "C'est moche," oui, et les liens ne sont pas cliquables.

    Utiliser XSLT n'est pas du tout une mauvaise idée... Mais il faut apprendre.
    En l'occurrence, ça fait une page blanche parce que la feuille style.xsl est mal faite, et puis elle n'est pas adaptée à ton fichier : du coup elle n'affiche rien.
    Il en faut en faire une qui affiche les choses comme tu les veux.

    Donc, bouquin et tutoriels sur XSLT, et au boulot.
    Il faut être habitué à la programmation, par contre. C'est différent, mais si on y connaît rien on s'en sort pas.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Ok merci déjà pour votre réponse.
    Le problème c'est que je suis contraint par le temps...
    J'ai eu beau chercher sur pas mal de forums concernant les liens cliquables...
    Donc c'est à priori ma feuille de style xslt qui fait tout bugger. Qu'est-ce qui ne va pas ?
    Comment visualiser le xml sur chrome et comment avoir des liens cliquables sur chrome et firefox ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    j'oubliais... est-ce que c'est possible de rendre des liens cliquables avec le CSS ?? Je m'y conais plus en css qu'en xsl

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 564
    Points : 21 629
    Points
    21 629
    Par défaut
    Citation Envoyé par Glork Voir le message
    Le problème c'est que je suis contraint par le temps...
    Je sais pas quoi te dire. Si tu as pas le temps de te former, embauche quelqu'un qui s'y connaît déjà.


    À part ça, je viens de réaliser que tu dis que ça marche pas avec Chrome. Chrome ne gère pas les transformations XSLT sur les fichiers qui ne sont pas sur Internet (autrement dit, ça ne marche pas si tes fichiers sont juste sur ton disque dur.)

    Si tu as besoin que ça marche en tant que fichiers sur ton disque dur, avec Chrome, alors juste XSLT n'est pas une solution possible. Il va falloir que tu et fasses ton propre programme qui transforme ton fichier XML en un fichier HTML affichable par les navigateurs. Ou que tu le fasses toi-même à la main, au lieu d'un programme.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Pourriez-vous au moins m'aider sur la question des liens hypertextes?

  7. #7
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ...petite précision quand même : cela fonctionne en lancant Chrome en ligne de commande et en autorisant les liens locaux... mais ce n'est pas son problème prioritaire a priori !


    Citation Envoyé par thelvin Voir le message
    Je sais pas quoi te dire. Si tu as pas le temps de te former, embauche quelqu'un qui s'y connaît déjà.


    À part ça, je viens de réaliser que tu dis que ça marche pas avec Chrome. Chrome ne gère pas les transformations XSLT sur les fichiers qui ne sont pas sur Internet (autrement dit, ça ne marche pas si tes fichiers sont juste sur ton disque dur.)

    Si tu as besoin que ça marche en tant que fichiers sur ton disque dur, avec Chrome, alors juste XSLT n'est pas une solution possible. Il va falloir que tu et fasses ton propre programme qui transforme ton fichier XML en un fichier HTML affichable par les navigateurs. Ou que tu le fasses toi-même à la main, au lieu d'un programme.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Oui! Sous FF ça marche et mon pb prioritaire ce sont les liens hypertexte!

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 564
    Points : 21 629
    Points
    21 629
    Par défaut
    Le problème de la feuille de style XSLT que tu utilises, c'est qu'elle essaie de repérer un élément <exemple> qui contient un élément <link>.

    Ton fichier XML ne contient pas d'élément <exemple>. Ce sont des éléments <item>

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Pourtant y a des éléments exemple ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <title>Titre du channel</title>
    				<exemple>
                    <link>http://google.com</link>
    				</exemple>
                    <description>Description </description>
    ?

  11. #11
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ...oui mais regarde ce que fait exactement ton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="exemple">

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    L'attribut "match" de la balise <xsl:template> permet de définir (grâce à la notation XPath) le ou les éléments du document XML sur lesquels s'applique la transformation.
    Cette balise permet donc de traiter les éléments de type exemple.

    Je veux que les éléments de type exemple, dont les link font partie, deviennent des liens hypertexte.

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 564
    Points : 21 629
    Points
    21 629
    Par défaut
    Oh, en effet, je n'avais pas vu les balises <exemple>. Il n'y en a pas d'habitude dans les documents RSS.
    Le problème n'est pas du tout ce que je pensais.

    Le problème c'est ce xmlns="http://www.w3.org/TR/REC-html40". Qu'est-ce que quoi ? C'est quoi ce truc ? Le navigateur ne va pas le deviner... Le namespace du XHTML c'est xmlns="http://www.w3.org/1999/xhtml".

    Autre possibilité : virer ce xmlns= et à la place ajouter après le <xsl:stylesheet> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html"/>
    Question de goût, je trouve la deuxième solution plus claire.


    Dernière remarque, ce code est loufoque : <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" result-ns="". Je suis surpris que tu aies obtenu des transformations, même inutiles, sur Firefox avec un code pareil. En fait, je ne crois pas que tu en aies eu.
    En principe ce qui marcherait c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    J'ai modifié mes deux fichiers:
    ex.xml
    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet href="style.xsl" type="text/xsl"?>
    <rss version="2.0">
            <channel>
                    <title>TItre du channel</title>
    				<exemple>
                    <link>http://google.com</link>
    				</exemple>
                    <description>Description </description>
     
                    <item>
                            <title>Titre</title>
    						<exemple>
                            <link>http://google.com</link>
    						</exemple>
                            <description>Description</description>
    						<exemple>
                            <source url="http://google.com">Source</source>
    						</exemple>
                    </item>
     
            </channel>
    </rss>
    et style.xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
     
    	<xsl:template match="exemple"> 
    		<a href="{link}"><xsl:value-of select="link"/></a> 
    	</xsl:template> 
     
    </xsl:stylesheet>
    Sur FF, les liens ne sont pas visualisables, bien que je vois "TItre du channel" "Description" s'afficher.
    Sur Chrome, j'ai le message d'erreur suivant:
    This page contains the following errors:

    error on line 3 at column 1: Document is empty
    Below is a rendering of the page up to the first error.

    This document was created as the result of an XSL transformation. The line and column numbers given are from the transformed result.

  15. #15
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    tu pourrais aussi lui indiquer que tu sors du html...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 564
    Points : 21 629
    Points
    21 629
    Par défaut
    Citation Envoyé par Glork Voir le message
    Sur FF, les liens ne sont pas visualisables
    Je n'ai pas ce problème. Les liens sont bien là, visibles, cliquables et opérationnels.
    Version ?

    Citation Envoyé par Glork Voir le message
    Sur Chrome, j'ai le message d'erreur suivant:
    Ah, en effet. Le coup du namespace XHTML alors qu'on ne produit même pas du XML bien formé, ce n'était pas malin en fait. Firefox ne se plaint pas mais il devrait, je pense.
    Plutôt virer ce xmlns="" et utiliser la solution <xsl:output method="html"/>

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    J'ai modifié mes fichiers:
    ex.xml
    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet href="style.xsl" type="text/xsl"?>
    <rss version="2.0">
            <channel>
                    <title>Titre du channel</title>
    				<exemple>
                    <link>http://google.com</link>
    				</exemple>
                    <description>Description </description>
     
                    <item>
                            <title>Titre</title>
    						<exemple>
                            <link>http://google.com</link>
    						</exemple>
                            <description>Description</description>
    						<exemple>
                            <source url="http://google.com">Source</source>
    						</exemple>
                    </item>
     
            </channel>
    </rss>
    et style.xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>
     
    	<xsl:template match="exemple"> 
    		<a href="{link}"><xsl:value-of select="link"/></a> 
    	</xsl:template> 
     
    </xsl:stylesheet>
    Sur Chrome, je vois bien des liens cliquables maintenant.
    Sur FF, ils ne sont pas visualisables je vois juste ceci:

    Titre du channel
    Description


    TitreDescription

    Ma version (à jour) de Firefox est 22.

  18. #18
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 564
    Points : 21 629
    Points
    21 629
    Par défaut
    Je n'ai pas de problème avec ces fichiers avec Firefox.
    Bug de cache ?
    Trompé de fichier, ceux qui sont affichés avec Firefox ne sont pas ceux qu'on voit là ? (par exemple on aurait ce problème avec un RSS version 1.0 qui utilise un namespace)

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    je vais tester ça sur un autre ordi

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    c'est bon ça marche. Je devais avoir un problème dans ma feuille de style qui était mal organisée...!
    Merci.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/04/2014, 13h08
  2. [WD-2000] Mettre un lien hypertexte (la cible est dans le document)
    Par Jazz_ dans le forum Word
    Réponses: 7
    Dernier message: 26/10/2010, 11h13
  3. Lien hypertexte dans un document
    Par patbold dans le forum Word
    Réponses: 7
    Dernier message: 14/03/2008, 14h42
  4. [Word] Lien hypertexte dans le même document
    Par anka1 dans le forum Word
    Réponses: 2
    Dernier message: 29/02/2008, 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