Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questo argomento viene descritto come il processo di inferenza dello schema converte i tipi di nodo in un documento XML in una struttura XSD (XML Schema Definition Language).
Regole di inferenza degli elementi
In questa sezione vengono descritte le regole di inferenza per le dichiarazioni di elemento. Esistono otto strutture di dichiarazioni di elementi che verranno dedotti:
Elemento di tipo semplice
Elemento vuoto
Elemento vuoto con attributi
Elemento con attributi e contenuto semplice
Elemento con una sequenza di elementi figli
Elemento con una sequenza di elementi figli e attributi
Elemento con una sequenza di scelte degli elementi figlio
Elemento con una sequenza di scelte di elementi e attributi figlio
Annotazioni
Tutte le complexType
dichiarazioni vengono inferite come tipi anonimi. L'unico elemento globale dedotto è l'elemento radice; tutti gli altri elementi sono locali.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
Elemento tipizzato semplice
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. L'elemento in grassetto mostra lo schema dedotto per l'elemento di tipo semplice.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento Vuoto
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. L'elemento in grassetto mostra lo schema dedotto per l'elemento vuoto.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento vuoto con attributi
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. Gli elementi in grassetto mostrano lo schema dedotto per l'elemento vuoto con attributi.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento con attributi e contenuto semplice
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. Gli elementi in grassetto mostrano lo schema dedotto per un elemento con attributi e contenuto semplice.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento con una sequenza di elementi figli
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. Gli elementi in grassetto mostrano lo schema dedotto per un elemento con una sequenza di elementi figlio.
Annotazioni
Anche se un elemento ha un solo elemento figlio, viene comunque considerato come una sequenza.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento con una sequenza di elementi figlio e attributi
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. Gli elementi in grassetto mostrano lo schema dedotto per un elemento con una sequenza di elementi figlio e attributi.
Annotazioni
Anche se un elemento ha un solo elemento figlio, viene comunque considerato come una sequenza.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento con una sequenza e scelte di elementi figlio
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. Gli elementi in grassetto mostrano lo schema dedotto per un elemento con una sequenza e la scelta di elementi figli.
Annotazioni
L'attributo maxOccurs
dell'elemento xs:choice
è impostato su "unbounded"
nello schema dedotto.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elemento con una sequenza e una scelta di elementi figlio e attributi
La tabella seguente illustra l'input XML per il InferSchema metodo e l'XML Schema generato. Gli elementi in grassetto mostrano lo schema dedotto per un elemento con una sequenza e la scelta di elementi e attributi figli.
Annotazioni
L'attributo maxOccurs
dell'elemento xs:choice
è impostato su "unbounded"
nello schema dedotto.
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.
XML | Diagramma |
---|---|
<?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> |
Elaborazione degli attributi
Ogni volta che viene rilevato un nuovo attributo all'interno di un nodo, viene aggiunto alla definizione dedotta del nodo con use="required"
. Alla successiva individuazione dello stesso nodo nell'istanza, il processo di inferenza confronta gli attributi dell'istanza corrente con quelli già dedotti. Se nell'istanza mancano alcuni dei già dedotti, use="optional"
viene aggiunto alla definizione dell'attributo. I nuovi attributi vengono aggiunti alle dichiarazioni esistenti con use="optional"
.
Vincoli di occorrenza
Durante il processo di inferenza dello schema, gli minOccurs
attributi e maxOccurs
vengono generati, per i componenti dedotti di uno schema, con i valori "0"
o "1"
e "1"
o "unbounded"
. I valori "1"
e "unbounded"
vengono utilizzati solo quando i valori "0"
e "1"
non possono convalidare il documento XML, ad esempio se MinOccurs="0"
non descrive in modo accurato un elemento. minOccurs="1"
Contenuto misto
Se un elemento contiene contenuto misto(ad esempio testo interspersato con elementi), l'attributo mixed="true"
viene generato per la definizione di tipo complesso dedotto.
Altre regole di inferenza del tipo di nodo
Nella tabella seguente vengono descritte le regole di inferenza per l'elaborazione di istruzioni, commenti, riferimenti alle entità, CDATA, tipo di documento e nodi dello spazio dei nomi.
Tipo di nodo | Traduzione |
---|---|
Istruzione di elaborazione | Ignorato. |
Commento | Ignorato. |
Informazioni di riferimento sulle entità | La XmlSchemaInference classe non gestisce i riferimenti all'entità. Se un documento XML contiene riferimenti all'entità, è necessario usare un lettore che espande le entità. Ad esempio, è possibile passare un oggetto XmlTextReader con la EntityHandling proprietà impostata su ExpandEntities come parametro. Se vengono rilevati riferimenti a entità e il lettore non espande le entità, viene generata un'eccezione. |
CDATA | Tutte le <![CDATA[ … ]] sezioni di un documento XML verranno dedotte come xs:string . |
Tipo di documento | Ignorato. |
Namespace | Ignorato. |
Per ulteriori informazioni sul processo di inferenza dello schema, vedere Inferring Schemas from XML Documents.