Freigeben über


Regeln für Rückschlussschemaknotentypen und Struktur

In diesem Thema wird beschrieben, wie der Schemarückschlussprozess die in einem XML-Dokument auftretenden Knotentypen in eine XSD-Struktur (XML Schema Definition) übersetzt.

Rückschlussregeln für Elemente

In diesem Abschnitt werden die Rückschlussregeln für Elementdeklarationen erläutert. Es existieren acht Strukturen zur Elementdeklaration, die hergeleitet werden können:

  1. Einfaches Element

  2. Leeres Element

  3. Leeres Element mit Attributen

  4. Element mit Attributen und einfachem Inhalt

  5. Element mit einer Sequenz von direkt untergeordneten Elementen

  6. Element mit einer Sequenz von direkt untergeordneten Elementen und Attributen

  7. Element mit einer Sequenz von Auswahlmöglichkeiten direkt untergeordneter Elemente

  8. Element mit einer Sequenz von Auswahlmöglichkeiten direkt untergeordneter Elemente und Attribute

Hinweis

Alle complexType-Deklarationen werden als anonyme Typen hergeleitet. Das einzige globale hergeleitete Element ist das Stammelement. Alle anderen Elemente sind lokal.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

Element eines einfachen Typs

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Das fett formatierte Element stellt das Schema dar, das für das Element eines einfachen Typs hergeleitet wird.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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>

Leeres Element

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Das fett formatierte Element stellt das für das leere Element hergeleitete Schema dar.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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>

Leeres Element mit Attributen

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Die fett formatierten Elemente stellen das für das leere Element mit Attributen hergeleitete Schema dar.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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 mit Attributen und einfachem Inhalt

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Die fett formatierten Elemente stellen das für ein Element mit Attributen und einfachem Inhalt hergeleitete Schema dar.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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 mit einer Sequenz von direkt untergeordneten Elementen

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Die fett formatierten Elemente stellen das für ein Element mit einer Sequenz von direkt untergeordneten Elementen hergeleitete Schema dar.

Hinweis

Ein Element wird auch wie eine Sequenz behandelt, wenn es nur über ein direkt untergeordnetes Element verfügt.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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 mit einer Sequenz von direkt untergeordneten Elementen und Attributen

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Die fett formatierten Elemente stellen das für ein Element mit einer Sequenz von direkt untergeordneten Elementen und Attributen hergeleitete Schema dar.

Hinweis

Ein Element wird auch wie eine Sequenz behandelt, wenn es nur über ein direkt untergeordnetes Element verfügt.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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 mit einer Sequenz und Auswahlmöglichkeiten von direkt untergeordneten Elementen

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Die fett formatierten Elemente stellen das für ein Element mit einer Sequenz und Auswahlmöglichkeiten von direkt untergeordneten Elementen hergeleitete Schema dar.

Hinweis

Das maxOccurs-Attribut des xs:choice-Elements wird im hergeleiteten Schema auf "unbounded" festgelegt.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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 mit einer Sequenz und Auswahlmöglichkeit von direkt untergeordneten Elementen und Attributen

In der folgenden Tabelle wird die XML-Eingabe für die InferSchema-Methode und das generierte XML-Schema dargestellt. Die fett formatierten Elemente stellen das für ein Element mit einer Sequenz und Auswahlmöglichkeit von direkt untergeordneten Elementen und Attributen hergeleitete Schema dar.

Hinweis

Das maxOccurs-Attribut des xs:choice-Elements wird im hergeleiteten Schema auf "unbounded" festgelegt.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

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>

Verarbeitung von Attributen

Sobald eine neues Attribut in einem Knoten auftritt, wird es der hergeleiteten Definition des Knotens mit use="required" hinzugefügt. Wenn derselbe Knoten das nächste Mal in der Instanz gefunden wird, werden die Attribute der aktuellen Instanz mit den bereits hergeleiteten im Rückschlussprozess verglichen. Wenn einige der bereits hergeleiteten Attribute in der Instanz nicht vorhanden sind, wird der Attributdefinition use="optional" hinzugefügt. Neue Attribute werden vorhandenen Deklarationen mit use="optional" hinzugefügt.

Beschränkungen hinsichtlich des Vorkommens

Während des Schemarückschlussprozesses wird das minOccurs-Attribut und das maxOccurs-Attribut mit den Werten "0" oder "1" und "1" oder "unbounded" für hergeleitete Komponenten eines Schemas generiert. Die Werte "1" und "unbounded" werden nur verwendet, wenn die Werte "0" und "1" keine Validierung für das XML-Dokument durchführen können (wenn MinOccurs="0" ein Element beispielsweise nicht genau beschreibt, wird minOccurs="1" verwendet).

Gemischter Inhalt

Wenn ein Element gemischte Inhalte (z. B. Text mit eingefügten Elementen) enthält, wird das mixed="true"-Attribut für die hergeleitete komplexe Typdefinition generiert.

Rückschlussregeln für andere Knotentypen

In der folgenden Tabelle sind Rückschlussregeln für Verarbeitungsanweisungs-, Kommentar-, Entitätsverweis-, CDATA-, Dokumenttypen- und Namespaceknoten dargestellt.

Knotentyp Übersetzung
Verarbeitungsanweisung Ignoriert.
Kommentar Ignoriert.
Entitätsverweis Die XmlSchemaInference-Klasse behandelt keine Entitätsverweise. Wenn ein XML-Dokument Entitätsverweise enthält, müssen Sie einen Reader verwenden, der die Entitäten erweitert. Sie können beispielsweise eine XmlTextReader-Klasse mit der EntityHandling-Eigenschaft übergeben, die auf den ExpandEntities-Member als Parameter festgelegt ist. Wenn Entitätsverweise auftreten und der Reader Entitäten nicht erweitert, wird eine Ausnahme ausgelöst.
CDATA Alle <![CDATA[ … ]]-Abschnitte in einem XML-Dokument werden als xs:string hergeleitet.
Dokumenttyp Ignoriert.
Namespaces Ignoriert.

Weitere Informationen zum Schemarückschlussprozess finden Sie unter Herleiten von Schemata aus XML-Dokumenten.

Siehe auch