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.
Describe cómo la XmlSchemaInference clase deduce el tipo de datos para atributos y elementos.
La XmlSchemaInference clase deduce el tipo de datos para atributos y elementos como tipos simples. En esta sección se describen los posibles tipos inferidos, cómo se reconcilian varios valores diferentes con un solo tipo y cómo se controlan los atributos que definen xsi
esquemas.
Tipos deducidos
La XmlSchemaInference clase deduce los valores de elemento y atributo como tipos simples e incluye un atributo de tipo en el esquema resultante. Todos los tipos inferidos son tipos simples. No se incluyen tipos base ni facetas como parte del esquema resultante.
Los valores se examinan individualmente a medida que se encuentran en el documento XML. El tipo de un valor se deduce en el momento en que se examina. Si se ha inferido un tipo para un atributo o elemento, y se encuentra un valor para el atributo o elemento que no coincide con el tipo inferido actualmente, la XmlSchemaInference clase promueve el tipo para cada uno de un conjunto de reglas. Estas reglas se discuten en la sección Promoción de tipos, más adelante en este tema.
En la tabla siguiente se enumeran los posibles tipos inferidos para el esquema resultante.
Tipo simple | Descripción |
---|---|
booleano | Verdadero, falso, 0, 1. |
byte | Enteros en el intervalo de –128 a 127. |
byte sin signo | Enteros en el intervalo de 0 a 255. |
corto | Enteros en el intervalo de –32768 a 32767. |
entero corto sin signo | Enteros del intervalo de 0 a 65535. |
Int | Enteros del intervalo de –2147483648 a 2147483647. |
unsignedInt | Enteros del intervalo de 0 a 4294967295. |
largo | Enteros del intervalo de –9223372036854775808 a 9223372036854775807. |
unsignedLong | Enteros del intervalo de 0 a 18446744073709551615. |
entero | Un número finito de dígitos posiblemente precedido con "-". |
decimal | Valores numéricos que contienen de 0 a 28 dígitos de precisión. |
flotante | Los decimales, opcionalmente, seguidos de "E" o "e" seguidos de un valor entero que representa el exponente. Los valores decimales pueden estar en el intervalo de -16777216 a 16777216. Los valores exponente pueden estar en el intervalo de –149 a 104. Float permite que los valores especiales representen valores infinitos y no numéricos. Los valores especiales para float son: 0, -0, INF, -INF, NaN. |
doble | Lo mismo que float excepto que los valores decimales pueden estar en el intervalo de -9007199254740992 a 9007199254740992, y los valores del exponente pueden estar en el intervalo de –1075 a 970. Double permite que los valores especiales representen valores infinitos y no numéricos. Los valores especiales para float son: 0, -0, INF, -INF, NaN. |
duración | El formato de duración W3C. |
fechaHora | Formato de fecha y hora W3C. |
Tiempo | Formato de hora W3C. |
fecha | Los valores de año están restringidos de 0001 a 9999. |
gYearMonth | Formato de mes y año gregoriano W3C. |
cuerda / cadena | Uno o varios caracteres Unicode. |
Promoción de tipos
La clase XmlSchemaInference examina los valores de atributo y elemento uno por uno. A medida que se encuentran valores, se deduce el tipo sin signo más restrictivo. Si se ha inferido un tipo para un atributo o elemento y se encuentra un nuevo valor que no coincide con el tipo inferido actualmente, el tipo inferido se promueve a un nuevo tipo que se aplica al tipo inferido actualmente y al nuevo valor. La XmlSchemaInference clase tiene en cuenta los valores anteriores al promover el tipo inferido.
Por ejemplo, considere los siguientes fragmentos XML de dos documentos XML:
<MyElement1 attr1="12" />
<MyElement1 attr1="52344" />
Cuando se encuentra el primer valor attr1
, el tipo de attr1
se deduce como unsignedByte
basado en el valor 12
. Cuando se encuentra el segundo attr1
, el tipo se promueve a unsignedShort
según el tipo actualmente inferido de unsignedByte
y el valor actual 52344
.
Ahora, considere el siguiente XML de dos documentos XML.
<MyElement2 attr2="0" />
<MyElement2 attr2="true" />
Cuando se encuentra el primer valor attr2
, el tipo de attr2
se deduce como unsignedByte
basado en el valor 0
. Cuando se encuentra el segundo attr2
, el tipo se promueve a string
en función del tipo inferido actualmente de unsignedByte
y el valor true
actual porque la XmlSchemaInference clase tiene en cuenta los valores anteriores al promover el tipo inferido. Sin embargo, si ambas instancias de attr2
se encontraran en el mismo documento XML y no en dos documentos XML diferentes como se muestra anteriormente, attr2
se habrían inferido como boolean
.
Atributos omitidos del espacio de nombres https://www.w3.org/2001/XMLSchema-instance
A continuación se muestran los atributos que definen el esquema que se omiten durante la inferencia de esquema.
Atributo | Descripción |
---|---|
xsi:type |
Si se encuentra un elemento con xsi:type especificado, xsi:type se omite . |
xsi:nil |
Si se encuentra un elemento con un xsi:nil atributo, su declaración de elemento en el esquema inferido tiene el valor de nillable="true" . Un elemento con un xsi:nil atributo establecido en true no puede tener elementos secundarios. |
xsi:schemaLocation |
Si se encuentra xsi:schemaLocation , se omite. |
xsi:noNamespaceSchemaLocation |
Si se encuentra xsi:noNamespaceSchemaLocation , se omite. |