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

Windows Forms Discussion :

DataSet et Schéma XML


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut DataSet et Schéma XML
    salut,

    J'aimerais appliquer un schéma Xml à un DataSet.

    mySchema.xsd:
    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
     
    ...
    <xs:complexType name="level1">
        <xs:sequence>
          <xs:element name="level2" type="level2" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:complexType>
     
      <xs:complexType name="level2">
        <xs:sequence>
          <xs:element name="level3.1" type="level3.1" minOccurs="0" maxOccurs="1" />
          <xs:element name="level3.2" type="level3.2" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute name="type" type="xs:string" use="required" />
        <xs:attribute name="observationType" type="xs:string" use="required" />
        <xs:attribute name="dateFunctionType" type="xs:string" use="required" />
        </xs:sequence>
      </xs:complexType>
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.dataSet.ReadXmlSchema(@"C:\mySchema.xsd");
    Le problème est que mon schéma n'est pas pris en compte. Lorsque je compte je nombre de tables, le résultat = 0.
    Or si j'insère des données dans le DataSet via un XmlReader, (exactement selon les même règles que le schéma), et que je demande à voir à quoi ressemble le schéma auto-créé, ce dernier est décrit de facon procédurale (cad : description niveau par niveau, de facon un peu primaire).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.dataSet.ReadXml(xmlReader);
    this.dataSet.WriteXmlSchema("C:/generatedSchema.xsd");
    generatedSchema.xsd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xs:element name="level1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="level2">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="level3.1" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="3.1.1" minOccurs="0" maxOccurs="unbounded">
    ...
    Evidemment, si j'applique ce schéma auto-créé à) mon dataset, ca fonctionne bien (nombre de table ok). Mais je ne peut pas adopter ce type d'écriture de schéma.

    Est ce que quelqu'un saurait comment est ce que je peux appliquer mon schéma original, sans le reformater, à mon Dataset?

    merci
    un tiens vaut pas mieux que zéro tu l'auras pas

  2. #2
    Membre régulier Avatar de maVariable
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 105
    Points
    105
    Par défaut
    J'ai trouvé la solution, donc pour ceux que ca interesse :

    En fait l'objet DataSet comprend bien les deux types de schéma. La seule imposition est de commencer le schéma par un tag "element", et non "complexType".

    En clair, il est obligatoire de modifier un tout petit peu le schéma, et de transformer les premières lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xs:complexType name="level1">
        <xs:sequence>
          <xs:element name="level2" type="level2" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
      </xs:complexType>
    ...
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xs:element name="level1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
        <xs:complexType>
        <xs:sequence>
          <xs:element name="level2" type="level2" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
        </xs:complexType>
      </xs:element>
    ...
    voila
    un tiens vaut pas mieux que zéro tu l'auras pas

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/07/2010, 22h53
  2. Schéma XML et DataSet
    Par Nixar dans le forum Windows Mobile
    Réponses: 1
    Dernier message: 30/07/2009, 18h35
  3. Quel éditeur pour créer des schémas XML ?
    Par hlr dans le forum Valider
    Réponses: 1
    Dernier message: 27/03/2006, 17h30
  4. Réponses: 3
    Dernier message: 27/02/2006, 15h14

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