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 :

Suppression de la balise fermante img


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut Suppression de la balise fermante img
    Bonjour,

    J'ai un comportement que je ne parviens pas à m'expliquer:
    Code xsl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template name="lien_modif">
       <td class="modifier">
          <a href="index.php?module=member&amp;action=mod&amp;id={user_id}">
             <img src="style/images/bt_mod.png" alt="Modifier" title="Modifier" />
          </a>
       </td>
    </xsl:template>
    Résultat HTML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <td class="modifier">
       <a href="index.php?module=member&amp;action=mod&amp;id=xxxx">
          <img src="style/images/bt_mod.png" alt="Modifier" title="Modifier">
       </a>
    </td>
    Bref, le proc me vire la fermeture de la balise img (idem avec <img></img>).
    J'ai volontairement simplifié l'exemple, mais j'ai l'impression de passer à côté d'une erreur simple.

    Si quelque chose vous saute aux yeux ...
    Un grand merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut
    C'est juste une idée comme ça :

    essais de rajouter ça en haut de ta feuille xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html" />

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Merci pour cette réponse rapide, mais j'ai déjà précisé ces paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:output 
      method="html"
      encoding="ISO-8859-15"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut
    Ok, alors comme ça, ça devrait marcher :

    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="style/images/bt_mod.png" alt="Modifier" title="Modifier" />
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:element name="img">
      <xsl:attribute name="src">style/images/bt_mod.png</xsl:attribute>
      <xsl:attribute name="alt">Modifier</xsl:attribute>
      <xsl:attribute name="title">Modifier</xsl:attribute>
    </xsl:element>

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    C'est l'inverse, en fait. En HTML <img> n'a pas besoin de balise fermante ou auto-fermante. (En réalité c'est même plus grave : il ne doit pas y en avoir. Cela n'est recommandé que pour certains formats qui ne sont pas du HTML mais essaient d'être aussi compatibles HTML que possible. Comme XHTML par exemple.)

    Donc si on précise que l'output est en HTML, le transformateur peut se passer d'en mettre. Je suppose qu'il fait comme il veut.

    Ce n'est pas un problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Citation Envoyé par thelvin Voir le message
    C'est l'inverse, en fait. En HTML <img> n'a pas besoin de balise fermante ou auto-fermante. (En réalité c'est même plus grave : il ne doit pas y en avoir. Cela n'est recommandé que pour certains formats qui ne sont pas du HTML mais essaient d'être aussi compatibles HTML que possible. Comme XHTML par exemple.)

    Donc si on précise que l'output est en HTML, le transformateur peut se passer d'en mettre. Je suppose qu'il fait comme il veut.

    Ce n'est pas un problème.
    J'avoue que c'est un peu du pinaillage de ma part.
    Mais voici la sortie du validator W3C:
    Line 215, Column 163: end tag for "img" omitted, but OMITTAG NO was specified
    …mg src="style/images/bt_mod.png" alt="Modifier" title="Modifier"></a></td>
    You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".
    Je précise que je prends de grandes libertés avec le standard strict (et même transitional), mais c'est vraiment pour comprendre pourquoi le XSLTProcessor ne gère pas ce problème. Je suis très peu familiarisé avec, mais aimerais ne pas être confronté avec des des bugs de sortie dans des cas plus complexes.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Pas de changement ^^
    J'avais déjà tenté cette voie.
    Je ne m'explique pas ce comportement.

    Voici à tout hasard un extrait de mon code php:
    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
    //Conversion en XML
    $oDatasXml = new XmlProcess('liste');  //Liste étant la racine
    $oDatasXml->creerNode($aDatas, "membre");  //On a ici les datas en XML
    $racine = simplexml_import_dom($oDatasXml); 
     
    //Moteur XSLT
    $xsl = new DOMDocument;
    $xsl->load(CHEMIN_V.'xsl/vue_liste_members.xsl');  //C'est le xsl plus haut
    $proc = new XSLTProcessor();
    $proc->importStyleSheet($xsl);
     
    //Transfo
    $result = $proc->transformToXML($oDatasXml)
     
    //Affichage
    echo $result;
    Si rien ne vous saute aux yeux, je vais commencer par tenter de reproduire ce bug de façon isolée, et si je ne m'en sors pas tout seul, je publierai la totalité du code.
    Ca m'ennuie de progresser à l'aveugle :/
    Encore un grand merci pour ces réponses.

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ah mais pas la peine d'insister, tu n'y arriveras pas. À moins qu'il y ait une option dans XSLTProcessor de php pour traiter comme ça les balises HTML <img>.

    Ce que tu peux faire, c'est par exemple mettre du <img src="..." /> en tant que texte avec un disable-output-escaping="yes"

    Ou alors, générer du XHTML à la place.
    Ou alors, générer du XHTML, puis le retraiter ensuite avec la bibliothèque XML, pour le réécrire sous forme de HTML 4.01. Faisable, mais long, et demande de solides connaissances.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [DOM] Génération de balises fermantes comme <img/>
    Par geforce dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/04/2010, 00h51
  2. [XML] [EXPAT] Balise fermante
    Par fmichael dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 17/07/2007, 23h19
  3. [js] suppression du contenu balise script
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/02/2007, 08h45
  4. Réponses: 4
    Dernier message: 16/07/2006, 14h00
  5. Réponses: 7
    Dernier message: 17/09/2005, 23h38

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