Как преобразовать таблицу msdata xml в таблицу ms excel, используя Python - PullRequest
0 голосов
/ 25 мая 2020

Я собираюсь преобразовать следующий XML в электронную таблицу Excel, используя Python. Как мне действовать?

Я изучал около lxml, elementtree, minidom библиотек, но не смог воспроизвести функциональность этого веб-сайта: https://www.convertcsv.com/xml-to-csv.htm

До сих пор я узнал, что он использует схему для определения ограничений данных и xml для хранения информации о моей модели данных.

Примеры:

<DomainExport>
...
  <Objects>
    <IDObject>1741</IDObject>
    <IDClass>62</IDClass>
    <HAlign>right</HAlign>
    <VAlign>middle</VAlign>
    <FGColor>0</FGColor>
    <Width>19</Width>
    <Type>DATE</Type>
    <Format>dd/MM/yyyy</Format>
    <Aggregate>0</Aggregate>
    <Tables>P8BRGD</Tables>
    <SelectClause>case when P8BRGD.GDCHDT &gt; 0 THEN 
convert ( datetime , substring(CASE 
WHEN len(P8BRGD.GDCHDT) = 7 THEN '0' + convert ( char(7) , P8BRGD.GDCHDT)
ELSE convert ( char(8) , P8BRGD.GDCHDT)
END,3,2)+'-'+left(CASE 
WHEN len(P8BRGD.GDCHDT) = 7 THEN '0' + convert ( char(7) , P8BRGD.GDCHDT)
ELSE convert ( char(8) , P8BRGD.GDCHDT)
END,2)+'-'+right(CASE 
WHEN len(P8BRGD.GDCHDT) = 7 THEN '0' + convert ( char(7) , P8BRGD.GDCHDT)
ELSE convert ( char(8) , P8BRGD.GDCHDT)
END,4)) ELSE NULL END</SelectClause>
    <WhereClause />
    <IDLicense>9d7e72a6-3860-42df-9936-f6d31eaa9901</IDLicense>
    <CreateDate>2007-07-03T13:41:22.44+01:00</CreateDate>
    <UpdateDate>2012-12-10T11:40:33.747+00:00</UpdateDate>
    <IDCreator>ce22f933-8199-41b4-a519-ddef98fb8de4</IDCreator>
    <IDUpdateUser>978300b8-c629-45bd-a055-f8ee01e51ef7</IDUpdateUser>
    <IsDeleted>0</IsDeleted>
    <IsFixedValue>0</IsFixedValue>
    <ObjectName>Changed date</ObjectName>
    <AllowInDomainContext>1</AllowInDomainContext>
    <IDDomain>1</IDDomain>
  </Objects>
  <Objects>
    <IDObject>1743</IDObject>
    <IDClass>62</IDClass>
    <HAlign>right</HAlign>
    <VAlign>middle</VAlign>
    <FGColor>0</FGColor>
    <Width>19</Width>
    <Type>DATE</Type>
    <Format>dd/MM/yyyy</Format>
    <Aggregate>0</Aggregate>
    <Tables>P8BRGD</Tables>
    <SelectClause>case when P8BRGD.GDCRDT &gt; 0 THEN 
