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 :

Créer un schéma xsd


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut Créer un schéma xsd
    Bonjour à tous,

    Je débute en XML, j'aurais donc besoin de votre aide.

    Je dois construire un schéma .xsd afin de l'importer dans Excel pour me permettre de faire le mappage nécessaire pour ensuite exporter les données au format XML.

    Cependant, j'ai un petit souci dans la construction de mon schéma.

    L'exemple que je donne n'est pas réel c'est juste pour vous exposer mon problème.

    J'aurai un fichier excel à 4 colonnes :
    - ID Entreprise
    - Nom Contact
    - Prénom Contact
    - Ville

    J'aurai donc plusieurs fois le même ID dans la colonne ID Entreprise pour répertorier tous les salariés de chaque entreprise.

    Voici mon schéma:
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    	<xs:element name="contact">
    		<xs:annotation>
    			<xs:documentation>Test</xs:documentation>
    		</xs:annotation>
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="Entreprise" maxOccurs="unbounded">
    					<xs:complexType>
    						<xs:sequence>
    							<xs:element name="Entreprise_ID" type="xs:integer" maxOccurs="unbounded"/>
    								<xs:element name="Entrees" maxOccurs="unbounded">
    									<xs:complexType>
    										<xs:sequence>
    											<xs:element name="Nom" type="xs:string"/>
    											<xs:element name="Prenom" type="xs:string"/>
    											<xs:element name="Ville" type="xs:string"/>
    										</xs:sequence>
    									</xs:complexType>
    								</xs:element>
    						</xs:sequence>
    					</xs:complexType>
    				</xs:element>	
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    J'importe donc ce schéma dans un classeur excel puis j'ajoute des données pour voir si cela fonctionne.

    Lorsque je veux sauvegarder mon fichier en .xml j'ai un message d'erreur me disant que ce n'est pas possible:
    "Impossible d'enregistrer ou d'exporter les données XML. Les mappages XML de ce classeur ne sont pas exportables."

    Le but étant que dans mon XML, pour chaque ID Entreprise, j'ai tous les salariés qui lui sont associés.

    Une idée?

    Merci d'avance à tous ceux qui pourront m'aider.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je ne sais pas trop: mais ce genre de problème me semble occuper un grand nombre de postes partout.

    Je dirais qu'il ne faut pas (trop) faire ce que xslt devrait capable de faire dans une application comme excel ? Faite un schéma plutôt simple refléter une table de colons et lignes... (type clé-valeur) sans hiérachiser les données. Après, on fait une transformation xslt pour résulter ce qu'on souhaîte en avoir. Ce n'est peut-être pas optimal ... En fin de compte, je ne sais pas.

  3. #3
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    Merci beaucoup pour ce retour.

    Je vais essayer et continuer à me renseigner sur le net.

    La seule chose ce que j'ai l'impression que sur excel on ne peut pas mapper quand il y a plusieurs racines.

    Or, pour mon projet, je dois respecter des règles qui me sont imposées par un site.

    J'ai son fichier .xsd, mais dès que je peux l'importer sur excel j'ai cet autre problème par rapport aux racines multiples...

    Si d'autres personnes passent par là et ont d'autres idées, je suis preneur.

    D'avance merci

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si on fait d'un seul schéma (d'un seul namespace ou sans namespace, sans xs:include, et ni xs:import par conséquent, évidemment), on ne peut que faire un schéma très plat refléter une table simple de excel, donc, type clé-valeur. Ce serait très loins d'être normalisée au point de vue de bd avec des entrées souvent lourdement répetitives. C'est ça ce que je veux dire aupravant.
    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
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:element name="contact">
            <xs:annotation>
                <xs:documentation>Test</xs:documentation>
            </xs:annotation>
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Entrees" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="Entreprise_ID" type="xs:integer"/>
                                <xs:element name="Nom" type="xs:string"/>
                                <xs:element name="Prenom" type="xs:string"/>
                                <xs:element name="Ville" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>	
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    Avec les données (transformées, via un xslt ou autre, préalablement) re-modelées le schéma, on peut importer et exporter, par conséquent, sans problème. Mais, ce n'est pas optimal, sans doute. Pourtant, xslt est toujours là pour faire son travail.

    Une autre direction, à mon sens, que vous pouvez regarder plus, c'est de dissecter le schéma en plusieurs en utilisant xs:include pour simuler normalisation à la bd. Je n'avais jamais fait ça, donc, je ne sais pas si c'est faisable. Mais, tout ça avec Excel ?! il me faut une forte motivation pour !

  5. #5
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    Encore une grand merci pour ce retour.

    C'est justement pour éviter la répétition du Entreprise_ID que je voulais faire ça. Pour encapsuler toutes les info dans un même Entreprise_ID.

    Le but final étant d'importer les données sur un site internet donc je ne connais les conséquences que cela peut avoir si je fais quelque chose de plat comme tu dis.
    Est-ce que je peux quand même importer les données sur le site?

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    J'ai grande réserve pour faire tout ça avec Excel - j'ai un penchant, sans doute. Si les données sont de taille importante, faites plutôt avec une bd propre, genre très diverse à choisir. Sinon, répetition s'est fait par code (xslt ou autre), jamais par main, alors, c'est la machine qui sue !

  7. #7
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    Entendu. Encore merci

    Penses-tu que c'est faisable via ACCESS?

  8. #8
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si nous n'avons que Ms Office disponible à nous, ou que nous connaissons l'Office très bien, nous pouvons tout à fait faire des choses très respectables, sans doute. Je n'ai rien contre l'Office. Il a un des plus grands modèles des objets parmi d'autres applications. Mais jadis l'Office n'est confortable que pour des travaux desktop; il peut se améliorer depuis, je n'ai pas la prétention de le connaitre bien.

    Ce qui pose problème pour Excel pour ce genre de problèmes (souvent les données sont importables mais elles ne sont plus exportables ou sauvegardées en xml) est qu'il dit partout il n'est plus exportable parce que la structure de rapport entre des données ne peut plus être respectée et blah blah. (Et c'est vrai il s'agit beaucoup de théories parce qu'on doit connaître assez à la fois sur xml et db relationnelle et Excel lui-même...) Jamais je ne rencontre une solution pratique et précise dans ses documentations. Donc, je ne peux que déduire que ses documentations ne respectent pas ses utilisateurs comme si ils ne seraient certainement pas qulifiés de comprendre ... C'est inacceptable pour un travailleur qui le dépend pour faire avancer des choses. Si vraiment qu'il n'y avait pas de solution jusqu'à ce jour en attendant le futur, ça poserait une restriction très sévère sur la fonctionalité de ce type et rendrait la fonctionalité announcée pratiquement inutile et cette fonctionalité existe depuis version 2003 et mainteant c'est l'an 2019 !

  9. #9
    Membre du Club
    Homme Profil pro
    Contrôle de Gestion
    Inscrit en
    Juin 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Contrôle de Gestion

    Informations forums :
    Inscription : Juin 2018
    Messages : 84
    Points : 50
    Points
    50
    Par défaut
    Je comprends. Merci encore pour ce retour.

    Pour quelqu'un qui connait bien ACCESS mais très très mal le xml, penses-tu que je puisse m'en sortir sans trop de difficulté?

    En fait, j'ai un schéma xsd qui m'est imposé par un fournisseur afin de mettre à jour des données sur son site internet.
    Cette mise à jour peut se faire manuellement ou par l'importation d'un xml.

    Au vue de la quantité de données, impossible d'envisager la solution manuelle.

    Du coup, penses-tu qu'avec mon schéma xsd, je vais pouvoir adapter access afin de sortir les données en XML ?

    Merci d'avance pour ton retour, et pour le temps consacré à m'aider

  10. #10
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Bonjour,

    Pour travailler avec du XML, MS Access est plus puissant que MS Excel. Sachez cependant que MS Access n'est pas un champion de l'XML.
    Le première difficulté que vous aurez avec MS Access, c'est que le fichier exporté commence toujours par un noeud Racine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated......
    qui ne correspond évidement jamais à ce que le site de votre client demande. Donc la première chose à faire sera de supprimer ce noeud racine avec son namespace particulier et de le remplacer par votre noeud racine avec le namespace exigé par l'application cliente.
    Le deuxième difficulté sera d'exporter un fichier XML avec des noeuds imbriqués dans d'autres noeuds. C'est possible avec MS Access mais pas évident. De toute façon, vous serez forcé de retravailler votre XML avec des transformations XSLT 1.0 (VBA ne supporte pas XSLT 2.0)
    La troisième difficulté sera de surmonter les bugs de Microsoft. L'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.TransformXML
    ne fonctionne pas correctement et ne respecte pas l'encodage. Dans un environnement international, c'est la poisse.
    Bonne chance.

Discussions similaires

  1. [c#] créer document xml à partir d'un schéma xsd
    Par Cédric B. dans le forum Services Web
    Réponses: 3
    Dernier message: 13/04/2011, 09h06
  2. Comment créer un schéma XSD ?
    Par will2taz dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/08/2007, 11h51
  3. [XSD] Comparer deux schémas XSD
    Par solenn29 dans le forum Valider
    Réponses: 4
    Dernier message: 06/02/2006, 09h31
  4. Réponses: 1
    Dernier message: 17/01/2006, 07h42
  5. Utilisation des schémas XSD
    Par sfavre dans le forum Valider
    Réponses: 6
    Dernier message: 28/06/2005, 17h02

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