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] Remplacer mes unites de tableaux "cm" par "*" [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut [XSLT] Remplacer mes unites de tableaux "cm" par "*"
    Bonjour à tous,
    est-il possible en xslt dire que dans mon fichier xml, si je rencontre un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <table>
    <tgroup cols="4">
    <colspec colname="col1" colwidth="3.40cm"/>
    <colspec colname="col2" colwidth="5.40cm"/>
    <colspec colname="col3" colwidth="3.40cm"/>
    <colspec colname="col4" colwidth="5.40cm"/>
    <tbody>
    ..
    de remplacer les unités Colwidth en cm par des *, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <table>
    <tgroup cols="4">
    <colspec colname="col1" colwidth="3.40*"/>
    <colspec colname="col2" colwidth="5.40*"/>
    <colspec colname="col3" colwidth="3.40*"/>
    <colspec colname="col4" colwidth="5.40*"/>
    <tbody>
    ..
    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    l'idée est de faire un xsl qui copier tout ton xml sauf quand tu fait ton select pour copier les atributs tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    traslate(@colwidth,'cm','*')

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    J'ai déjà un fichier XSL. Est ce que je dois faire un template match ou name pour mettre le code que tu m'as filé?
    Je l'utilise comment?

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    tu peux envoyer ton xml globale (oû se trouve tes table etc...)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Par exemple avec ce code où est ce que je dois mettre que je veux des * à la place de mes cm dans mes tableaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="*">
    		<xsl:element name="{name()}">
    		<xsl:for-each select="@*">
    		<xsl:attribute name="{name(.)}"><xsl:value-of select="."/></xsl:attribute>
    		</xsl:for-each>
    		<xsl:apply-templates/>
    		</xsl:element>
    	</xsl:template>

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    il faut utiliser les

    mais bon, avec ton code :

    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
     
    <xsl:template match="*">
    		<xsl:element name="{name()}">
    		<xsl:for-each select="@*">
    		<xsl:attribute name="{name(.)}">
                             <xsl:choose>
                                 <xsl:when test="name(.)='colwidth'">
                                    <xsl:value-of select="traslate(.,'cm','*')"/>
                                 </xsl:when>
                                 <xsl:otherwise test="name()='colwidth'">
                                      <xsl:value-of select="."/>
                                 </xsl:otherwise>
                             </xsl:choose>
                             </xsl:attribute>
    		</xsl:for-each>
    		<xsl:apply-templates/>
    		</xsl:element>
    	</xsl:template>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    J'ai testé ta proposition mais appremment ça fonctionne pas car ma transformation xml>xslt>xml ne fonctionne plus.
    Peut être que je n'ai pas précisé que mes documents xml contiennent d'autres types d'attributs que je veux recopier tel quel.
    ce que je veux c'est juste parmi tous mes attributs dans mes fichiers xml c'est
    remplacé:
    -dans mes attributs 'Colwidth' les cm par des *
    -dans mes attributs 'Num_repere' les , par des £

  8. #8
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    essaye avec (c'est une erreur de frappe):

    et quand tu dit "ne fonctionne plus", tu peux être plus precis?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Bonjour ,
    j'ai testé mais ça n'a pas marché. J'ai peut être oublié de préciser que mes fichier xml ont d'autres attribut que je veux afficher comme tels.
    J'ai besoin de gérer juste ces deux et le reste doit rester comme tels:
    -dans mes attributs de tableaux 'Colwidth' remplacer les cm par de *
    -dans mes attibuts de Num_repere 'Quantite' remplacer les , (exemple 5,9) par des £ (exemple 5£9)

    Merci d'avance

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    j'avais vu l'erreur et j'ai bien mis "translate" mais rien

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par valal
    et quand tu dit "ne fonctionne plus", tu peux être plus precis?
    en fait je veux dire que mon xslt est bien formé mais je n'ai pas de résultat dans ma transformation

  12. #12
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    est ce que tu avais un resultat avant de mettre mon code? (est ce que ce que ton resultat d'avant était correcte (juste sans le * et £)?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    oui, ça marche bien sans ton code.

  14. #14
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    remplace cette section

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		<xsl:attribute name="{name(.)}">
                             <xsl:choose>
                                 <xsl:when test="name(.)='colwidth'">
                                    <xsl:value-of select="traslate(.,'cm','*')"/>
                                 </xsl:when>
                                 <xsl:otherwise test="name()='colwidth'">
                                      <xsl:value-of select="."/>
                                 </xsl:otherwise>
                             </xsl:choose>
                             </xsl:attribute>
    par celle-ci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		<xsl:attribute name="{name(.)}">
                                    <xsl:value-of select="traslate(.,'cm','*')"/>
                             </xsl:attribute>
    et dit ce que ça fait

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par valal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		<xsl:attribute name="{name(.)}">
                                    <xsl:value-of select="translate(.,'cm','*')"/>
                             </xsl:attribute>
    et dit ce que ça fait
    Avec ce code ça marche bien (je l'avais testé), sauf que dans tous mes attributs qui contiennent un "c" il me les remplace par des '*'
    Exemple: <colspec colname="col1" colwidth="2.75cm"/> devient <colspec colname="*ol1" colwidth="2.75*"/>

    c'est chiant ce truc!!!

  16. #16
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    dans ce cas envoi la partie de ton xsl oû tu as integré mon bout de code (avec mon bout de code bien sur)

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Voilà ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	<xsl:template match="*">
    		<xsl:element name="{name()}">
    			<xsl:for-each select="@*">
    				<xsl:attribute name="{name(.)}"><xsl:value-of select="translate(.,'cm','*')"/></xsl:attribute>
    			</xsl:for-each>
     
    			<!--Descente dans les sous noeuds-->
    			<xsl:apply-templates/>
    		</xsl:element>
    	</xsl:template>
    Et pourtant quand j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="translate(.,',','£')"/>
    ça a marché nickel. C'est le cas des cm qui pose problème et après comment utiliser les 2 cas cm et * puis , et £

  18. #18
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    non je voulais dire le bout de code avec les if (celui qui était censé fonctionner)

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Voici mon code initial qui était à l'origine sur mon xslt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:template match="*">
    	<xsl:element name="{name()}">
    	<xsl:for-each select="@*">
    	<xsl:attribute name="{name(.)}"><xsl:value-of select="."/></xsl:attribute>
    	</xsl:for-each>
    	<xsl:apply-templates/>
    	</xsl:element>
    </xsl:template>
    Voilà le code que tu m'a filé à la suite du code initial:
    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
     
    <xsl:template match="*">
                <xsl:element name="{name()}">
    	<xsl:for-each select="@*">
    	<xsl:attribute name="{name(.)}">
                  <xsl:choose>
                              <xsl:when test="name(.)='colwidth'">
                                    <xsl:value-of select="traslate(.,'cm','*')"/>
                                 </xsl:when>
                                 <xsl:otherwise test="name()='colwidth'">
                                      <xsl:value-of select="."/>
                                 </xsl:otherwise>
                  </xsl:choose>
                  </xsl:attribute>
             </xsl:for-each>
             <xsl:apply-templates/>
         </xsl:element>
    </xsl:template>
    Mais celui n'a pas marché.
    Alors on a fait celui-ci qui fonctionne pour les , et £ et pas très bien pour les cm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:template match="*">
    	<xsl:element name="{name()}">
    	<xsl:for-each select="@*">
    	<xsl:attribute name="{name(.)}"><xsl:value-of select="translate(.,',','£')"/></xsl:attribute>
    	</xsl:for-each>
    	<xsl:apply-templates/>
    	</xsl:element>
    </xsl:template>
    Ai-je répondu à ta demande? désolé encore de te déranger

  20. #20
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    tu ne me derange pas. ce que je veux c'est juste être sur que ce que tu a testé était bon. celui qui m'interesse est celui-là

    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
    <xsl:template match="*">
                <xsl:element name="{name()}">
    	<xsl:for-each select="@*">
    	<xsl:attribute name="{name(.)}">
                  <xsl:choose>
                              <xsl:when test="name(.)='colwidth'">
                                    <xsl:value-of select="traslate(.,'cm','*')"/>
                                 </xsl:when>
                                 <xsl:otherwise test="name()='colwidth'">
                                      <xsl:value-of select="."/>
                                 </xsl:otherwise>
                  </xsl:choose>
                  </xsl:attribute>
             </xsl:for-each>
             <xsl:apply-templates/>
         </xsl:element>
    </xsl:template>
    mais je voix qu'il ya encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <xsl:value-of select="traslate(.,'cm','*')"/>
    donc c'est peut être pas celui qui tu as testé?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XSLT] remplacer le contenu d'un noeud
    Par casgr1 dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 29/06/2006, 09h50
  2. [XSLT] probleme pour faire des tableaux html
    Par Lockless dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 16/06/2006, 16h04
  3. [XSLT] remplacement de noeuds de manière récursive
    Par daniel_r dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/10/2005, 20h13
  4. [XSLT ]remplacement d un caractere par son code
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/09/2005, 16h26
  5. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30

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