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 :

[XSL]Copie de document


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut [XSL]Copie de document
    Bonjour tout le monde,

    J'ai un petit souci pour copier un document dans un autre.
    J'ai plusieurs rapports de projets générés dynamiquement en XML et il faut que j'en fasse des résumés (un pour chaque).

    Voici la structure d'un rapport :
    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
    <coverage>
     <packages>
      <package name="entreprise.nomApplication1">
       <classes>
        <classe name="entreprise.nomApplication.nomClasse1">
        </classes>
        <classe name="entreprise.nomApplication1.nomClasse2">
        </classes>
        <classe name="entreprise.nomApplication1.nomClasse3">
        </classes>
       </classes>
      </package>
      <package name="entreprise.nomApplication2">
       <classes>
        <classe name="entreprise.nomApplication2.nomClasse1">
        </classes>
        <classe name="entreprise.nomApplication2.nomClasse2">
        </classes>
       </classes>
      </package>
     </packages>
    </coverage>
    Le problème c'est qu'il faut que je copie ou non en fonction du nom de l'application. Je sais si l'expression de recherche est correcte, mais voila les packages qu'il faut que je copie :
    [@name='*.${application}.*.(manager.impl|facade.impl|service.impl)']

    J'ai chercher sur le net pour faire des copie de noeud. En test je voulais juste copier le fichier tout en entier, mais cela ne fonctionnait pas. Je copiais juste l'indentation du fichier!!

    Merci d'avance
    Julien @+

  2. #2
    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 faudrait poster un exemple du XML source, le XSL qui pose problème et le XML résultat souhaité.

    En tout cas, XPath 1.0 ne permet pas de traiter des expressions régulières (XPath 2.0 en est capable...) ou des wildcards...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    En faite, le code du xsl servait juste dans un premier temps a copier tout le fichier xml dans un autre, mais sans résultat.

    Sinon, je suis en alternance, et je retournerais lundi prochain en entreprise.
    Je te donnerais ce qu'il faut la semaine prochaine

    Merci @+

  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    si tu veux juste une tranformation xslt pour copier un document xml voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor    m">
    <xsl:output 
             encoding="ISO-8859-15"
             method="xml"
             indent="yes" />
     
         <xsl:template match="node() | @*">
             <xsl:copy>
                 <xsl:apply-templates select="@* | node()"/>
             </xsl:copy>
         </xsl:template>
    </xsl:stylesheet>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    me revoila en entreprise

    Excusez moi, je n'ai pas été très clair dans mes explications. Je recommence donc^^

    Voilà:
    Il faudrait que je copie partiellement le fichier XML (dans un autre fichier) dont j'ai mis la structure sur mon premier post.
    Pour l'instant, je passe par un fichier XSL, mais si on peut le faire directement avec ANT pourquoi pas!
    La condition de copie serait sur le nom du package :
    - name='*.${application}.*.service.impl'
    - name='*.${application}.*.facade.impl'
    - name='*.${application}.*.manager.impl'

    La variable ${application} est passée en paramètre depuis le fichier XML.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    EDIT : Arf, j'ai voulu corriger une faute, et j'ai cliqué sur citer au lieu d'éditer !!

  7. #7
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    il nous faudrait un xml de départ et un xml que tu veux obtenir sinon cela va être compliquée pour te répondre

  8. #8
    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
    - name='*.${application}.*.service.impl'
    - name='*.${application}.*.facade.impl'
    - name='*.${application}.*.manager.impl'
    En dehors des expressions régulières non supportées par XPath 1.0, seul l'usage des fonctions contains(), starts-with(), substring-before(), substring-after() peut permettre de réaliser de tels filtres.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    Voila les exemples...

    XML de départ :
    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
    <coverage>
     <packages>
      <package name="fr.cpage.ref.admin.business.entity">
       <classes>
        <classe name="fr.cpage.ref.admin.business.entity.Calendrier">
         [...]
        </classe>
       </classes>
      </package>
      <package name="fr.cpage.ref.admin.business.entity.impl">
       <classes>
        <classe name="fr.cpage.ref.admin.business.entity.impl.CalendrierEntity">
         [...]
        </classes>
       </classe>
      </package>
      <package name="fr.cpage.ref.admin.business.manager.impl">
       <classes>
        <classe name="fr.cpage.ref.admin.business.manager.impl.CalendrierManagerBean">
         [...]
        </classe>
       </classes>
      </package>
     </packages>
    </coverage>
    XML d'arrivé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <package name="fr.cpage.ref.admin.business.manager.impl">
     <classes>
      <classe name="fr.cpage.ref.admin.business.manager.impl.CalendrierManagerBean">
        [...]
      </classe>
     </classes>
    </package>
    Tous les packages commence par 'fr.cpage'
    Le nom de l'application est par exemple 'ref.admin.business' (nom passé en paramètre : ${application})
    Puis il y a un qualificatif : 'manager.impl'

    Voila

  10. #10
    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
    D'où vient la syntaxe "${application}" que vous utilisez ? En XSLT, on note "$application"...?!?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par alain.couthures Voir le message
    D'où vient la syntaxe "${application}" que vous utilisez ? En XSLT, on note "$application"...?!?
    désolé, c'est une erreur de ma part, je croyais que c'était pareil qu'avec ANT

  12. #12
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    une autre question un xml de départ peux donner n xml d'arrivée?
    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:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor    m">
    <xsl:output 
             encoding="ISO-8859-15"
             method="xml"
             indent="yes" />
     
         <xsl:template match="/">
                 <xsl:apply-templates select="//package[@name='fr.cpage.ref.admin.business.manager.impl']"/>
         </xsl:template>
     
         <xsl:template match="node() | @*">
             <xsl:copy>
                 <xsl:apply-templates select="@* | node()"/>
             </xsl:copy>
         </xsl:template>
    </xsl:stylesheet>

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par fraoustin Voir le message
    une autre question un xml de départ peux donner n xml d'arrivée?
    Non, un XML de départ donne un XML d'arrivé
    Par contre, comme il y a trois conditions, je vais copier 3 fois ton script dans le XSL


    Merci, je teste ca dès la semaine prochaine...

    Enjoy @+

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 84
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par fraoustin Voir le message
    une autre question un xml de départ peux donner n xml d'arrivée?
    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:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transfor    m">
    <xsl:output 
             encoding="ISO-8859-15"
             method="xml"
             indent="yes" />
     
         <xsl:template match="/">
                 <xsl:apply-templates select="//package[@name='fr.cpage.ref.admin.business.manager.impl']"/>
         </xsl:template>
     
         <xsl:template match="node() | @*">
             <xsl:copy>
                 <xsl:apply-templates select="@* | node()"/>
             </xsl:copy>
         </xsl:template>
    </xsl:stylesheet>
    Merci ton code fonctionne bien!!


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

Discussions similaires

  1. [XSL] copy-of select avec un "|" possible?
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 23/11/2005, 09h51
  2. [XSL] Erreur : Ce document a déjà un noeud DocumentElement
    Par luimême dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/11/2005, 18h22
  3. [XSL-FO] fonction document()
    Par bob33 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/05/2005, 10h07
  4. [XSL] Transformation de document xml
    Par youbyoub dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/04/2005, 16h13
  5. [XSL]Copie du contenu d'un fichier en XSL
    Par fidififouille dans le forum XSL/XSLT/XPATH
    Réponses: 17
    Dernier message: 16/06/2004, 12h35

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