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 :

Plantage sous Firefox (Safari OK)


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Par défaut Plantage sous Firefox (Safari OK)
    Bonjour

    ce post fait suite à celui-ci.

    Je travaille avec Dreamweaver, quand je lance un aperçu avec Safari ou Firefox (depuis le menu Aperçu de Dreamweaver), pas de probleme. Mais quand j'appelle le fichier directement dans Firefox, le message suivant apparait:
    "Error during XSLT transformation: XSLT transformation failed."
    Alors que tout se passe bien sous Safari

    Le probléme apparait depuis que j'ai ajouté 2 tests conditionnels xsl:if dans:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <?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"
     encoding="UTF-8"
     doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
      <xsl:key name="cle" match="item" use="parent"/>
      <xsl:template match="/">
        <xsl:apply-templates select="plist/item[not(parent)]">
          <xsl:with-param name="marge" select="''"/>
          <xsl:sort select="nom" order="ascending"/>
        </xsl:apply-templates>
      </xsl:template>
      <xsl:template match="item">
        <xsl:if test="type!='contenu'"><!-- ICI -->
        <xsl:param name="marge" />
          <xsl:value-of select="concat($marge,'',nom)"/>
          <xsl:element name="div">
            <xsl:attribute name="id"><xsl:value-of select="idunique" /></xsl:attribute>
            <xsl:attribute name="class">open</xsl:attribute>
            <xsl:apply-templates select="key('cle',idunique)">
              <xsl:with-param name="marge" select="concat($marge,'-')"/><xsl:sort select="nom" order="ascending"/>
            </xsl:apply-templates>
          </xsl:element>
        </xsl:if>
        <xsl:if test="type='contenu'"><!-- ET LÀ -->
        <xsl:param name="marge" />
          <xsl:value-of select="concat($marge,'',nom)"/>
          <br/>
          <xsl:apply-templates select="key('cle',idunique)">
            <xsl:with-param name="marge" select="concat($marge,'-')"/><xsl:sort select="nom" order="ascending"/>
          </xsl:apply-templates>
        </xsl:if>
      </xsl:template>
    </xsl:stylesheet>
    Pour transformer ce code 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="menu.xsl" type="text/xsl"?>
    <plist>
      <item>
        <nom>master</nom>
        <type>menu</type>
        <idunique>1</idunique>
      </item>
      <item>
        <nom>Dossier2</nom>
        <type>dossier</type>
        <parent>1</parent>
        <idunique>2</idunique>
      </item>
      <item>
        <nom>Dossier1</nom>
        <type>dossier</type>
        <parent>1</parent>
        <idunique>3</idunique>
      </item>
      <item>
        <nom>DossierX</nom>
        <type>dossier</type>
        <parent>5</parent>
        <idunique>4</idunique>
      </item>
      <item>
        <nom>Dossier</nom>
        <type>dossier</type>
        <parent>2</parent>
        <idunique>5</idunique>
      </item>
      <item>
        <nom>DossierY</nom>
        <type>dossier</type>
        <parent>5</parent>
        <idunique>6</idunique>
      </item>
      <item>
        <nom>Element</nom>
        <type>contenu</type>
        <parent>3</parent>
        <idunique>7</idunique>
      </item>
      <item>
        <nom>ElementA</nom>
        <type>contenu</type>
        <parent>4</parent>
        <idunique>8</idunique>
      </item>
      <item>
        <nom>ElementB</nom>
        <type>contenu</type>
        <parent>4</parent>
        <idunique>9</idunique>
      </item>
      <item>
        <nom>Element1</nom>
        <type>contenu</type>
        <parent>6</parent>
        <idunique>10</idunique>
      </item>
      <item>
        <nom>Element1</nom>
        <type>contenu</type>
        <parent>1</parent>
        <idunique>11</idunique>
      </item>
      <item>
        <nom>Element3</nom>
        <type>contenu</type>
        <parent>1</parent>
        <idunique>12</idunique>
      </item>
      <item>
        <nom>Element2</nom>
        <type>contenu</type>
        <parent>1</parent>
        <idunique>13</idunique>
      </item>
      <item>
        <nom>Element2</nom>
        <type>contenu</type>
        <parent>6</parent>
        <idunique>14</idunique>
      </item>
      <item>
        <nom>Element</nom>
        <type>contenu</type>
        <parent>2</parent>
        <idunique>15</idunique>
      </item>
    </plist>
    Voici le code source généré qui semble tout à fait correct:

    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
    24
    25
    26
    <html>
    <head></head>
    <body>
    master
    <div id="1" class="open">-Dossier1
      <div id="3" class="open">--Element<br>
      </div>
      -Dossier2
      <div id="2" class="open">--Dossier
        <div id="5" class="open">---DossierX
          <div id="4" class="open">----ElementA<br>
            ----ElementB<br>
          </div>
          ---DossierY
          <div id="6" class="open">----Element1<br>
            ----Element2<br>
          </div>
        </div>
        --Element<br>
      </div>
      -Element1<br>
      -Element2<br>
      -Element3<br>
    </div>
    </body>
    </html>
    Savez-vous pourquoi?
    Malheureusement je ne dispose pas de windows, je n'ai que Mac OSX pour tester mon code.
    Par avance merci de votre aide.

  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
    bon je ne comprend pas ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="key('cle',idunique)">
    Où est ton template
    sinon le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name="marge" />
    est à mon avis mal placé

  3. #3
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Par défaut
    Merci de ton intérêt.
    Citation Envoyé par fraoustin Voir le message
    bon je ne comprend pas ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="key('cle',idunique)">
    Où est ton template
    ici: xsl:template match="item"...

    Je dois avouer que je suis débutant et que je n'aurais pu y arriver sans l'aide d'Erwy, le grand manitou XML de ce forum. Pour moi aussi c'est un peu obscur ce key. Je pense qu'il s'agit d'un moyen de traiter toutes les entrées sans répétition, une seule fois. Ce key génère un identifiant pour chaque item.
    As-tu lu ce post? Là il y a toutes les explications.

    sinon le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name="marge" />
    est à mon avis mal placé
    je vais essayer de le déplacer.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 33
    Par défaut Autres tests
    Bonjour.

    J'ai un programme ici, TestXSLT pour Mac OSX qui utilise les processeurs Sablotron, Libxslt, Saxon et Xalan-J pour tester ce que ça donnerait côté serveur. Et bien seul Libxslt fonctionne, les autres plantent. J'en déduis que Safari, Opera et Dreamweaver utilisent (sans doute) Libxslt et pas Firefox (ni Netscape, ni Camino), sous OSX.
    J'ai refait des tests, déplacer ce que tu dis, ça ne donne rien.
    Et en fait ce sont les 2 tests conditionnels xsl:if qui posent problème
    Je vais continuer d'autres tests, mais quel dommage, je suis si content du résultat sous Safari!

    Je vais demander à un ami de faire un test sous Windows avec IE & FF. Si ça marche avec IE, je laisse tomber FF

    Merci

    Si une âme charitable veut tester sous Windows j'ai attaché les 2 fichiers xml et xsl (+capture d'écran du résultat) compactés dans ce Zip (test.zip):
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Code qui marche sous Firefox mais pas sous Safari
    Par lorilan dans le forum jQuery
    Réponses: 0
    Dernier message: 21/01/2011, 21h27
  2. Réponses: 12
    Dernier message: 07/09/2010, 14h54
  3. Décalage sous Firefox & IE ; pas de décalage sous Google Chrome & Safari
    Par Fya34 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/02/2010, 16h45
  4. Script fonctionne sous firefox et safari mais pas sous IE !
    Par philodido dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2009, 11h21
  5. Réponses: 3
    Dernier message: 01/02/2008, 20h19

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