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] Comment attribuer une valeur à un attribut?


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] Comment attribuer une valeur à un attribut?
    Bonjour à tous,
    je voudrais attribuer des valeurs à quelques unes de mes attributs d'images. En fait quand je reçois les fichiers xml, les images sont insérées mais les attributs non rensignées. Je voudrais que mes cadres ancrés prennent les proportions de mes images et pour ça je dois attribuer 0pt à ces 2 attributs: voffset et hoffset . Comment dois-je faire avec le code suivant:
    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
     
    <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="translate(.,'cm','*')"/>
                                 </xsl:when>
                                 <xsl:when test="name(.)='Quantite'">
                                    <xsl:value-of select="translate(.,',','£')"/>
                                 </xsl:when>
                                  <xsl:when test="name(.)='voffset'">
                                  ???????????
                                 </xsl:when>
                                 <xsl:when test="name(.)='hoffset'">
                                    ??????????
                                 </xsl:when>
                                 <xsl:otherwise>
                                      <xsl:value-of select="."/>
                                 </xsl:otherwise>
                  </xsl:choose>
                  </xsl:attribute>
             </xsl:for-each>
             <xsl:apply-templates/>
         </xsl:element>
    </xsl:template>
    NB: là où y a les ???

    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
    en faisant un truc comme ça?:

    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
    <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="translate(.,'cm','*')"/>
                                 </xsl:when>
                                 <xsl:when test="name(.)='Quantite'">
                                    <xsl:value-of select="translate(.,',','£')"/>
                                 </xsl:when>
                                  <xsl:when test="name(.)='voffset'">
                                 <xsl:value-of select="'0pt'"/>
                                 </xsl:when>
                                 <xsl:when test="name(.)='hoffset'">
                                <xsl:value-of select="'0pt'"/>
                                 </xsl:when>
                                 <xsl:otherwise>
                                      <xsl:value-of select="."/>
                                 </xsl:otherwise>
                  </xsl:choose>
                  </xsl:attribute>
             </xsl:for-each>
             <xsl:apply-templates/>
         </xsl:element>
    </xsl:template>
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  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
    Bonjour Valal,
    en fait j'ai testé ton code mais ça ne m'a pas créer les contenus d'attribut.et pourtant j'ai envie d'en ajouter. En plus d'attribuer 0pt à mes attributs voffset et hoffset, je voudrai
    -que quand un contenu d'attribut est NA de supprimer tout l'attribut,
    -de mettre mon Sommaire qui a le code d'appel actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:if test="..=/ ">
    <xsl:call-template name="Sommaire"/>
    </xsl:if>
    non pas en début du fichier mais après mon élément qui s'appelle <Page_perso> (ma page de couverture) Comment faire? En plus c'est hyper URGENT!!! Rappel du 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <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="translate(.,'cm','*')"/>
              </xsl:when>
                <xsl:when test="name(.)='Quantite'">
               <xsl:value-of select="translate(.,',','£')"/>
              </xsl:when>
                 <xsl:when test="name(.)='Quantite_ISO'">
               <xsl:value-of select="translate(.,',','£')"/>
                </xsl:when>
                 <xsl:when test="name(.)='Quantite_US'">
               <xsl:value-of select="translate(.,',','£')"/>
                 </xsl:when>
                 <xsl:when test="name(.)='voffset'">
                   <xsl:value-of select="'0pt'"/>
                    </xsl:when>
                  <xsl:when test="name(.)='hoffset'">
                   <xsl:value-of select="'0pt'"/>
                    </xsl:when>
                 <xsl:otherwise>
                   <xsl:value-of select="."/>
            </xsl:otherwise>
                  </xsl:choose>
                  </xsl:attribute>
             </xsl:for-each>
     <xsl:if test="..=/ ">
    <xsl:call-template name="Sommaire"/>
    </xsl:if>
        <xsl:apply-templates/>
         </xsl:element>
    </xsl:template>

  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
    si c'est urgent essaye alors d'expliquer un peu plus stp.

    ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    -que quand un contenu d'attribut est NA de supprimer tout l'attribut, 
    -de mettre mon Sommaire qui a le code d'appel actuel
    quel attribut? code appel?actuel?

    et ça aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    non pas en début du fichier mais après mon élément qui s'appelle <Page_perso> (ma page de couverture) Comment faire
    Page_perso?quel fichier?page de couverture?

    est ce que les '0pt' s'inserent ou pas?
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  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
    oh c bon t'inerve pas je m'explique alors:
    cas1:
    dans mes fichiers xml, j'ai des unités avec des attributs du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <dimension>
    <metre Quantite_ISO="2,44" Quantite_US_Foot="NA" Quantite_US_inch="NA"/>
    </dimension>
    , si l'attribut n'a pas de contenu, le rédacteur du fichier xml renseigne la valeur NA comme valeur de l'attribut, comme le montre l'exemple. Ce que je veux c'est quand le contenu est NA viré tout l'attribut^pour obtenir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <dimension>
    <metre Quantite_ISO="2,44"/>
    </dimension>
    Cas2:
    Celui qui a fait le xslt sur lequel je travaille, a fait un sommaire sur xslt et pour l'appeler dans le xml de sortie, il a déclarer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!-- Crée le sommaire si ce noeud est celui de plus haut niveau -->
    <xsl:if test="..=/ ">
    <xsl:call-template name="Sommaire"/>
    </xsl:if>
    alors moi je ne veux pas que le sommaire s'affiche sur le noeud le plus haut mais juste après une balise qui s'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Page_perso>...</Page_perso>
    qui contient des informations que je dois récupérer avant le sommaire.En gros le fichier actuel après transformation donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <Assemblage>
    <TDMPAGE>...</TDMPAGE>
    <Page_perso>...</Page_perso>
    <Chapitre>...</Chapitre>
    <Section>...</Section>
    Etc...
    </Assemblage>
    <
    Cas3:
    les 0pt ne se sont pas appliqués et je ne sais pas pourquoi
    Suis-je clair cette fois ci? Mes fichiers xml sont énormes c prquoi j'en mets pas

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/11/2013, 17h53
  2. Réponses: 3
    Dernier message: 21/09/2010, 08h19
  3. Réponses: 6
    Dernier message: 13/09/2010, 15h31
  4. Réponses: 15
    Dernier message: 05/01/2008, 19h47
  5. Réponses: 6
    Dernier message: 13/06/2007, 14h38

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