convert ( datetime , substring(CASE 
WHEN len(P8BRGD.GDCRDT) = 7 THEN '0' + convert ( char(7) , P8BRGD.GDCRDT)
ELSE convert ( char(8) , P8BRGD.GDCRDT)
END,3,2)+'-'+left(CASE 
WHEN len(P8BRGD.GDCRDT) = 7 THEN '0' + convert ( char(7) , P8BRGD.GDCRDT)
ELSE convert ( char(8) , P8BRGD.GDCRDT)
END,2)+'-'+right(CASE 
WHEN len(P8BRGD.GDCRDT) = 7 THEN '0' + convert ( char(7) , P8BRGD.GDCRDT)
ELSE convert ( char(8) , P8BRGD.GDCRDT)
END,4)) ELSE NULL END</SelectClause>
    <WhereClause />
    <IDLicense>9d7e72a6-3860-42df-9936-f6d31eaa9901</IDLicense>
    <CreateDate>2007-07-03T13:41:22.457+01:00</CreateDate>
    <UpdateDate>2013-03-26T19:31:05.4+00:00</UpdateDate>
    <IDCreator>ce22f933-8199-41b4-a519-ddef98fb8de4</IDCreator>
    <IDUpdateUser>978300b8-c629-45bd-a055-f8ee01e51ef7</IDUpdateUser>
    <IsDeleted>0</IsDeleted>
    <IsFixedValue>0</IsFixedValue>
    <ObjectName>Created date</ObjectName>
    <AllowInDomainContext>1</AllowInDomainContext>
    <IDDomain>1</IDDomain>
  </Objects>
  <ObjectLabels>
    <IDObject>36</IDObject>
    <Language>BR</Language>
    <Label>Endereço do Grupo</Label>
  </ObjectLabels>
  <ObjectLabels>
    <IDObject>36</IDObject>
    <Language>EN</Language>
    <Label>Group Address</Label>
  </ObjectLabels>
  <ObjectLabels>
    <IDObject>37</IDObject>
    <Language>BR</Language>
    <Label>CEP do Grupo</Label>
    <Comments />
  </ObjectLabels>
  <Links>
    <IDLink>7314</IDLink>
    <IDDomain>1</IDDomain>
    <Table1>P8INV</Table1>
    <Table2>P8OB</Table2>
    <Value>P8INV.INVOBNO=P8OB.OBOBNO</Value>
    <Type>INNER</Type>
    <LinkName>32 Costs Invoice</LinkName>
    <IDLicense>9d7e72a6-3860-42df-9936-f6d31eaa9901</IDLicense>
    <CreateDate>2018-06-07T09:37:00.04+01:00</CreateDate>
    <UpdateDate>2018-06-07T09:37:00.04+01:00</UpdateDate>
    <IDCreator>be766a89-7e00-4220-adbc-ac622695ff53</IDCreator>
    <IDUpdateUser>be766a89-7e00-4220-adbc-ac622695ff53</IDUpdateUser>
  </Links>
  <Links>
    <IDLink>7315</IDLink>
    <IDDomain>1</IDDomain>
    <Table1>P8OB</Table1>
    <Table2>P8ORD</Table2>
    <Value>P8OB.OBOBNO = P8ORD.ORORNO</Value>
    <Type>INNER</Type>
    <LinkName>Orders (New P8ORD)</LinkName>
    <IDLicense>9d7e72a6-3860-42df-9936-f6d31eaa9901</IDLicense>
    <CreateDate>2018-06-07T09:37:00.047+01:00</CreateDate>
    <UpdateDate>2018-06-07T09:37:00.047+01:00</UpdateDate>
    <IDCreator>be766a89-7e00-4220-adbc-ac622695ff53</IDCreator>
    <IDUpdateUser>be766a89-7e00-4220-adbc-ac622695ff53</IDUpdateUser>
  </Links>
</DomainExport>

Схема:

