Odvozování relační struktury datové sady ze schématu XML (XSD)
Tato část obsahuje přehled o tom, jak je relační schéma objektu DataSet
sestaveno z dokumentu schématu jazyka XSD (XML Schema Definition Language). Obecně platí, že pro každý complexType
podřízený prvek prvku schématu se vygeneruje tabulka v objektu DataSet
. Struktura tabulky je určena definicí komplexního typu. Tabulky se vytvářejí v DataSet
elementech nejvyšší úrovně ve schématu. Tabulka je však vytvořena pouze pro prvek nejvyšší úrovně complexType
, pokud complexType
je prvek vnořený uvnitř jiného complexType
elementu, v takovém případě je vnořený complexType
prvek mapován na DataTable
uvnitř DataSet
.
Další informace o XSD naleznete v tématu W3C (World Wide Web Consortium) SCHÉMATU 0: Základní doporučení, SCHÉMA XML část 1: Doporučení struktury a schéma XML část 2: Doporučení datových typů.
Následující příklad ukazuje schéma XML, kde customers
je podřízený prvek MyDataSet
elementu, což je DataSet element.
<xs:schema id="SomeID"
xmlns=""
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>
V předchozím příkladu je element customers
komplexním typem elementu. Proto je definice komplexního typu analyzována a proces mapování vytvoří následující tabulku.
Customers (CustomerID, CompanyName, Phone)
Datový typ každého sloupce v tabulce je odvozen od typu schématu XML odpovídajícího prvku nebo atributu zadaného.
Poznámka:
Pokud je prvek customers
jednoduchého datového typu schématu XML, například celé číslo, nevygeneruje se žádná tabulka. Tabulky jsou vytvořeny pouze pro prvky nejvyšší úrovně, které jsou komplexní typy.
V následujícím schématu XML má element Schema dvě podřízené elementy InStateCustomers
a OutOfStateCustomers
.
<xs:schema id="SomeID"
xmlns=""
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
Oba i podřízené OutOfStateCustomers
prvky jsou komplexní prvky typu (customerType
). Proto proces mapování vygeneruje následující dvě identické tabulky v souboru DataSet
.
InStateCustomers (CustomerID, CompanyName, Phone)
OutOfStateCustomers (CustomerID, CompanyName, Phone)
V tomto oddílu
Mapování omezení schématu XML (XSD) k omezením datové sady
Popisuje elementy schématu XML použité k vytvoření omezení jedinečného a cizího klíče v objektu DataSet
.
Generování relací datové sady ze schématu XML (XSD)
Popisuje elementy schématu XML používané k vytvoření relací mezi sloupci tabulky v objektu DataSet
.
Omezení schématu XML a relací
Popisuje, jak se relace vytvářejí implicitně při použití elementů schématu XML k vytvoření omezení v objektu DataSet
.
Související oddíly
Použití XML v datové sadě
Popisuje, jak načíst a zachovat relační strukturu a data jako DataSet
data XML.