Выведение реляционной структуры 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)
В этом подразделе
Сопоставление ограничений схемы XML (XSD) с ограничениями DataSet
Описание элементов схемы XML, используемых для создания ограничений уникального и внешнего ключа в DataSet.Формирование связей DataSet на основе схемы XML (XSD)
Описание элементов схемы XML, используемых для создания связей между столбцами таблиц в DataSet.Ограничения и связи схемы XML (ADO.NET)
Описание неявного создания связей при использовании элементов схемы XML для создания ограничений в наборе DataSet.
Связанные подразделы
- Использование XML в DataSet (ADO.NET)
Описание загрузки и сохранения реляционной структуры и данных в наборе DataSet как XML-данных.