Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit onderwerp wordt beschreven hoe het schemadeductieproces de knooppunttypen in een XML-document vertaalt naar een XSD-structuur (XML Schema Definition Language).
Regels voor elementinferentie
In deze sectie worden de deductieregels voor elementdeclaraties beschreven. Er zijn acht structuren van elementdeclaraties die worden afgeleid:
Element van eenvoudig type
Leeg element
Leeg element met kenmerken
Element met kenmerken en eenvoudige inhoud
Element met een reeks kindelementen
Element met een reeks onderliggende elementen en kenmerken
Element met een selectie van keuzes van kind-elementen
Element met een reeks keuzes van onderliggende elementen en kenmerken
Opmerking
Alle complexType declaraties worden beschouwd als anonieme typen. Het enige globale element dat is afgeleid, is het hoofdelement; alle andere elementen zijn lokaal.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
Eenvoudig getypt element
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. Het vetgedrukte element toont het schema dat is afgeleid voor het eenvoudige type-element.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><root>text</root> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="root" type="xs:string" /></xs:schema> |
Leeg element
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. Het vetgedrukte element toont het schema dat is afgeleid voor het lege element.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><empty/> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="empty" /></xs:schema> |
Leeg element met kenmerken
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. De vetgedrukte elementen geven het schema weer dat is afgeleid voor het lege element met kenmerken.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><empty attribute1="text"/> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="empty"><xs:complexType><xs:attribute name="attribute1" type="xs:string" use="required" /></xs:complexType></xs:element></xs:schema> |
Element met kenmerken en eenvoudige inhoud
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. De vetgedrukte elementen geven het schema weer dat is afgeleid voor een element met kenmerken en eenvoudige inhoud.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><root attribute1="text">value</root> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="root"><xs:complexType><xs:simpleContent><xs:extension base="xs:string"><xs:attribute name="attribute1" type="xs:string" use="required" /></xs:extension></xs:simpleContent></xs:complexType></xs:element></xs:schema> |
Element met een volgorde van subelementen
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. De vetgedrukte elementen geven het schema weer dat is afgeleid voor een element met een reeks onderliggende elementen.
Opmerking
Zelfs als een element slechts één onderliggend element heeft, wordt het nog steeds behandeld als een reeks.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><root><subElement/></root> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="root"><xs:complexType><xs:sequence><xs:element name="subElement" /></xs:sequence></xs:complexType></xs:element></xs:schema> |
Element met een reeks onderliggende elementen en kenmerken
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. De vetgedrukte elementen geven het schema weer dat is afgeleid voor een element met een reeks onderliggende elementen en kenmerken.
Opmerking
Zelfs als een element slechts één onderliggend element heeft, wordt het nog steeds behandeld als een reeks.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><root attribute1="text"><subElement1/><subElement2/></root> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="root"><xs:complexType><xs:sequence><xs:element name="subElement1" /><xs:element name="subElement2" /></xs:sequence><xs:attribute name="attribute1" type="xs:string" use="required" /></xs:complexType></xs:element></xs:schema> |
Element met een reeks en keuzes van kindelementen
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. De vetgedrukte elementen tonen het schema dat is afgeleid voor een element met een volgorde en keuze uit onderliggende elementen.
Opmerking
Het maxOccurs kenmerk van het xs:choice element is ingesteld op "unbounded" in het afgeleid schema.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><root><subElement1/><subElement2/><subElement1/></root> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="root"><xs:complexType><xs:sequence><xs:choice maxOccurs="unbounded"><xs:element name="subElement1" /><xs:element name="subElement2" /></xs:choice></xs:sequence></xs:complexType></xs:element></xs:schema> |
Element met een reeks en keuze van kindelementen en attributen
In de volgende tabel ziet u de XML-invoer voor de InferSchema methode en het gegenereerde XML-schema. De vetgedrukte elementen geven het schema weer dat is afgeleid voor een element met een sequentie en keuze van onderliggende elementen en attributen.
Opmerking
Het maxOccurs kenmerk van het xs:choice element is ingesteld op "unbounded" in het afgeleid schema.
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.
| XML | Schema |
|---|---|
<?xml version="1.0"?><root attribute1="text"><subElement1/><subElement2/><subElement1/></root> |
<?xml version="1.0" encoding="utf-8"?><xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="root"><xs:complexType><xs:sequence><xs:choice maxOccurs="unbounded"><xs:element name="subElement1" /><xs:element name="subElement2" /></xs:choice></xs:sequence><xs:attribute name="attribute1" type="xs:string" use="required" /></xs:complexType></xs:element></xs:schema> |
Kenmerkverwerking
Wanneer een nieuw kenmerk binnen een knooppunt wordt aangetroffen, wordt het toegevoegd aan de uitgestelde definitie van het knooppunt met use="required". De volgende keer dat hetzelfde knooppunt wordt gevonden in het exemplaar, vergelijkt het deductieproces kenmerken van het huidige exemplaar met de kenmerken die al zijn afgeleid. Als sommige van de reeds afgeleiden ontbreken in het exemplaar, use="optional" wordt deze toegevoegd aan de kenmerkdefinitie. Nieuwe kenmerken worden toegevoegd aan bestaande declaraties met use="optional".
Beperkingen voor voorkomen
Tijdens het schemadeductieproces worden de minOccurs en maxOccurs kenmerken gegenereerd voor uitgestelde onderdelen van een schema, met de waarden "0" of "1" of "1" ."unbounded" De waarden "1" en "unbounded" worden alleen gebruikt wanneer de waarden "0" en "1" het XML-document niet kunnen worden gevalideerd (bijvoorbeeld als MinOccurs="0" een element niet nauwkeurig wordt beschreven, minOccurs="1" wordt gebruikt).
Gemengde inhoud
Als een element gemengde inhoud bevat (bijvoorbeeld tekst tussen elementen), wordt het mixed="true" kenmerk gegenereerd voor de uitgestelde complexe typedefinitie.
Andere afleidingsregels voor knooppunttypen
In de volgende tabel worden de deductieregels beschreven voor het verwerken van instructies, opmerkingen, entiteitsreferenties, CDATA, documenttype en naamruimteknooppunten.
| Soort knooppunt | Vertaling |
|---|---|
| Verwerkingsinstructie | Genegeerd. |
| Opmerking | Genegeerd. |
| Entiteitsverwijzing | De XmlSchemaInference klasse verwerkt geen entiteitsverwijzingen. Als een XML-document entiteitsverwijzingen bevat, moet u een lezer gebruiken waarmee de entiteiten worden uitgebreid. U kunt bijvoorbeeld een XmlTextReader-element met de eigenschap EntityHandling ingesteld op ExpandEntities als parameter doorgeven. Als entiteitsverwijzingen worden aangetroffen en de lezer entiteiten niet uitvouwt, wordt er een uitzondering gegenereerd. |
| CDATA | Alle <![CDATA[ … ]] secties in een XML-document worden afgeleid als xs:string. |
| Documenttype | Genegeerd. |
| Naamruimten | Genegeerd. |
Zie Schema's uit XML-documenten uitstellen voor meer informatie over het schemadeductieproces.