Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie der Schemainferenzprozess die Knotentypen in einem XML-Dokument in eine XSD-Struktur (XML Schema Definition Language) übersetzt.
Elementinferenceregeln
In diesem Abschnitt werden die Ableitungsregeln für Elementdeklarationen beschrieben. Es gibt acht Strukturen von Elementdeklarationen, die abgeleitet werden:
Element des einfachen Typs
Leeres Element
Leeres Element mit Attributen
Element mit Attributen und einfachem Inhalt
Element mit einer Sequenz von direkt untergeordneten Elementen
Element mit einer Sequenz von direkt untergeordneten Elementen und Attributen
Element mit einer Sequenz von Auswahlmöglichkeiten direkt untergeordneter Elemente
Element mit einer Sequenz von Auswahlmöglichkeiten direkt untergeordneter Elemente und Attribute
Hinweis
Alle complexType
Deklarationen werden als anonyme Typen abgeleitet. Das einzige globale Element, das abgeleitet wurde, ist das Stammelement; alle anderen Elemente sind lokal.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
Element eines einfachen Typs
In der folgenden Tabelle sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. Das fett formatierte Element zeigt das Schema, das für das einfache Typelelement abgeleitet wurde.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. Das fett formatierte Element zeigt das Schema, das für das leere Element abgeleitet wurde.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. Die fett formatierten Elemente zeigen das Schema an, das für das leere Element mit Attributen abgeleitet wurde.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. Die fett formatierten Elemente zeigen das Schema, das für ein Element mit Attributen und einfachen Inhalten abgeleitet wurde.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. Die fett formatierten Elemente stellen das für ein Element mit einer Sequenz von direkt untergeordneten Elementen hergeleitete Schema dar.
Hinweis
Selbst wenn ein Element nur ein untergeordnetes Element aufweist, wird es weiterhin als Sequenz behandelt.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. Die fett formatierten Elemente zeigen das Schema, das für ein Element mit einer Abfolge von untergeordneten Elementen und Attributen abgeleitet wurde.
Hinweis
Selbst wenn ein Element nur ein untergeordnetes Element aufweist, wird es weiterhin als Sequenz behandelt.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. 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 Attribut maxOccurs
des Elements xs:choice
wird auf "unbounded"
im abgeleiteten Schema festgelegt.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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 sind die XML-Eingaben für die InferSchema Methode und das generierte XML-Schema aufgeführt. 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 Attribut maxOccurs
des Elements xs:choice
wird auf "unbounded"
im abgeleiteten Schema festgelegt.
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.
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> |
Attributverarbeitung
Wenn innerhalb eines Knotens ein neues Attribut gefunden wird, wird es der abgeleiteten Definition des Knotens mit use="required"
hinzugefügt. Wenn derselbe Knoten das nächste Mal in der Instanz gefunden wird, vergleicht der Ableitungsprozess Attribute der aktuellen Instanz mit den bereits abgeleiteten. Wenn in der Instanz einige der bereits abgeleiteten fehlen, use="optional"
wird der Attributdefinition hinzugefügt. Neue Attribute werden vorhandenen Deklarationen mit use="optional"
hinzugefügt.
Vorkommenseinschränkungen
Während des Schemaabschlussprozesses werden die Attribute `minOccurs
` und `maxOccurs
` für abgeleitete Komponenten eines Schemas generiert, mit den Werten `"0"
` oder `"1"
` und `"1"
` oder `"unbounded"
`. Die Werte "1"
und "unbounded"
werden nur verwendet, wenn die Werte "0"
und "1"
das XML-Dokument nicht validieren können (z. B. wenn MinOccurs="0"
ein Element nicht genau beschreibt, wird minOccurs="1"
verwendet).
Gemischter Inhalt
Wenn ein Element gemischten Inhalt enthält (z. B. Text, der mit Elementen interspersiert ist), wird das mixed="true"
Attribut für die abgeleitete komplexe Typdefinition generiert.
Andere Knotentyp-Ableitungsregeln
In der folgenden Tabelle werden die Ableitungsregeln für die Verarbeitung von Anweisungen, Kommentaren, Entitätsreferenzen, CDATA, Dokumenttyp und Namespaceknoten beschrieben.
Knotentyp | Sprachübersetzung |
---|---|
Verarbeitungsanweisung | Ignoriert. |
Kommentar | Ignoriert. |
Entitätsreferenz | 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ätsreferenzen gefunden werden und der Leser keine Entitäten erweitert, wird eine Ausnahme ausgelöst. |
CDATA | Alle <![CDATA[ … ]] Abschnitte in einem XML-Dokument werden als xs:string interpretiert. |
Dokumenttyp | Ignoriert. |
Namensräume | Ignoriert. |
Weitere Informationen zum Schemainferenzprozess finden Sie unter Inferring schemas from XML Documents.