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

VBA Access Discussion :

Export XML avec XSD imposé


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 55
    Par défaut Export XML avec XSD imposé
    Bonjour à tous,

    Je travaille avec Access 2007 ma base est composée de plusieurs tables liées.

    Pour la publication d’annonces immobilières, je dois exporter cette base au format XML ;

    J’ai 2 problèmes :

    1) Comment exporter sans que les liens entre les tables n’apparaissent dans le XML (il faut en tenir compte, mais les faire figurer,sauf pour la table principale (le nom pour ce champs est [référence_client] dans le table principale et [lien] dans les autres. J'ai essayé avec l'option "Ne pas exporter les liens....", mais ils s'y trouvent quand même.

    2) Je dois valider le XML obtenu avec un XSD qui m’est imposé. J’ai trouvé sur internet un lien :

    http://www.alexandre-borrot.fr/xml_schema.php

    me permettant de le faire, là pas de problème, mais lors de l’export depuis Access à la racine du XML se trouve :
    <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2014-11-16T08:58:09

    Ce qui donne lors de la validation :
    Le document n'a pas pu être parsé pour la où les raisons suivantes :
    Element 'dataroot': No matching global declaration available for the validation root.

    Je ne sais pas si j’ai été clair, quelqu’un peut-il venir à mon secours ?

    D’avance merci

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Je pense qu'avec la fonctionnalité d'export XML d'Access, le schéma xsd sera toujours celui d'Office.
    Par conséquent, il faut créer le fichier xml en Visual Basic.
    Voir Créer un fichier XML et plus particulièrement la partie "V-A-3. Avec la librairie Microsoft XML".

    La bibliothèque MSXML2 te permet même de valider la conformité d'un xml à un schéma xsd.
    Exemple de fonction:
    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
    Function fnValiderXml(sXml As String, sFichierXsd As String) As String
    Dim oXmlDoc As MSXML2.DOMDocument60
    Dim oXmlSchema As MSXML2.XMLSchemaCache60
     
    ' Schema(s)
    Set oXmlSchema = New MSXML2.XMLSchemaCache60
    oXmlSchema.Add "", sFichierXsd
     
    Set oXmlDoc = New MSXML2.DOMDocument60
    Set oXmlDoc.schemas = oXmlSchema
    oXmlDoc.async = False
     
    oXmlDoc.loadXML sXml
     
    fnValiderXml = ""
    If oXmlDoc.parseError.errorCode <> 0 Then
       fnValiderXml = oXmlDoc.parseError.reason
    End If
     
    Set oXmlDoc = Nothing
    Set oXmlSchema = Nothing
     
    End Function
    L'argument sXml est une chaîne de caractère contenant l'intégralité du xml à valider. Ce pourrait être le chemin complet vers un fichier xml, auquel cas il faudrait remplacer l'instruction oXmlDoc.loadXML sXml par oXmlDoc.load sXml.
    L'argument sFichierXsd est le chemin complet vers le fichier xsd.
    La fonction retourne une chaîne vide si le xml est conforme au schéma ou un message d'erreur s'il y a un problème.

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 55
    Par défaut
    Bonjour, merci de ta réponse,

    En fait, ce qui me pose problème ce n’est pas la création, car le XML (vierge) et le XSD me sont donnés.
    J’importe le XML dans Access 2007, crée des liens sur les tables indépendantes, et modifie le type variable de chaque champ pour respecter le XSD.
    Je ne suis pas un expert XML, ni VBA (doux euphémisme) et c’est plutôt au niveau de l’export que je souhaiterais « travailler ».
    J’ai cherché rapidement sur différents sites, mais mon niveau de compétence de me permet pas de voir rapidement ce qui serait pertinent pour moi.

    D’avance merci.

  4. #4
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    Est-ce que tu peux poster ton schéma xsd ?

    Je vais regarder si au lieu d'exporter avec du code VBA on ne pourrait plutôt épurer le xml créé par Access pour qu'il soit conforme à ton schéma xsd imposé.

    A+

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 55
    Par défaut
    Bonjour,
    Les choses depuis hier ont un peu changés.
    Je vais changer de prestataire concernant la diffusion de mes annonces.
    Cependant, il y a des fortes chances que le XML et le XSD resteront dans la même logique (peut être moins ou plus de variables, des noms différents...)
    En pièces jointes, il y a le XSD et le XML.
    Encore merci.
    Très bonne journée.Schema.xsd

    PS: Je n'ai pas pu envoyé le XML (Fichier invalide ???)

  6. #6
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    Le schéma est plus complexe que ce à quoi je m'attendais.
    La fonction d'exportation xml d'Access n'est pas assez sophistiquée pour arriver à quelque chose de conforme au schéma.
    Ceci en particulier du au fait que le schéma a plus de deux niveaux.

    Access sait faire deux niveaux:
    Table
    ....champ1
    ....champ2
    ....etc

    Le schéma demande au moins trois niveaux:
    Table
    ....champ1
    ....champ2
    .......sous-champ1 de champ2
    .......sous-champ2 de champ2
    ....etc

    J'arrive à obtenir un troisième niveau avec Access à la condition de créer plusieurs tables et des relations d'intégrité référentielles entre ces tables.
    Table
    ....champ1
    ....Table2
    ........champ1 de Table2
    ........champ2 de Table2
    ....etc
    Ça veut dire qu'il faut créer des tables en suivant le schéma xsd, prévoir du code VBA pour alimenter ces tables à partir de données de la base de données, faire l'export en xml, puis finalement manipuler en VBA le fichier xml produit pour le rendre 100% conforme au schéma.

    Vu que tu ne vas pas utiliser ce schéma, je ne vais pas pousser plus loin mes investigations.
    J'en conclu que ma deuxième idée n'est pas beaucoup plus simple que ma première idée qui consistait à créer le fichier xml entièrement en VBA.

    A+

Discussions similaires

  1. [XSD] Valider partiellement XML avec XSD
    Par =FdK= dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/12/2008, 14h51
  2. [JAXB] Problème parsing XML avec XSD validant
    Par vano dans le forum Persistance des données
    Réponses: 2
    Dernier message: 26/08/2008, 10h59
  3. [WD 12] MSXML - validation xml avec xsd externe
    Par nicol9 dans le forum WinDev
    Réponses: 1
    Dernier message: 29/07/2008, 16h08
  4. [SAX] validation d'un xml avec xsd
    Par salmamah dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/04/2008, 18h22
  5. Valider XML avec XSD
    Par neilbgr dans le forum Langage
    Réponses: 10
    Dernier message: 26/03/2008, 17h01

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