Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo el proceso de inferencia de esquema traduce los tipos de nodo de un documento XML a una estructura del lenguaje de definición de esquemas XML (XSD).
Reglas de inferencia de elementos
En esta sección se describen las reglas de inferencia para las declaraciones de elementos. Hay ocho estructuras de declaraciones de elemento que se deducirán:
Elemento de tipo simple
Elemento vacío
Elemento vacío con atributos
Elemento con atributos y contenido simple
Elemento con una secuencia de elementos secundarios
Elemento con una secuencia de elementos secundarios y atributos
Elemento con una secuencia de opciones de elementos secundarios
Elemento con una secuencia de opciones de elementos secundarios y atributos
Nota:
Todas las complexType declaraciones se deducen como tipos anónimos. El único elemento global inferido es el elemento raíz; todos los demás elementos son locales.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
Elemento de Tipo Simple
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. El elemento en negrita muestra el esquema inferido para el elemento de tipo simple.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 Vacío
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. El elemento en negrita muestra el esquema inferido para el elemento vacío.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 vacío con atributos
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. Los elementos en negrita muestran el esquema inferido para el elemento vacío con atributos.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 con atributos y contenido simple
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. Los elementos en negrita muestran el esquema inferido para un elemento con atributos y contenido simple.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 con una secuencia de elementos secundarios
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. Los elementos en negrita muestran el esquema inferido para un elemento con una secuencia de elementos secundarios.
Nota:
Incluso si un elemento tiene solo un elemento secundario, se sigue tratando como una secuencia.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 con una secuencia de elementos secundarios y atributos
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. Los elementos en negrita muestran el esquema inferido para un elemento con una secuencia de elementos y atributos secundarios.
Nota:
Incluso si un elemento tiene solo un elemento secundario, se sigue tratando como una secuencia.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 con una secuencia y opciones de elementos secundarios
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. Los elementos en negrita muestran el esquema deducido para un elemento con una secuencia y opción de elementos secundarios.
Nota:
El atributo maxOccurs del elemento xs:choice se establece en "unbounded" en el esquema inferido.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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 con una secuencia y opción de elementos secundarios y atributos
En la tabla siguiente se muestra la entrada XML al InferSchema método y el esquema XML generado. Los elementos en negrita muestran el esquema inferido para un elemento con una secuencia y elección de elementos y atributos secundarios.
Nota:
El atributo maxOccurs del elemento xs:choice se establece en "unbounded" en el esquema inferido.
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.
| 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> |
Procesamiento de atributos
Cada vez que se encuentra un nuevo atributo dentro de un nodo, se agrega a la definición deducida del nodo con use="required". La próxima vez que se encuentre el mismo nodo en la instancia, el proceso de inferencia comparará los atributos de la instancia actual con los que ya se han inferido. Si faltan algunos de los ya inferidos en la instancia, use="optional" se agrega a la definición de atributo. Los nuevos atributos se agregan a las declaraciones existentes con use="optional".
Restricciones de ocurrencia
Durante el proceso de inferencia de esquema, se generan los minOccurs atributos y maxOccurs para los componentes inferidos de un esquema, con los valores "0" o "1" y "1" o "unbounded". Los valores "1" y "unbounded" solo se usan cuando los valores "0" y "1" no pueden validar el documento XML (por ejemplo, si MinOccurs="0" no describe con precisión un elemento, minOccurs="1" se usa).
Contenido mixto
Si un elemento contiene contenido mixto (por ejemplo, texto intercalado con elementos), el mixed="true" atributo se genera para la definición de tipo complejo inferido.
Otras reglas de inferencia de tipos de nodo
En la tabla siguiente se describen las reglas de inferencia para procesar instrucciones, comentarios, referencia de entidad, CDATA, tipo de documento y nodos de espacio de nombres.
| Tipo de nodo | Traducción |
|---|---|
| Instrucción de procesamiento | Ignorado. |
| Comentario | Ignorado. |
| Referencia de entidad | La XmlSchemaInference clase no controla las referencias de entidad. Si un documento XML contiene referencias de entidad, debe usar un lector que expanda las entidades. Por ejemplo, puede pasar un XmlTextReader con la propiedad EntityHandling establecida en ExpandEntities como parámetro. Si se encuentran referencias de entidad y el lector no expande entidades, se lanza una excepción. |
| CDATA | Las <![CDATA[ … ]] secciones de un documento XML se deducirán como xs:string. |
| Tipo de documento | Ignorado. |
| Espacios de nombres | Ignorado. |
Para obtener más información sobre el proceso de inferencia de esquemas, vea Inferencia de esquemas de documentos XML.