Поделиться через


Выведение реляционной структуры DataSet из схемы XML (XSD)

В этом разделе приведены общие сведения о построении реляционной схемы DataSet на основе документа схемы на языке XSD. В общем случае для каждого дочернего элемента complexType элемента схемы в наборе DataSet создается таблица. Структура таблицы задается определением сложного типа. В наборе DataSet таблицы создаются для элементов верхнего уровня в схеме. Однако таблица создается для элемента complexType верхнего уровня, только когда элемент complexType вложен в другой элемент complexType. В этом случае вложенный элемент complexType сопоставлен с DataTable в наборе DataSet.

Дополнительные сведения о языке XSD см. в документах консорциума W3C «XML Schema Part 0: Primer Recommendation», «XML Schema Part 1: Structures Recommendation» и «XML Schema Part 2: Datatypes Recommendation», которые доступны по адресу http://www.w3.org/.

В следующем примере показана схема XML, где customers является дочерним элементом элемента MyDataSet, который является элементом DataSet.

 <xs:schema id="SomeID" 
              
             xmlns:xs="http://www.w3.org/2001/XMLSchema" 
             xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="MyDataSet" msdata:IsDataSet="true">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element name="customers" > 
            <xs:complexType >
              <xs:sequence>
                <xs:element name="CustomerID" type="xs:integer" 
                             minOccurs="0" />
                <xs:element name="CompanyName" type="xs:string" 
                             minOccurs="0" />
                <xs:element name="Phone" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
           </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>

В предыдущем примере элемент customers является элементом сложного типа. Поэтому проводится синтаксический анализ определения сложного типа, а процесс сопоставления создает следующую таблицу.

Customers (CustomerID , CompanyName, Phone)

Тип данных каждого столбца в таблице получается из типа схемы XML соответствующего элемента или указанного атрибута.

ПримечаниеПримечание

Если элемент customers является элементом простого типа данных схемы XML, например integer, то таблица не создается.Таблицы создаются только для элементов верхнего уровня, которые являются сложными типами.

В следующей схеме XML элемент Schema имеет два дочерних элемента: InStateCustomers и OutOfStateCustomers.

 <xs:schema id="SomeID" 
              
             xmlns:xs="http://www.w3.org/2001/XMLSchema" 
             xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="InStateCustomers" type="customerType" />
    <xs:element name="OutOfStateCustomers" type="customerType" />
     <xs:complexType name="customerType" >
         
      </xs:complexType>

    <xs:element name="MyDataSet" msdata:IsDataSet="true">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="customers" />
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>

Дочерние элементы InStateCustomers и OutOfStateCustomers являются элементами сложного типа (customerType). Поэтому процесс сопоставления формирует в наборе DataSet две следующие одинаковые таблицы.

InStateCustomers (CustomerID , CompanyName, Phone)
OutOfStateCustomers (CustomerID , CompanyName, Phone)

В этом подразделе

Связанные подразделы