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

Services Web Discussion :

[C#] Générer classe à partir d'un schéma xsd


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut [C#] Générer classe à partir d'un schéma xsd
    Bonjour,

    a partir d'un fichier xsd je souhaiterais générer une classe c# (avec l'outil xsd.exe)

    Mais j'ai l'impression qu'il ne prend pas en compte les includes dans le fichier car au final j'ai pas mal de 'schema validation warning' et a la fin un :
    le type de données 'urn:iso:std:iso:ts:29002:-5:ed-1:techml-schema:identifier:IRDI-ype' est manquant.
    ma commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsd.exe /classes /l:CS c:\xml_schema\ontoml.xsd
    il y a t-il un parametre que je dois rajouter ou autres?

    merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par LyonM Voir le message
    il y a t-il un parametre que je dois rajouter ou autres? merci de votre aide
    Sauf erreur de ma part l'utilitaire xsd.exe traite un fichier à la fois.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut
    voici mon fichier xsd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xs:schema xmlns="urn:iso:std:iso:13584:-32:ed-1:tech:xml-schema:ontoml" xmlns:cat="urn:iso:std:iso:ts:29002:-10:ed-1:tech:xml-schema:catalogue" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:iso:std:iso:13584:-32:ed-1:tech:xml-schema:ontoml" elementFormDefault="unqualified" attributeFormDefault="unqualified">
    	<xs:include schemaLocation="header.xsd"/>
    	<xs:include schemaLocation="dictionary.xsd"/>
    	<xs:include schemaLocation="library.xsd"/>
    	<xs:element name="ontoml" type="ONTOML_Type"/>
    	<xs:complexType name="ONTOML_Type">
    		<xs:sequence>
    			<xs:element name="header" type="HEADER_Type"/>
    			<xs:element name="dictionary" type="DICTIONARY_Type" minOccurs="0"/>
    			<xs:element name="library" type="LIBRARY_Type" minOccurs="0"/>
    		</xs:sequence>
    	</xs:complexType>
    </xs:schema>
    mais j'ai d'autres fichier egalement, certaines faisant référence a d'autres fichier xsd se trouvant dans des dossiers, et quand j'utilise l'outil xsd.exe j'ai un type de données manquant (une reference d'un fichier ne fonctionne pas)

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai compris ton problème. Apparamment le xsd.exe ne sait traiter qu'un seul fichier xsd à la fois donc cela suppose qu'il lui faut que toutes les données soient nécessairement présentes dans un seul et unique fichier.

    Une solution que je vois est de passer par un fichier XSLT (que tu bidouilleras toi-même) qui prend tes différents fichiers xsd et qui fournit en sortie un seul et unique fichier xsd. Là encore je doute que le XSLT permette de prendre en entrée plusieurs fichiers. À vérifier.

  5. #5
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut
    ca doit etre dans un des fichier avec la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:import namespace="urn:iso:std:iso:ts:29002:-10:ed-1:tech:xml-schema:value" schemaLocation=".\ISO29002\value.xsd"/>
    il n'arrive surement pas a importer le fichier ou je sais pas.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut
    ah mince, il y aurait-t'il une api ou un autre moyen de générer des classes a partir de fichier xsd ? (autre solution que l'outils xsd)

  7. #7
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut
    ASTUCE : l’outil xsd.exe ne sait pas résoudre la balise schemaLocation des fichiers de validation lorsque vous voulez générer la classe correspondante. Pour pallier ce problème, vous devez récupérer chaque fichier correspondant à votre schemaLocation, indiquez dans votre fichier qu’ils sont en local et utilisez l’outil xsd.exe comme ceci : xsd.exe monschema.xsd schemalie.xsd autreschema.xsd /c.
    Source : le billet intitulé XML/XSD avec le framework .Net sur le blog spécialisé sur les technologies .Net de Ludovic Bonnet

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bref après une recherche j'ai trouvé qu'il est possible de faire ce que tu veux en allant ici.

  9. #9
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 36
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Bref après une recherche j'ai trouvé qu'il est possible de faire ce que tu veux en allant ici.
    Apres avoir été sur ton lien j'ai fait ceci

    fichier.xsd contenant:

    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
    <xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateClasses language='CS' namespace='http://www.w3.org/2011/XMLSchema'>
            <schema>ontoml.xsd</schema>
            <schema>a_posteriori.xsd</schema>
            <schema>class.xsd</schema>
    		<schema>constraint.xsd</schema>
            <schema>content.xsd</schema>
    		<schema>datatype.xsd</schema>
            <schema>dictionary.xsd</schema>
    		<schema>document.xsd</schema>
            <schema>external_file.xsd</schema>
    		<schema>header.xsd</schema>
            <schema>identifier.xsd</schema>
    		<schema>library.xsd</schema>
            <schema>property.xsd</schema>
    		<schema>supplier.xsd</schema>
            <schema>translation.xsd</schema>
    		<schema>type_system.xsd</schema>
            <schema>unit.xsd</schema>
    		<schema>basic.xsd</schema>
            <schema>.\ISO29002\basic.xsd</schema>
    		<schema>.\ISO29002\catalogue.xsd</schema>
            <schema>.\ISO29002\identifier.xsd</schema>
    		<schema>.\ISO29002\value.xsd</schema>
            <schema>.\mathml2\mathml2.xsd</schema>
    </generateClasses>
    </xsd>
    apres je fait la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsd.exe c:\xml_schema\fichier.xsd /classes /l:CS
    et ca me dit que
    l'element racine d'un schema xml W3C doit etre schema> et son espace de noms 'http://www.w3.org/2011/XMLSchema'

Discussions similaires

  1. [XSD] Générer BDD à partir d'un schéma XSD
    Par n00bi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/05/2012, 16h15
  2. Génération des objet java à partir d'un schéma XSD
    Par ghiwani80 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 20/04/2012, 23h23
  3. Réponses: 1
    Dernier message: 30/07/2011, 10h01
  4. [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
  5. Réponses: 1
    Dernier message: 17/01/2006, 07h42

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