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] transformation des elements d'un tableau en d'autres elements


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut [XSLT] transformation des elements d'un tableau en d'autres elements
    Bonjour,

    je suis en train de modifier un code xsl qui n'est pas le mien, pour les besoin d'une lib, et je desirerai avoir le moins de changement pour le probleme qui suit (en particulier, pas de changement de design).

    Le programme cree a partir d'un fichier de description en xml des fichies en C. Il stocke dans le fichier xsl les types utilises dans le programme, de cette maniere :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      <xsl:variable name="core-types-rtf">
        <type name="BOOL" />
        <type name="BYTE" />
        <type name="CARD8" />
        <type name="CARD16" />
        <type name="CARD32" />
        <type name="INT8" />
        <type name="INT16" />
        <type name="INT32" />
      </xsl:variable>
      <xsl:variable name="core-types" select="e:node-set($core-types-rtf)" />
    Ensuite, les types sont utilises ainsi :
    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
     
      <xsl:template name="canonical-type-name">
        <xsl:param name="type" select="string(@type)" />
     
        <xsl:variable name="is-unqualified" select="not(contains($type, ':'))"/>
        <xsl:variable name="namespace" select="substring-before($type, ':')" />
        <xsl:variable name="unqualified-type">
          <xsl:choose>
            <xsl:when test="$is-unqualified">
              <xsl:value-of select="$type" />
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="substring-after($type, ':')" />
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
     
        <xsl:choose>
          <xsl:when test="$is-unqualified and $core-types/type[@name=$type]">
            <xsl:value-of select="$type" />
          </xsl:when>
    etc...
    le type est donc stocke a l'avant-derniere ligne
    Ce que j'aimerais faire est non pas utiliser $type, mais d'autres noms (qui sont en fait les types definies par la norme C99). J'ai essaye de mettre un champ newname ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <type name="BOOL" newname="bool8_t" />
    etc...
    mais je n'ai pas reussi a l'utiliser correctement.

    Quelqu'un aurait-il une idee, soit comment utiliser ce champ newname, soit une autre methode pour echanger les types ci-dessus par les autres types ?

    merci

    Vincent Torri

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonsoir,

    pourquoi pas cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:when test="$is-unqualified and $core-types/type[@name=$type]">
      <xsl:value-of select="$core-types/type[@name=$type]/@newname" />
    </xsl:when>
    C'est dommage que tu exclus d'emblée le changement de design, parce ce que je crois qu'il pourrait y avoir quelques optimisations possibles...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    pour etre plus precis, c'est une lib qui est cense remplacer Xlib dans Xorg, et la deadline de la release est dans bientot.

    Je ne suis pas l'auteur du fichier de style, et bien que j'ai deja touche a xml et xsl, je ne suis pas tres doue et je fais ce que je peux

    Mon but est d'aboutir a ce que je veux dans un minimum de temps. Changer de design reviendrait a enormement de changement, et je ne peux pas me le permettre. De plus, l'auteur de la feuille de style doit bosser et ne peut pas se permettre de toucher au code (et donc, c 'est bibi qui s'y colle...). Une fois qu'il sera de retour, il changera comme il voudra mes modif.

    En tout cas, merci pour la solution, ca fait exactement ce que je veux.

    Au passage, je vais avoir d'autres questions, plus tard

    Vincent Torri

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

Discussions similaires

  1. Copier des valeurs d'un tableau dans un autre
    Par Ash50 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2014, 10h03
  2. [XL-2010] Extraire des noms d'un tableau vers un autre tableau
    Par RobertThi dans le forum Excel
    Réponses: 5
    Dernier message: 24/02/2014, 14h48
  3. Réponses: 1
    Dernier message: 23/03/2013, 08h51
  4. xslt : transformation des caractères encodés
    Par snopims dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 06/05/2009, 13h15
  5. Réponses: 6
    Dernier message: 27/05/2008, 10h03

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