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] test sur Tagname pour modification


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut [XSLT] test sur Tagname pour modification
    Bonsoir à tous,
    J'aimerais faire la transformation suivante :

    Un fichier XML contenant dans un bloc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <DAYS>
    <item>
    <NUMBER>Day1</NUMBER>
    <VALUE>1.000</VALUE>
    </item>
    ...
    <item>
    <NUMBER>Day31</NUMBER>
    <VALUE>0.000</VALUE>
    </item>
    </DAYS>
    vers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <Day1>1.000</Day1>
    ...
    <Day31>0.000</Day31>
    Cependant, je pêche par ma méconnaissance de XSLT et XPATH.

    Voici le code qui ne fonctionne pas vraiment :

    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
    37
    38
    39
     
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
     
      <xsl:strip-space elements="*"/>
     
      <xsl:template match="*">
        <xsl:apply-templates mode="copy" select="self::*"/>
      </xsl:template>
     
      <xsl:template match="item" priority="1">
        <xsl:element name="{NUMBER}">
          <xsl:value-of select="VALUE"/>
        </xsl:element>
        <xsl:apply-templates/>
      </xsl:template>
     
      <xsl:template match="DAYS" priority="0">
        <xsl:apply-templates/>
      </xsl:template>
     
      <xsl:template match="NUMBER" priority="0">
        <xsl:apply-templates/>
      </xsl:template>
     
      <xsl:template match="VALUE" priority="0">
        <xsl:apply-templates/>
      </xsl:template>
     
      <xsl:template match="*" mode="copy">
        <xsl:copy>
          <xsl:apply-templates/>
        </xsl:copy>
      </xsl:template>
     
      <xsl:template match="text()">
        <xsl:value-of select="."/>
      </xsl:template>
     
    </xsl:transform>
    Vous remerciant pour votre aide,
    L.
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  2. #2
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Bonjour,
    La nuit porte conseil (j'ai nettoyé mes balises NUMBER et VALUE) et voici le code qui fonctionne mais que j'aimerais rendre plus propre :

    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
    37
     
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
     
      <xsl:strip-space elements="*"/>
     
      <xsl:template match="*">
        <xsl:apply-templates mode="copy" select="self::*"/>
      </xsl:template>
     
      <xsl:template match="item" priority="1">
        <xsl:element name="{NUMBER}">
          <xsl:value-of select="VALUE"/>
        </xsl:element>
        <xsl:apply-templates/>
      </xsl:template>
     
      <xsl:template match="DAYS" priority="0">
        <xsl:apply-templates/>
      </xsl:template>
     
      <xsl:template match="NUMBER" priority="0">
      </xsl:template>
     
      <xsl:template match="VALUE" priority="0">
      </xsl:template>
     
      <xsl:template match="*" mode="copy">
        <xsl:copy>
          <xsl:apply-templates/>
        </xsl:copy>
      </xsl:template>
     
      <xsl:template match="text()">
        <xsl:value-of select="."/>
      </xsl:template>
     
    </xsl:transform>
    L.
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

  3. #3
    Membre éprouvé 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
    Points : 1 247
    Points
    1 247
    Par défaut
    Il est effectivement possible de simplifier si l'objet est bien d'obtenir une structure limitée à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <DAYS>
      <Day1>1.000</Day1>
      ...
      <Day31>0.000</Day31>
    </DAYS>
    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:template match="*">
      <xsl:copy>
        <xsl:for-each select="item">
          <xsl:element name="{NUMBER}">
            <xsl:value-of select="VALUE"/>
          </xsl:element>
        </xsl:for-each>
      </xsl:copy>
    </xsl:template>
    Je ne suis pas pour l'utilisation systématique des templates dès lors la structure est régulière...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  4. #4
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Merci Alain,
    c'était bien un code dans ce style que je recherchais.
    Le problème est résolu et XSLT mieux assimilé.
    L.
    Fondateur Alien6 : Prescriptive Analytics & Machine Learning Software

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

Discussions similaires

  1. Swap d'images sur onclick pour modification de langue
    Par qwertz1 dans le forum Général JavaScript
    Réponses: 40
    Dernier message: 03/03/2011, 16h48
  2. Swap d'images sur onclick pour modification de langue
    Par qwertz1 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 19/02/2011, 11h10
  3. [XSLT] Test sur plusieurs valeur
    Par mamax29 dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 03/12/2010, 17h35
  4. [XSLT] test sur le commencement des valeurs des attributs
    Par mimiche_fr2000 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/02/2008, 13h03
  5. xslt --> test sur les chiffres
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/09/2005, 13h17

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