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

Обновлен: November 2007

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

Дополнительные сведения о языке XSD см. в документации консорциума World Wide Web (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 соответствующего элемента или указанного атрибута.

bfdchewb.alert_note(ru-ru,VS.90).gifПримечание.

Если элемент 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)

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

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