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

  1. #1
    Futur Membre du Club
    Aucune mise en forme avec ma feuille de style XSL sous Frefox 82./Windows 10
    Bonjour à tous!

    Je me lance en dehors de ma zone de confort (plutôt le VBA et Access) pour tenter de parser des fichiers XML avec un navigateur (firefox V82 sous windows 10), au moyen d'une feuille de style xsl de mon cru. Les deux fichiers sont dans le même répertoire local.

    Au bout de deux ou trois heures de galère , j'ai simplifié le XML source au maximum sur la base d'un exemple que je copie ci dessous :

    fichier xml :
    Code xml :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet href="hello-page-html.xsl" type="text/xsl"?>
    <!DOCTYPE page SYSTEM "hello-page.dtd">
    <page>
     <title>Hello friend</title>
     <content>
      Voici du contenu
     </content> 
     <comment>
          Written by j-ph, en l'an de grâce 2020
     </comment>
    </page>


    XML que je traduit avec la feuille de style suivante : ...
    Code xml :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      <?xml version="1.0"?>
      <xsl:stylesheet version="1.0" xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />sl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="text"/>
        <xsl:template match="/">
          Article - <xsl:value-of select="/Article/Title"/>
          Auteurs : <xsl:apply-templates select="/Article/Authors/Author"/>
        </xsl:template>
        <xsl:template match="Author">
          - <xsl:value-of select="." />
        </xsl:template>
      </xsl:stylesheet>


    La feuille de style est dument appelée dans le doc XML, mais la mise en forme espérée ne se produit pas .

    A l'ouverture du doc xml, tout son contenu est affiché en un seul bloc de texte sans séparation ni saut de ligne.

    Quelques hypothèses :

    a) (xml et xsl sont dans le même répertoire, mais peut être qu'il faut donner un nom de chemin complet dans l'instruction :
    "<?xml-stylesheet href="hello-page-html.xsl" type="text/xsl"?>" ?? Tout se passe en effet comme si la feuille de style était ignorée (si je mets un nom de fichier qui n'existe pas , j'ai exactement le même phénomène)

    b) la transformation est bloquée dans Firefox (paramétrage?)

    Je fais surement une erreur évidente mais je ne vois pas laquelle ??

    J'ai essayé avec deux ou trois autres exemples simple xml/xsl mais j'ai systématiquement le même phénomène: la feuille de style n'est pas prise en compte, et le contenu du xml est simplement "dumpé" sur mon écran.

    A défaut J'aimerais bien avoir un exemple de paire de fichiers xml/xsl qui fonctionne sous firefox .

    Merci d'avance

  2. #2
    Membre émérite
    Si on change matériellement le xml touchant les noms des balises et sa structure, on doit changer le xslt aussi reflétant les mêmes.

    Äu titre d'exemple, remplacez les templates par ça.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <xsl:template match="/">
          title - <xsl:value-of select="/page/title"/>
          comment : <xsl:apply-templates select="/page/comment"/>
        </xsl:template>
        <xsl:template match="comment">
          - <xsl:value-of select="." />
        </xsl:template>


    Et puis, pas forcément pour firefox, la ligne dtd est aperçu pour bonne raison par certains navigateurs comme risque sévère, si elle ne serve rien et n'est là que symboliquement, il vaut mieux de l'enlever.

  3. #3
    Futur Membre du Club
    En fait, le problème provient de Firefox qui interdit le traitement de fichiers locaux pour des raisons de sécurité.
    On rétablit le traitement en remettant le flag "privacy.file_unique_origin" à false.

  4. #4
    Membre émérite
    En fait, le problème provient de Firefox qui interdit le traitement de fichiers locaux pour des raisons de sécurité.
    On rCétablit le traitement en remettant le flag "privacy.file_unique_origin" à false.
    C'est oui et non: c'est plutôt non dans ce cas-ci, un mythe ou une illusion.

    Si le href s'écrit comme du genre http://examples.com/hello-page-xml.xsl, oui, ça devient nécessaire; mais pour href qui s'écrit comme tel, ce n'en est pas. Mais, si la ligne dtd s'installe là, vous vous en prenez compte. Cette ligne s'est vue plus de mal que de bien dans les applications web, à mon sens.

###raw>template_hook.ano_emploi###