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][Access] Export Base de données vers XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut [XSLT][Access] Export Base de données vers XML
    Bonjour à tous

    je cherche le moyen de générer un fichier XML avec Access a partir d'une requete.
    Donc j'ai bien trouvé dans Access le menu "export ..." sélectionné le format XML et exporter ma requete, jusque la ca va !

    Mais le fichier XML que je génére n'a pas le format dont j'ai besion !

    Si j'ai bien compris le principe, il faut créer un fichier XSLT pour formater les données ?
    (Access permet de donner un fichier XSLT au moment de l'export)

    Voici la liste des champs de ma base :

    • Image
    • Delay
    • Link
    • Titre
    • Description
    • Commentaire


    Voici le format que je cherche a générer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0"?> 
    <content> 
      <item Image="image1.jpg" Delay="5000" Link="http://www.monsite.com/1" Titre="Mon tritre 1" description="Mon sous titre 1"> 
        <copy>Mon commentaire 1: Lorem ipsum dolor sit ...</copy> 
      </item> 
      <item Image="image2.jpg" Delay="5000" Link="http://www.monsite.com/2" Titre="Mon tritre 2" description="Mon sous titre 2"> 
        <copy>Mon commentaire 2 : Lorem ipsum dolor sit ...</copy> 
      </item> 
      <item Image="image3.jpg" Delay="5000" Link="http://www.monsite.com/3" Titre="Mon tritre 3" description="Mon sous titre 3"> 
        <copy>Mon commentaire 3 : Lorem ipsum dolor sit ...</copy> 
      </item> 
      ... 
    </content>
    Comment faire pour exporter mes données dans ce format ?

  2. #2
    Membre expérimenté
    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
    Points : 1 610
    Points
    1 610
    Par défaut
    Et t'aurais un extrait de ce que te renvoie access comme XML?

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Morbo Voir le message
    Et t'aurais un extrait de ce que te renvoie access comme XML?
    Voila ce donne ACCESS :

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2008-10-16T14:54:19">
        <ACC>
            <item_Image>image1.jpg</item_Image>
            <item_delay>5000</item_delay>
            <item_link>http://www.monsite.com/1</item_link>
            <item_titre>Mon tritre 1</item_titre>
            <item_Description>Mon sous titre 1</item_Description>
            <item_Commentaire>Mon commentaire 1 : Lorem ipsum dolor sit ...</item_Commentaire>
        </ACC>
        <ACC>
            <item_Image>image2.jpg</item_Image>
            <item_delay>5000</item_delay>
            <item_link>http://www.monsite.com/2</item_link>
            <item_titre>Mon tritre 2</item_titre>
            <item_Description>Mon sous titre 2</item_Description>
            <item_Commentaire>Mon commentaire 2 : Lorem ipsum dolor sit ...</item_Commentaire>
        </ACC>
        <ACC>
            <item_Image>image3.jpg</item_Image>
            <item_delay>5000</item_delay>
            <item_link>http://www.monsite.com/3</item_link>
            <item_titre>Mon tritre 3</item_titre>
            <item_Description>Mon sous titre 2</item_Description>
            <item_Commentaire>Mon commentaire 3 : Lorem ipsum dolor sit ...</item_Commentaire>
        </ACC>
        ...
    </dataroot>

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Un problème classique de translation éléments->attributs, enfantin à résoudre avec XSLT :
    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">
        <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
        <xsl:template match="dataroot">
            <content>
                <xsl:apply-templates select="ACC"/>
            </content>
        </xsl:template>
        <xsl:template match="ACC">
            <item>
                <xsl:apply-templates select="*"/>
            </item>
        </xsl:template>
        <xsl:template match="*">
            <xsl:attribute name="{substring-after(name(), '_')}">
                <xsl:value-of select="."/>
            </xsl:attribute>
        </xsl:template>
        <xsl:template match="item_Commentaire">
            <copy>
                <xsl:value-of select="."/>
            </copy>
        </xsl:template>
    </xsl:stylesheet>
    Un bémol cependant : heureusement que item_Commentaire est le dernier élément fils de chaque ACC, car pour un même élément il n'est pas possible d'exécuter un xsl:attribute après un xsl:element (ou toute autre instruction créant un contenu à l'élément).
    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

  5. #5
    Membre expérimenté
    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
    Points : 1 610
    Points
    1 610
    Par défaut
    Un truc comme ça devrait marcher :
    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" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="dataroot">
       <content>
       <xsl:apply-templates select="@* | * | comment() | processing-instruction() | text()"/>
       </content>
      </xsl:template>
     
      <xsl:template match="ACC">
        <item Image="{item_Image}" Delay="{item_delay}" Link="{item_link}" Titre="{item_titre}" description="{item_description}"> 
        <copy><xsl:value-of select="item_Commentaire"/></copy> 
        </item> 
      </xsl:template>
     
      <xsl:template match="/ |@* | * | comment() | processing-instruction() | text()">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | * | comment() | processing-instruction() | text()"/>
    		</xsl:copy>
    	</xsl:template>
     
    </xsl:stylesheet>

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Grand merci à vous deux pour votre aide.
    Super j'ai tester les deux méthodes et ça marche nickel.

    De plus, ce code m'a permis de comprendre les bases que je n'avais réussi à comprendre seul.

    Citation Envoyé par Morbo Voir le message
    Un truc comme ça devrait marcher :
    juste une différence sur les deux premiere ligne qui me donne comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-16"?>
    <content generated="2008-10-16T18:14:08">
    au lieux de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0"?>
    <content>
    ce que je n'ai pas avec le code de "GrandFather".

    Grand merci à vous deux pour votre aide.

  7. #7
    Membre expérimenté
    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
    Points : 1 610
    Points
    1 610
    Par défaut
    C'est à cause de l'élément souligné, enleve le si tu veux enveler la recopie des attribut de la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="dataroot">
       <content>
       <xsl:apply-templates select="@* | * | comment() | processing-instruction() | text()"/>
       </content>
      </xsl:template>
    Et l'utf-16 semble être l'encodage de sortie par défaut, tu peux le forcer comme dans le code de grandfather
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    Sinon le code de grandfather est plus générique et évolutif que le mien. Si de nouvelles balises apparaissent suivant les même règles de nommage la traduction en attribut se fera. Mon code est plus simple à comprendre... et à faire .

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci encore pour ces précisions.

    C'est vrai que d'avoir eu 2 solution pour une même problématique m'a permis de comprendre pas mal de choses sur le traitement XSLT.
    J'ai même adaptée ce code, car j'avais simplifier mon exemple donnés sur ce site.

    Je vous remercie encore une fois tous les deux.

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

Discussions similaires

  1. Exporter Base de données Access vers un fichier .sql
    Par johnpelu dans le forum Access
    Réponses: 2
    Dernier message: 16/04/2014, 14h46
  2. Exporter base de donnée vers Excel
    Par Florian54 dans le forum VB.NET
    Réponses: 9
    Dernier message: 13/01/2011, 03h22
  3. [AC-2007] exportation base de données vers Sql Server
    Par mouchkar dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 17/05/2010, 13h32
  4. Export de base de donnée vers un fichier .txt
    Par VSEB33 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/01/2008, 10h51
  5. Réponses: 9
    Dernier message: 06/07/2006, 18h41

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