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 :

analyser une balise [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut analyser une balise
    Bonjour,

    Je souhaite récupérer une information, mais je ne sais pas comment faire.
    Voici le code XML.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         <text:p text:style-name="Standard">
            <draw:frame draw:name="Cadre3" draw:style-name="fr1" draw:z-index="6" svg:width="1.946cm" text:anchor-type="paragraph">
              <draw:text-box fo:min-height="1.873cm">
                <text:p text:style-name="P7">
                  <draw:frame draw:name="images5" draw:style-name="fr7" draw:z-index="7" svg:height="1.06cm" svg:width="1.06cm" svg:y="0cm" text:anchor-type="paragraph">
                    <draw:image xlink:actuate="onLoad" xlink:href="../Nono.jpg" xlink:show="embed" xlink:type="simple"/>
                    <svg:title>Nono.jpg</svg:title>
                  </draw:frame>centré
                </text:p>
              </draw:text-box>
            </draw:frame>
          </text:p>
    Je souhaite récupérer centré
    Mon code est XSLT est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          <xsl:if test="descendant::draw:text-box">
            <!-- Attention : Le titre et la description de l'image sont récupérés-->
                    <xsl:attribute name="legende"><xsl:value-of select="normalize-space(descendant::draw:text-box/text:p)"/></xsl:attribute>
                </xsl:if>
    Mais du coup, il récupère Nono.jpgcentré

    Merci

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    C'est effectivement un comportement XPath 1.0 que de retourner la valeur textuelle d'un noeud comme étant la concaténation de tous les noeuds texte descendants.

    Il faut donc sélectionner le premier noeud texte enfant qui soit non vide car, attention, la fonction normalize-space ne prendra que le premier noeud retourné par l'expression XPath en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    normalize-space(descendant::draw:text-box/text:p/text()[normalize-space(.)!=''])
    -Alain

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Je vous remercie pour cette aide .

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Je reviens vers vous car je suis tombé sur un cas où le code ci-dessous ne fonctionne pas correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <text:p text:style-name="Text_20_body">
            <draw:frame draw:name="Cadre1" draw:style-name="fr2"  draw:z-index="14" svg:width="5.292cm" text:anchor-type="paragraph">
              <draw:text-box fo:min-height="3.175cm">
                <text:p text:style-name="Illustration">
                  <draw:frame draw:name="images5" draw:style-name="fr5"  draw:z-index="15" style:rel-height="scale" style:rel-width="100%"  svg:height="3.175cm" svg:width="5.292cm" svg:x="0.004cm" svg:y="0.002cm"  text:anchor-type="paragraph">
                    <draw:image xlink:actuate="onLoad"  xlink:href="Pictures/10000000000000C800000078E2ABA751.png"  xlink:show="embed" xlink:type="simple"/>
                    <svg:title>kitfaq.jpg</svg:title>
                  </draw:frame>Illustration <text:sequence  style:num-format="1" text:formula="ooow:Illustration+1"  text:name="Illustration"  text:ref-name="refIllustration0">1</text:sequence>: ma  légende</text:p>
              </draw:text-box>
            </draw:frame>
          </text:p>
    au lieu de récupérer ma légende, j'obtiens Illustration

    Merci !

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Du moins, j'aurais dû obtenir : Illustration : ma légende

  6. #6
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    XPath est avant tout logique... Aussi, il faut savoir précisément ce que vous voulez : le premier texte ("Illustration "), le dernier (": ma légende"), la concaténation des textes de ce niveau ("Illustration : ma légende"), ... ??

    -Alain

  7. #7
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Une boucle xsl:for-each doit être appliquée sur tous ces noeuds texte.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Citation Envoyé par alain.couthures Voir le message
    XPath est avant tout logique... Aussi, il faut savoir précisément ce que vous voulez : le premier texte ("Illustration "), le dernier (": ma légende"), la concaténation des textes de ce niveau ("Illustration : ma légende"), ... ??

    -Alain
    Il me faut uniquement le texte de la balise text:P donc Illustration : ma légende.
    Je ne veux pas le contenu des autres balises.

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

Discussions similaires

  1. [XSL] insérer une balise <a name>
    Par guibong dans le forum XMLRAD
    Réponses: 2
    Dernier message: 01/08/2003, 15h04
  2. Position d'une balise dans un document externe
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/07/2003, 02h56
  3. [XSL]faire une balise dans une balise??? (ComboBox)
    Par rastoix dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/05/2003, 08h34
  4. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

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