<DomainExport>
  <xs:schema id="DomainExport" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="DomainExport" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="Databases">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDatabase" type="xs:int" minOccurs="0" />
                <xs:element name="DatabaseName" type="xs:string" minOccurs="0" />
                <xs:element name="ConnectionString" type="xs:string" minOccurs="0" />
                <xs:element name="ConnectionTimeout" type="xs:int" minOccurs="0" />
                <xs:element name="CommandTimeout" type="xs:int" minOccurs="0" />
                <xs:element name="IsDeleted" type="xs:unsignedByte" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DatabaseLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDatabase" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Variables">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDVariable" type="xs:int" minOccurs="0" />
                <xs:element name="Query" type="xs:string" minOccurs="0" />
                <xs:element name="DefaultValue" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="CreateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="UpdateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="IDCreator" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDUpdateUser" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDDatabase" type="xs:int" minOccurs="0" />
                <xs:element name="Type" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="Name" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="VariableLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDVariable" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Domains">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomain" type="xs:int" minOccurs="0" />
                <xs:element name="IDDatabase" type="xs:int" minOccurs="0" />
                <xs:element name="FilterTable" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="CreateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="UpdateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="IDCreator" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDUpdateUser" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="DomainName" type="xs:string" minOccurs="0" />
                <xs:element name="IsDeleted" type="xs:unsignedByte" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomain" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDDatabase" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Links">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDLink" type="xs:int" minOccurs="0" />
                <xs:element name="IDDomain" type="xs:int" minOccurs="0" />
                <xs:element name="Table1" type="xs:string" minOccurs="0" />
                <xs:element name="Table2" type="xs:string" minOccurs="0" />
                <xs:element name="Value" type="xs:string" minOccurs="0" />
                <xs:element name="Type" type="xs:string" minOccurs="0" />
                <xs:element name="LinkName" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="CreateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="UpdateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="IDCreator" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDUpdateUser" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="LinkLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDLink" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Classes">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDClass" type="xs:int" minOccurs="0" />
                <xs:element name="ClassName" type="xs:string" minOccurs="0" />
                <xs:element name="IsDeleted" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IDDomain" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="ClassLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDClass" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Objects">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDObject" type="xs:int" minOccurs="0" />
                <xs:element name="IDClass" type="xs:int" minOccurs="0" />
                <xs:element name="HAlign" type="xs:string" minOccurs="0" />
                <xs:element name="VAlign" type="xs:string" minOccurs="0" />
                <xs:element name="FGColor" type="xs:string" minOccurs="0" />
                <xs:element name="BGColor" type="xs:string" minOccurs="0" />
                <xs:element name="Width" type="xs:int" minOccurs="0" />
                <xs:element name="Height" type="xs:int" minOccurs="0" />
                <xs:element name="Type" type="xs:string" minOccurs="0" />
                <xs:element name="Format" type="xs:string" minOccurs="0" />
                <xs:element name="Aggregate" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="Tables" type="xs:string" minOccurs="0" />
                <xs:element name="SelectClause" type="xs:string" minOccurs="0" />
                <xs:element name="WhereClause" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="CreateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="UpdateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="IDCreator" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDUpdateUser" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IsDeleted" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsFixedValue" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="ObjectName" type="xs:string" minOccurs="0" />
                <xs:element name="AllowInDomainContext" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="HasTooMuchData" type="xs:boolean" minOccurs="0" />
                <xs:element name="IDObjectType" type="xs:int" minOccurs="0" />
                <xs:element name="LabelClause" type="xs:string" minOccurs="0" />
                <xs:element name="IDDomain" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="ObjectLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDObject" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainContexts">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomainContext" type="xs:int" minOccurs="0" />
                <xs:element name="IDDomain" type="xs:int" minOccurs="0" />
                <xs:element name="ContextName" type="xs:string" minOccurs="0" />
                <xs:element name="CreateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="UpdateDate" type="xs:dateTime" minOccurs="0" />
                <xs:element name="IDCreator" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDUpdateUser" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDLicense" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IsDeleted" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="GlobalSearchURLSUFFIX" type="xs:string" minOccurs="0" />
                <xs:element name="GlobalSearchURLID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="IDChoice" type="xs:int" minOccurs="0" />
                <xs:element name="Icon" type="xs:string" minOccurs="0" />
                <xs:element name="DashboardURLSUFFIX" type="xs:string" minOccurs="0" />
                <xs:element name="DashboardURLID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="DashboardLayoutPage" type="xs:int" minOccurs="0" />
                <xs:element name="XmlCriteria" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainContextLabels">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomainContext" type="xs:int" minOccurs="0" />
                <xs:element name="Language" type="xs:string" minOccurs="0" />
                <xs:element name="Label" type="xs:string" minOccurs="0" />
                <xs:element name="Comments" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainContextLinks">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomainContext" type="xs:int" minOccurs="0" />
                <xs:element name="IDLink" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainContextClasses">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomainContext" type="xs:int" minOccurs="0" />
                <xs:element name="IDClass" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainContextObjects">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomainContext" type="xs:int" minOccurs="0" />
                <xs:element name="IDObject" type="xs:int" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="DomainContextConfigObjects">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IDDomainContext" type="xs:int" minOccurs="0" />
                <xs:element name="IDObject" type="xs:int" minOccurs="0" />
                <xs:element name="IsContextReport" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsEvent" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsQuickCriterion" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsAdvancedCriterion" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="Operator" type="xs:string" minOccurs="0" />
                <xs:element name="Presentation" type="xs:int" minOccurs="0" />
                <xs:element name="Value" type="xs:string" minOccurs="0" />
                <xs:element name="Order" type="xs:int" minOccurs="0" />
                <xs:element name="IsMandatory" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsGlobalSearchCriterion" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsLabel" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsDescription" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="IsExtendedInformation" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="OrderColumn" type="xs:int" minOccurs="0" />
                <xs:element name="IsCriterionRequired" type="xs:unsignedByte" minOccurs="0" />
                <xs:element name="CriterionOrderBy" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="SqlVisionMatches">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Type" type="xs:string" minOccurs="0" />
                <xs:element name="ID1" type="xs:string" minOccurs="0" />
                <xs:element name="ID2" type="xs:string" minOccurs="0" />
                <xs:element name="ID3" type="xs:string" minOccurs="0" />
                <xs:element name="ID4" type="xs:string" minOccurs="0" />
                <xs:element name="AP_UUID" msdata:DataType="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
                <xs:element name="Source" type="xs:string" minOccurs="0" />
                <xs:element name="Date" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
      <xs:unique name="Constraint1">
        <xs:selector xpath=".//Variables" />
        <xs:field xpath="IDVariable" />
      </xs:unique>
      <xs:unique name="Domains_Constraint1" msdata:ConstraintName="Constraint1">
        <xs:selector xpath=".//Domains" />
        <xs:field xpath="IDDomain" />
      </xs:unique>
      <xs:unique name="Links_Constraint1" msdata:ConstraintName="Constraint1">
        <xs:selector xpath=".//Links" />
        <xs:field xpath="IDLink" />
      </xs:unique>
      <xs:unique name="Classes_Constraint1" msdata:ConstraintName="Constraint1">
        <xs:selector xpath=".//Classes" />
        <xs:field xpath="IDClass" />
      </xs:unique>
      <xs:unique name="Objects_Constraint1" msdata:ConstraintName="Constraint1">
        <xs:selector xpath=".//Objects" />
        <xs:field xpath="IDObject" />
      </xs:unique>
      <xs:unique name="DomainContexts_Constraint1" msdata:ConstraintName="Constraint1">
        <xs:selector xpath=".//DomainContexts" />
        <xs:field xpath="IDDomainContext" />
      </xs:unique>
      <xs:keyref name="DomainContextConfigObjects" refer="DomainContexts_Constraint1">
        <xs:selector xpath=".//DomainContextConfigObjects" />
        <xs:field xpath="IDDomainContext" />
      </xs:keyref>
      <xs:keyref name="DomainContextObjects" refer="DomainContexts_Constraint1">
        <xs:selector xpath=".//DomainContextObjects" />
        <xs:field xpath="IDDomainContext" />
      </xs:keyref>
      <xs:keyref name="DomainContextClasses" refer="DomainContexts_Constraint1">
        <xs:selector xpath=".//DomainContextClasses" />
        <xs:field xpath="IDDomainContext" />
      </xs:keyref>
      <xs:keyref name="DomainContextLinks" refer="DomainContexts_Constraint1">
        <xs:selector xpath=".//DomainContextLinks" />
        <xs:field xpath="IDDomainContext" />
      </xs:keyref>
      <xs:keyref name="DomainContextLabels" refer="DomainContexts_Constraint1">
        <xs:selector xpath=".//DomainContextLabels" />
        <xs:field xpath="IDDomainContext" />
      </xs:keyref>
      <xs:keyref name="DomainContexts" refer="Domains_Constraint1">
        <xs:selector xpath=".//DomainContexts" />
        <xs:field xpath="IDDomain" />
      </xs:keyref>
      <xs:keyref name="ObjectLabels" refer="Objects_Constraint1">
        <xs:selector xpath=".//ObjectLabels" />
        <xs:field xpath="IDObject" />
      </xs:keyref>
      <xs:keyref name="Objects" refer="Classes_Constraint1">
        <xs:selector xpath=".//Objects" />
        <xs:field xpath="IDClass" />
      </xs:keyref>
      <xs:keyref name="ClassLabels" refer="Classes_Constraint1">
        <xs:selector xpath=".//ClassLabels" />
        <xs:field xpath="IDClass" />
      </xs:keyref>
      <xs:keyref name="Classes" refer="Domains_Constraint1">
        <xs:selector xpath=".//Classes" />
        <xs:field xpath="IDDomain" />
      </xs:keyref>
      <xs:keyref name="LinkLabels" refer="Links_Constraint1">
        <xs:selector xpath=".//LinkLabels" />
        <xs:field xpath="IDLink" />
      </xs:keyref>
      <xs:keyref name="Links" refer="Domains_Constraint1">
        <xs:selector xpath=".//Links" />
        <xs:field xpath="IDDomain" />
      </xs:keyref>
      <xs:keyref name="DomainLabels" refer="Domains_Constraint1">
        <xs:selector xpath=".//DomainLabels" />
        <xs:field xpath="IDDomain" />
      </xs:keyref>
      <xs:keyref name="VariableLabels" refer="Constraint1">
        <xs:selector xpath=".//VariableLabels" />
        <xs:field xpath="IDVariable" />
      </xs:keyref>
    </xs:element>
  </xs:schema>

...