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

XML/XSL et SOAP Discussion :

Inclure un XML dans un autre


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut Inclure un XML dans un autre
    Bonjour,

    J'aimerais savoir comment faire, avec une feuille XSLT, pour inclure un fichier XML dans un autre?

    Exemple :

    source1:

    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
     
    <?xml version="1.0"?>
    <xml>
      <table>
        <rec id="1">
          <numField>123</numField>
          <stringField>String Value</stringField>
        </rec>
        <rec id="2">
          <numField>346</numField>
          <stringField>Text Value</stringField>
        </rec>
        <rec id="3">
          <numField>-23</numField>
          <stringField>stringValue</stringField>
        </rec>
      </table>
      <bidon>
         <!-- inclure ici -->
      </bidon>
    </xml>
    et source2:

    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <books>
      <begin/>
      <book type='hardback'>
        <title>Atlas Shrugged</title>
        <author>Ayn Rand</author>
        <isbn id='1'>0525934189<br/></isbn>
      </book>
      Next Book
      <book type='paperback'>
        <title>A Burnt-Out Case</title>
        <author>Graham Greene</author>
        <isbn id="2">0140185399<br/></isbn>
      </book>
    </books>
    On veut recopier tout le source2 dans source1 à l'endroit de <bidon>

    C'est-à-dire, on veut obtenir cela :

    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
     
    <?xml version="1.0"?>
    <xml>
      <table>
        <rec id="1">
          <numField>123</numField>
          <stringField>String Value</stringField>
        </rec>
        <rec id="2">
          <numField>346</numField>
          <stringField>Text Value</stringField>
        </rec>
        <rec id="3">
          <numField>-23</numField>
          <stringField>stringValue</stringField>
        </rec>
      </table>
      <bidon>
         <!-- inclure ici -->
        <books>
          <begin/>
          <book type='hardback'>
            <title>Atlas Shrugged</title>
            <author>Ayn Rand</author>
            <isbn id='1'>0525934189<br/></isbn>
          </book>
          Next Book
          <book type='paperback'>
            <title>A Burnt-Out Case</title>
            <author>Graham Greene</author>
            <isbn id="2">0140185399<br/></isbn>
          </book>
        </books>
      </bidon>
    </xml>
    Je pense qu'il y a du <xsl:copy-of>, mais je n'y arrive pas !!!

    Merci.

  2. #2
    Membre Expert 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
    Par défaut
    Un peu de transformation identité et un appel à document() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="bidon" priority="1">
            <bidon>
                <xsl:copy-of select="document('bidon.xml')"/>
            </bidon>
        </xsl:template>
        <xsl:template match="@*|node()" priority="0">
          <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
          </xsl:copy>
        </xsl:template>
     </xsl:stylesheet>

  3. #3
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Merci beaucoup pour votre aide

  4. #4
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Afin que je comprenne bien comment cette feuille de style fonctionne.

    Est-il possible de me la décrire ?

    Merci.

  5. #5
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Oups!

    Pourquoi si j'ajoute cela au fichier source1, cela ne fonctionne plus

    A la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0"?>
    <xml>
      <table>
        <rec id="1">
          <numField>123</numField>
    ...
    j'ajoute un namespace comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0"?>
    <xml xmlns="urn:aaa:bbb:ccc:ddd.1.0">
      <table>
        <rec id="1">
          <numField>123</numField>
    ...
    Merci.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Parce toutes les éléments fils appartiennent alors également à cet espace de nom particulier et non plus l'espace de nom par défaut.
    Le xsl doit alors lui aussi référencer cet espace de nom pour désigner ces nouveaux éléments bien distincts des anciens.

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

Discussions similaires

  1. [XML] Integrer des données d'un fichier xml dans un autre ?
    Par vpet dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 16/03/2006, 18h41
  2. Inclure une page dans une autre page
    Par jo281 dans le forum ASP
    Réponses: 1
    Dernier message: 26/11/2005, 14h29
  3. Inclure code XML dans une page HTML ?
    Par kpatoulu dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 24/10/2005, 14h59
  4. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49
  5. referencier un xml dans un autre
    Par the_special dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 29/11/2003, 22h28

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