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 :

[xslt][php] exclure une balise


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Invité
    Invité(e)
    Par défaut [xslt][php] exclure une balise
    Je suis en train de faire un petit site web, avec le contenu des pages en xml, et j'ai quelques problemes pour generer un rendu xhtml correct.

    mon parseur est très simple, le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function display_article( $xml, $xsl ) {
        $c = new XSLTProcessor();
        $c->importStyleSheet(DOMDocument::load($xsl));
        echo $c->transformToXML(DOMDocument::load($xml));
    }
    voici l'extrait de l'xslt qui ne veux pas marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:template match="chapter">
       <div class="chapter">
          <xsl:if test="title | @title">
             <h2><xsl:apply-templates select="title/text() | @title" /></h2>
          </xsl:if>
          <xsl:apply-templates />
       </div>
    </xsl:template>
    un bout d'xml pour l'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <chapter>
        <title>titre</title>
        <!-- plein de choses -->
    </chapter>
    je voudrait avoir au final ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <div class="chapter"><h2>titre</h2>
    <!-- plein de choses -->
    </div>
    mais je me retrouve avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div class="chapter"><h2>titre</h2>
    <title>titre</titre>
    <!-- plein de choses -->
    </div>
    j'ai essayé pas mal de choses, mais rien ne marche... voila, je veux juste que le titre ne s'affiche pas 2 fois... mais je ne sais pas comment m'y prendre.

    Merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    ma question est stupide, je l'ai mal formulée ?? il n'y a personne qui passe ici ?

    Je n'ai toujours pas trouvé de solution, je vais essayer de detailler cas par cas, mais je preferait une solution elegante...

  3. #3
    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
    <xsl:apply-templates />
    tu reparses a nouveau title ici
    pour que ta balise ne soit pas retraité par ce passage c'est pourtant assez simple
    cree le xpath correspondant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="node()[name()!="title"]|@*[name()!="title"]/>
    par exemple

    inspire toi aussi de http://www.developpez.net/forums/viewtopic.php?t=239000

    ps: utiliser un <xsl:apply-templates /> et des <xsl:for-each> en me eme temps quand on ne maitrise pas parfaitement xslt donne d'excellent resultat de plantage (template par defaut, reparsage .....). A eviter

  4. #4
    Invité
    Invité(e)
    Par défaut
    merci beaucoup, ca marche tout de suite vachement mieux... bon, je vais regarder du coté de xpath (en fait, je ne connaissait pas name() et node() )

Discussions similaires

  1. [XSLT] [PHP] executer une fonction PHP lors de la transformation
    Par Mo_Poly dans le forum XSL/XSLT/XPATH
    Réponses: 16
    Dernier message: 01/10/2009, 10h34
  2. [Tableaux] code php dans une balise <select>
    Par bigjeef dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2007, 00h58
  3. [XSLT] Détecter qu'une balise n'existe pas ou est vide
    Par Xunil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 26/12/2006, 18h59
  4. [XSLT] Comment inclure une balise xsl dans une balise html
    Par sylsau dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/10/2006, 09h33
  5. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59

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