Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como o processo de inferência de esquema converte os tipos de nó em um documento XML para uma estrutura XSD (linguagem de definição de esquema XML).
Regras de inferência de elemento
Esta seção descreve as regras de inferência para declarações de elemento. Há oito estruturas de declarações de elemento que serão inferidas:
Elemento do tipo simples
Elemento vazio
Elemento vazio com atributos
Elemento com atributos e conteúdo simples
Elemento com uma sequência de elementos filho
Elemento com uma sequência de elementos filho e atributos
Elemento com uma sequência de opções de elementos-filho
Elemento com uma sequência de opções de elementos-filho e atributos
Observação
Todas as complexType declarações são inferidas como tipos anônimos. O único elemento global inferido é o elemento raiz; todos os outros elementos são locais.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
Elemento tipado simples
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. O elemento em negrito mostra o esquema inferido para o elemento de tipo simples.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento Vazio
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. O elemento em negrito mostra o esquema inferido para o elemento vazio.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento Vazio com Atributos
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. Os elementos em negrito mostram o esquema inferido para o elemento vazio com atributos.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento com atributos e conteúdo simples
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. Os elementos em negrito mostram o esquema inferido para um elemento com atributos e conteúdo simples.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento com uma sequência de elementos filho
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. Os elementos negritos mostram o esquema inferido para um elemento com uma sequência de elementos filhos.
Observação
Mesmo que um elemento tenha apenas um elemento filho, ele ainda será tratado como uma sequência.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento com uma sequência de elementos filho e atributos
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. Os elementos negritos mostram o esquema inferido para um elemento com uma sequência de elementos filho e atributos.
Observação
Mesmo que um elemento tenha apenas um elemento filho, ele ainda será tratado como uma sequência.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento com uma sequência e opções de elementos filho
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. Os elementos negritos mostram o esquema inferido para um elemento com uma sequência e uma opção de elementos filhos.
Observação
O atributo maxOccurs do elemento xs:choice é configurado como "unbounded" no esquema inferido.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Elemento com uma sequência e uma escolha dos elementos filho e atributos
A tabela a seguir mostra a entrada XML para o InferSchema método e o esquema XML gerado. Os elementos negritos mostram o esquema inferido para um elemento com uma sequência e uma escolha dos elementos filho e atributos.
Observação
O atributo maxOccurs do elemento xs:choice é configurado como "unbounded" no esquema inferido.
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.
| XML | Esquema |
|---|---|
<?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> |
Processamento de atributo
Sempre que um novo atributo é encontrado dentro de um nó, ele é adicionado à definição inferida do nó com use="required". Na próxima vez que o mesmo nó for encontrado na instância, o processo de inferência comparará atributos da instância atual com os já inferidos. Se alguns dos já inferidos estiverem ausentes na instância, use="optional" será adicionado à definição de atributo. Novos atributos são adicionados a declarações existentes com use="optional".
Restrições de ocorrência
Durante o processo de inferência de esquema, os atributos minOccurs e maxOccurs são gerados para componentes inferidos de um esquema, com os valores "0" ou "1" e "1" ou "unbounded". Os valores `"1"` e `"unbounded"` são usados somente quando os valores `"0"` e `"1"` não podem validar o documento XML (por exemplo, se `MinOccurs="0"` não descrever com precisão um elemento, `minOccurs="1"` é usado).
Conteúdo Misto
Se um elemento contiver conteúdo misto (por exemplo, texto intercalado com elementos), o mixed="true" atributo será gerado para a definição de tipo complexo inferida.
Outras regras de inferência de tipo de nó
A tabela a seguir descreve as regras de inferência para instrução de processamento, comentário, referência de entidade, CDATA, tipo de documento e nós de namespace.
| Tipo de nó | Tradução |
|---|---|
| Instrução de processamento | Ignorado. |
| Comentário | Ignorado. |
| Referência da entidade | A XmlSchemaInference classe não manipula referências de entidade. Se um documento XML contiver referências de entidade, você precisará usar um leitor que expanda as entidades. Por exemplo, você pode passar um XmlTextReader com a propriedade EntityHandling definida como ExpandEntities como um parâmetro. Se as referências a entidades são localizadas e o leitor não expande entidades, uma exceção é throw. |
| CDATA | Todas as <![CDATA[ … ]] seções em um documento XML serão inferidas como xs:string. |
| Tipo de documento | Ignorado. |
| Namespaces | Ignorado. |
Para obter mais informações sobre o processo de inferência de esquema, consulte Inferring Schemas from XML Documents.