Създайте XSD и XML документ от набор от данни, където xml препраща към xsd Импортирайте xml към excel

Дълго заглавие, но се надявам да мога да обясня какво търся. Прочетох и потърсих в Google много xml документация, но не получих отговор на това, което се опитвам да направя. Опитвам се да създам XSD документ, който генерира изрични дефиниции на типове за полета в набора от данни. След това се опитвам да създам примерен XML документ, който валидира спрямо XSD документа.

Това работи добре във Visual Studio, защото мога да чета в схемата и документа и той валидира, НО създаденият xml документ няма реална препратка към XSD чрез xlmns или друг метод. Ако искам да използвам тези xml данни в MS Excel, да речем, и се опитам да импортирам, той не знае къде е XSD, за да го валидира, така че го приема въз основа на стойностите. Има ли начин в моя код да добавя xlmns както към XSD, така и към XML, ако това е необходимо за решаване на това?

 Dim MyDataSet As New DataSet("Samples")

    Dim MyDataTable As New DataTable("Sample")

    MyDataSet.Tables.Add(MyDataTable)

    MyDataTable.Columns.Add(New DataColumn("blnExample", GetType(Boolean), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("datExample", GetType(DateTime), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("decExample", GetType(Decimal), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("dblExample", GetType(Double), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("intExample", GetType(Integer), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("lngExample", GetType(Long), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("sglExample", GetType(Single), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("strExample", GetType(String), Nothing, MappingType.Element))

    ' Write out the XSD

    MyDataSet.WriteXmlSchema(Server.MapPath("~\xml\MySchema.xsd"))

    ' Put some data in the table
    Dim TempRow As DataRow

    For i As Integer = 1 To 3

        TempRow = MyDataTable.NewRow()
        TempRow("blnExample") = True
        TempRow("datExample") = New DateTime(2012, 2, 29)
        TempRow("decExample") = 1
        TempRow("dblExample") = 2
        TempRow("intExample") = 3
        TempRow("lngExample") = 4
        TempRow("strExample") = "Example"
        MyDataTable.Rows.Add(TempRow)
    Next
    ' Write out the data        

    MyDataSet.WriteXml(Server.MapPath("~\xml\MyData.xml"))

person Jason Lee    schedule 16.03.2012    source източник


Отговори (1)


Можете да добавите пространство от имена към двата документа, като зададете свойството Namespace на вашия DataSetinstance:

MyDataSet.Namespace = "http://www.example.com/"

Това ще доведе до това, че вашата схема има целево пространство от имена:

<xs:schema targetNamespace="http://www.example.com/" ... >

и вашия екземпляр документ, препращащ към това пространство от имена:

<Sample xmlns="http://www.example.com/">
person DRH    schedule 07.04.2012