Delen via


Regels voor het uitstellen van schemaknooppunttypen en -structuur

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 elementdeductie

In deze sectie worden de deductieregels voor elementdeclaraties beschreven. Er zijn acht structuren van elementdeclaraties die worden afgeleid:

  1. Element van eenvoudig type

  2. Leeg element

  3. Leeg element met kenmerken

  4. Element met kenmerken en eenvoudige inhoud

  5. Element met een reeks onderliggende elementen

  6. Element met een reeks onderliggende elementen en kenmerken

  7. Element met een reeks keuzes van onderliggende elementen

  8. Element met een reeks keuzes van onderliggende elementen en kenmerken

Notitie

Alle complexType declaraties worden afgeleid 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 element eenvoudig type.

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" xml

ns: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" xml

ns: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" xml

ns: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" xml

ns: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 reeks onderliggende elementen

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.

Notitie

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" xml

ns: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.

Notitie

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" xml

ns: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 onderliggende elementen

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 en de keuze van onderliggende elementen.

Notitie

Het maxOccurs kenmerk van het xs:choice element is ingesteld "unbounded" op 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" xml

ns: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 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 en keuze van onderliggende elementen en kenmerken.

Notitie

Het maxOccurs kenmerk van het xs:choice element is ingesteld "unbounded" op 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" xml

ns: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 exemplaren

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 regels voor deductie van 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 eigenschap EntityHandling doorgeven die is ingesteld ExpandEntities als parameter. 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.

Zie ook