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 :

Decoupage fichier XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 42
    Points
    42
    Par défaut Decoupage fichier XML
    Bonjour,

    Je post ici car j'ai un problème pour "découper" un fichier xml. Suite à un autre post sur ce forum il m'a été conseillé d'utiliser "xsltproc" et cela fonctionne Je souhaiterais juste apporter une modification et je solicite donc votre aide.

    fichier.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Message xmlns="http://www.URL.com/sous/lien">    
      <Identification>        
        <TypeMessage>ORDERS</TypeMessage>        
        <Version>1.0</Version>
        <FonctionMessage/>    
      </Identification> 
      <Commande>  
      <CommandeDLR>        
        <TypeDocument>1</TypeDocument>
        </CommandeDLR>
      </Commande>
    </Message>
    fichier.xsl :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:ns="http://www.URL.com/sous/lien" exclude-result-prefixes="ns">
     
       <xsl:output omit-xml-declaration="yes" />
     
       <xsl:template match="/ns:Message">
          <xsl:apply-templates select="ns:Commande"/>
       </xsl:template>
     
       <xsl:template match="ns:*">
          <xsl:element name="{local-name()}">
             <xsl:apply-templates select="node() | @*"/>
          </xsl:element>
       </xsl:template>
     
       <xsl:template match="node() | @*">
          <xsl:copy>
             <xsl:apply-templates select="node() | @*"/>
          </xsl:copy>
       </xsl:template>
     
    </xsl:stylesheet>
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Commande>
      <CommandeDLR>
        <TypeDocument>1</TypeDocument>
        </CommandeDLR>
      </Commande>
    Ce que je souhaiterais c'est afficher la même chose mais sans la balise "Commande". Savez-vous svp ce qu'il faut modifier dans le fichier.xsl pour arriver à ce résultat?

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    Je viens de régler tout seul mon problème

    Il fallait ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="ns:Commande">
    		  <xsl:apply-templates select="ns:CommandeDLR" />
       </xsl:template>

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ouaip, même système que pour enlever la balise <Message>.

    Autre possibilité, un peu plus directe :

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       xmlns:ns="http://www.URL.com/sous/lien" exclude-result-prefixes="ns">
     
       <xsl:output omit-xml-declaration="yes" />
     
       <xsl:template match="/">
          <!-- Le match racine, sélectionne directement les éléments à aller chercher dans le document -->
          <xsl:apply-templates select="/ns:Message/ns:Commande/*"/>
       </xsl:template>
     
       <xsl:template match="*">
          <xsl:element name="{local-name()}">
             <xsl:apply-templates select="node() | @*"/>
          </xsl:element>
       </xsl:template>
     
       <!-- le précédent template s'occupe des éléments. Celui-ci n'a donc besoin de s'occuper que des attributs et des textes, qui n'ont pas d'enfant. On peut simplifier. --> 
       <xsl:template match="node() | @*">
          <xsl:copy/>
       </xsl:template>
     
    </xsl:stylesheet>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Decoupage fichier XML
    Par billout rm dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 31/07/2007, 10h22
  2. Recuperation du fichier xml
    Par Geulderack dans le forum XMLRAD
    Réponses: 10
    Dernier message: 28/02/2003, 11h06
  3. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 15h22
  4. [Kylix] Composant IBM pour fichiers XML
    Par Mister Nono dans le forum EDI
    Réponses: 1
    Dernier message: 29/09/2002, 20h28
  5. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29

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