none
afficher de maniere pertinente le contenu d'un fichier xsd RRS feed

  • Question

  • re :)

    de retour avec mes problemes xml & xsd

    je sais maintenant lire le contenu d'un champs xml d'une table sql server 2005 en dissociant le nom des noeuds de leurs valeurs.

    ''les caracteristiques
    Select Case (xmlRdr.NodeType)
    Case System.Xml.XmlNodeType.DocumentType
    ''zone = xmlRdr.Name + " " + xmlRdr.Depth.ToString + " : "
    zone = xmlRdr.Name + " : "
    zone.Replace("-", " ")

    Case System.Xml.XmlNodeType.Text
    ''bldr.Append((zone + xmlRdr.Value + "<br />"))
    myAL.Add(zone + xmlRdr.Value)
    End Select

    je n'arrive pas a faire la meme chose des que j'attaque un flux xsd !
    précision mon schema n'est pas un fichier xsd mais un champs que je recupere sur sql server
    via cette requette

    SELECT XML_SCHEMA_NAMESPACE(sch.name, xsd.name)
    FROM sys.xml_schema_collections AS xsd
    JOIN sys.schemas AS sch ON xsd.schema_id = sch.schema_id
    WHERE xsd.name = 'SchemaXML_4x4'

    je tente avec cette methode

    Dim cmdSql As String
    cmdSql = "SELECT XML_SCHEMA_NAMESPACE(sch.name, xsd.name) FROM sys.xml_schema_collections AS xsd "
    cmdSql = cmdSql + "JOIN sys.schemas AS sch ON xsd.schema_id = sch.schema_id WHERE xsd.name = '"
    cmdSql = cmdSql + Session("dropSelect") + "'"

    Dim xml As SqlXml
    Dim xmlRdr As System.Xml.XmlReader

    Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("cs_vehicule").ConnectionString)
    conn.Open()

    Dim cmd As SqlCommand = New SqlCommand(cmdSql, conn)
    Dim rdr As SqlDataReader = cmd.ExecuteReader
    While rdr.Read

     xml = rdr.GetSqlXml(0)  ' (xx) = le numero du champs xml a traiter (dans cette base c'est le 1er en partant de 0)

     xmlRdr = xml.CreateReader
     While xmlRdr.Read

      Dim schema As XmlSchema

      schema = XmlSchema.Read(xmlRdr, Nothing)
      LblSchema.Text = schema.Id

      Dim schemaObject As XmlSchemaObject
      For Each schemaObject In schema.Items
       If schemaObject.GetType() Is GetType(XmlSchemaElement) Then
        Dim ElementType As XmlSchemaElement = CType(schemaObject, XmlSchemaElement)
        LblSchema.Text = LblSchema.Text + ElementType.Name.ToString + "<br/>"

        Dim schemaSequence As XmlSchemaSequence
        For Each schemaSequence In schema.Elements
         Dim SequenceType As XmlSchemaSequence = CType(schemaObject, XmlSchemaSequence)
         LblSchema.Text = LblSchema.Text + SequenceType.Items.ToString(+"<br/>")
        Next


       End If
       
       'voir si ceci affiche autre chose !
       LblSchema.Text = LblSchema.Text + schemaObject.ToString + "<br/>"

       'ceci ne fait rien du tout !
       'If schemaObject.GetType() Is GetType(XmlSchemaSequence) Then
       '    Dim SequenceType As XmlSchemaSequence = CType(schemaObject, XmlSchemaSequence)
       '    LblSchema.Text = LblSchema.Text + SequenceType.Items.ToString(+"<br/>")
       'End If

       'If schemaObject.GetType() Is GetType(XmlSchemaSimpleType) Then
       '    Dim simpleType As XmlSchemaSimpleType = CType(schemaObject, XmlSchemaSimpleType)
       '    LblSchema.Text = LblSchema.Text + simpleType.Name.ToString + " " + simpleType.Datatype.ValueType.ToString()

       'End If
       'If schemaObject.GetType() Is GetType(XmlSchemaComplexType) Then
       '    Dim complexType As XmlSchemaComplexType = CType(schemaObject, XmlSchemaComplexType)
       '    LblSchema.Text = LblSchema.Text + complexType.Name + " " + complexType.Datatype.ValueType.ToString()
       '    LblSchema.Text = LblSchema.Text + complexType.BaseXmlSchemaType.ToString() + "<br/>"
       'End If
      Next schemaObject
     End While
     xmlRdr.Close()

    End While
    rdr.Close()
    conn.Close()

    mais je n'affiche rien' d'autre que...
    COMMENTAIRES
    CONSOMMATION
    OPTIONS
    PERSONNALISATION
    items

    mais pas le contenu à l'interieur de ces zones



    Mon xsd est peut-etre mal formé ?
    voici celui des 4x4

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:t="http://zed.org/4x4.xsd" targetNamespace="http://zed.org/4x4.xsd" elementFormDefault="qualified">
      <xsd:element name="COMMENTAIRES">
        <xsd:complexType>
          <xsd:complexContent>
            <xsd:restriction base="xsd:anyType">
              <xsd:sequence>
                <xsd:element name="Commentaire" type="xsd:string" />
              </xsd:sequence>
            </xsd:restriction>
          </xsd:complexContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="CONSOMMATION">
        <xsd:complexType>
          <xsd:complexContent>
            <xsd:restriction base="xsd:anyType">
              <xsd:sequence>
                <xsd:element name="ville" type="xsd:string" />
                <xsd:element name="route" type="xsd:string" />
                <xsd:element name="mix" type="xsd:string" />
              </xsd:sequence>
            </xsd:restriction>
          </xsd:complexContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="OPTIONS">
        <xsd:complexType>
          <xsd:complexContent>
            <xsd:restriction base="xsd:anyType">
              <xsd:sequence>
                <xsd:element name="boite-auto" type="xsd:string" />
                <xsd:element name="regulateur-vitesse" type="xsd:string" />
                <xsd:element name="Sièges-av-chauffants" type="xsd:string" />
              </xsd:sequence>
            </xsd:restriction>
          </xsd:complexContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="PERSONNALISATION">
        <xsd:complexType>
          <xsd:complexContent>
            <xsd:restriction base="xsd:anyType">
              <xsd:sequence>
                <xsd:element name="calandre-interchangeable" type="xsd:string" />
                <xsd:element name="bluetooth" type="xsd:string" />
              </xsd:sequence>
            </xsd:restriction>
          </xsd:complexContent>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="items">
        <xsd:complexType>
          <xsd:complexContent>
            <xsd:restriction base="xsd:anyType">
              <xsd:sequence>
                <xsd:element ref="t:OPTIONS" minOccurs="0" maxOccurs="unbounded" />
                <xsd:element ref="t:CONSOMMATION" minOccurs="0" maxOccurs="unbounded" />
                <xsd:element ref="t:PERSONNALISATION" minOccurs="0" maxOccurs="unbounded" />
                <xsd:element ref="t:COMMENTAIRES" minOccurs="0" maxOccurs="unbounded" />
              </xsd:sequence>
            </xsd:restriction>
          </xsd:complexContent>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>

    j'ai beaucoup cherché notament sur msdn2
    http://msdn2.microsoft.com/fr-fr/library/system.xml.schema.xmlschema(VS.80).aspx et pages suivantes

    je suis bloqué

    merci de m'aider au plus vite :)

     

    mardi 16 janvier 2007 10:21

Réponses

  • comme dit dans un post sur le parsing

    ok tout marche, tout depends de la formation du xsd (pas la meme presentation sous sql serveur 2005 que sous vs 2005, ce qui cree des incompatibilités)

     

    jeudi 15 février 2007 14:34