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 :

[XML/XSL/XPATH]Requete XPATH pour transformation


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut [XML/XSL/XPATH]Requete XPATH pour transformation
    j'ai un fichier xsl contenant a divers endroit des tag comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <span class="xdTextBox" hideFocus="1" title="" tabIndex="-1" xd:binding="my:sysIdClient" xd:CtrlId="CTRL11" xd:xctname="PlainText" xd:disableEditing="yes" style="WIDTH: 100%; WHITE-SPACE: nowrap; WORD-WRAP: normal">
    <span class="xdTextBox" hideFocus="1" title="" tabIndex="0" xd:binding="my:sysEmailDest" xd:CtrlId="CTRL12" xd:xctname="PlainText" style="WIDTH: 100%">
    <span class="xdTextBox" hideFocus="1" title="" tabIndex="0" xd:binding="my:firstname" xd:CtrlId="CTRL2" xd:xctname="PlainText" style="WIDTH: 100%">
     
    ...
    A l'aide d'un fichier de transformation je souhaiterais supprimer 2 de ces balises ou xd:binding = sysIdClient et sysEmailDest (Ce sont les 2 tags qui ont cette attributxd:binding qui est toujours le meme quelque soit mon fichier xsl.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:template match="body">
            <xsl:apply-templates select="@*|node()" />
    </xsl:template>
     
    <!-- Delete sysIdClient field -->
    <xsl:template match="span[contains(@xd:binding, 'sysIdClient']">
    </xsl:template>
     
    <!-- Delete sysEmailDest field -->
    <xsl:template match="span[@xd:binding, 'sysEmailDest']">
    </xsl:template>
    Mais apparement ce n'est aps comme cela qu'il faut proceder.

    merci de m'eclairer.

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template match="/">
      <xsl:apply-templates/>
    </xsl:template>
     
    <xsl:template match="*">
      <xsl:copy><xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
      </xsl:copy>
    </xsl:template>
     
    <xsl:template match="*[@xd:binding = 'sysIdClient' or @xd:binding = 'sysEmailDest' ]">
    </xsl:template>
    <xsl:template match="text()"><xsl:copy/></xsl:template>
    à essayer

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    seul petit soucis (je me suis mal exprimé) mais l'attribut xd:binding peut changer.
    En fait il contient toujours sysidClient et sysEmailDest pour les tags qui m'interessent, mais le prefixe (my) peut lui changer.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    sinon toujours dans le meme ordre d'idée avec un fichier xml contenant ceci:

    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
    <tr style="MIN-HEIGHT: 24px">
                              <td style="BORDER-BOTTOM-STYLE: none">
                                <div>
                                  <font face="Verdana" size="2">IdClient:</font>
                                </div>
                              </td>
                              <td style="BORDER-BOTTOM-STYLE: none">
                                <div>
                                  <font face="Verdana" size="2">
                                    <span class="xdTextBox" hideFocus="1" title="" tabIndex="-1" xd:binding="my:sysIdClient" xd:CtrlId="CTRL11" xd:xctname="PlainText" xd:disableEditing="yes" style="WIDTH: 100%; WHITE-SPACE: nowrap; WORD-WRAP: normal">
                                      <xsl:value-of select="my:sysIdClient" />
                                    </span>
                                  </font>
                                </div>
                              </td>
                            </tr>
                            <tr style="MIN-HEIGHT: 24px">
                              <td style="BORDER-BOTTOM-STYLE: none">
                                <div>
                                  <font face="Verdana" size="2">EmailDest:</font>
                                </div>
                              </td>
                              <td style="BORDER-BOTTOM-STYLE: none">
                                <div>
                                  <font face="Verdana" size="2">
                                    <span class="xdTextBox" hideFocus="1" title="" tabIndex="0" xd:binding="my:sysEmailDest" xd:CtrlId="CTRL12" xd:xctname="PlainText" style="WIDTH: 100%">
                                      <xsl:value-of select="my:sysEmailDest" />
                                    </span>
                                  </font>
                                </div>
                              </td>
                            </tr>
    Dans ce cas la, je voudrais supprimer tous le contenu du <tr> contenant le <span> avec xd:binding="my:sysIdClient"

    voila ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:template match="//span[contains(@xd:binding,'sysIdClient']/ancestor::tr">
    </xsl:template>
    mais sans reussite: apparement la requete xpath n'est pas valide.

    Par contre si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:template match="//span[contains(@xd:binding,'sysIdClient']">
    </xsl:template>
    la j'ai bien le span de supprimer.

    Mais il faut que je supprime egalement tout ce qu'il y a dans le <tr> contenant ce <span>

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    essaye avec le test suivant

    <xsl:if test="@*[contains(name(),'binding') or contains(name(),'sysEmailDest'] "/>

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    j'ai tester sur http://www.zvon.org:9001/saxon/cgi-b...dressbook.html

    avec la requete suivante
    //tel[@type='home']/ancestor::address
    et ca passe bien.

    C'est bien une requete de ce genre dont j'ai besoin mais pas moyen de l'adapter a mon cas: il m'efface tout les <tr> j'ai l'impression.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2004
    Messages : 166
    Points : 123
    Points
    123
    Par défaut
    j'ai tester sur http://www.zvon.org:9001/saxon/cgi-b...dressbook.html

    avec la requete suivante
    //tel[@type='home']/ancestor::address
    et ca passe bien.

    C'est bien une requete de ce genre dont j'ai besoin mais pas moyen de l'adapter a mon cas: il m'efface tout les <tr> j'ai l'impression.

Discussions similaires

  1. Requete XPATH pour transformation XSLT
    Par solero07 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/12/2013, 23h59
  2. [Requete XPath XML]
    Par tatemilio2 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/09/2006, 08h36
  3. Requete XPath: neoud XML et string
    Par alexandre54 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2003, 13h02
  4. Cours en Français sur XML-XSL et XPath
    Par Community Management dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/04/2002, 15h46

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