Pravidla pro odvození jednoduchých typů
Popisuje, jak XmlSchemaInference třída odvodí datový typ pro atributy a prvky.
Třída XmlSchemaInference odvodí datový typ pro atributy a prvky jako jednoduché typy. Tato část popisuje možné odvozené typy, způsob, jak se několik různých hodnot odsouhlasí s jedním typem a jak se zpracovávají atributy definující xsi
schématem.
Odvozené typy
Třída XmlSchemaInference odvodí hodnoty elementu a atributu jako jednoduché typy a zahrnuje atribut typu ve výsledném schématu. Všechny odvozené typy jsou jednoduché typy. Jako součást výsledného schématu nejsou zahrnuty žádné základní typy ani omezující vlastnosti.
Hodnoty se prověřují jednotlivě, protože jsou zjištěny v dokumentu XML. Typ je odvozen pro hodnotu v okamžiku, kdy je zkoumána. Pokud byl typ odvozen pro atribut nebo prvek a hodnota atributu nebo elementu je zjištěna, která neodpovídá aktuálně odvozeného typu, XmlSchemaInference třída podporuje typ pro každou sadu pravidel. Tato pravidla jsou popsána v části Povýšení typu dále v tomto tématu.
Následující tabulka uvádí možné odvozené typy výsledného schématu.
Jednoduchý typ | Popis |
---|---|
boolean | Pravda, nepravda, 0, 1. |
byte | Celá čísla v rozsahu –128 až 127. |
unsignedByte | Celá čísla v rozsahu od 0 do 255. |
short | Celá čísla v rozsahu –32768 až 32767. |
unsignedShort | Celá čísla v rozsahu od 0 do 65535. |
int | Celá čísla v rozsahu –2147483648 až 2147483647. |
unsignedInt | Celá čísla v rozsahu od 0 do 4294967295. |
long | Celá čísla v rozsahu –9223372036854775808 do 9223372036854775807. |
unsignedLong | Celá čísla v rozsahu od 0 do 18446744073709551615. |
integer | Konečný počet číslic, které mohou mít předponu "-". |
decimal | Číselné hodnoty, které obsahují přesnost od 0 do 28 číslic. |
float (číslo s plovoucí řádovou čárkou) | Desetinná čísla volitelně následovaná hodnotou "E" nebo "e" následovanou celočíselnou hodnotou představující exponent. Desetinné hodnoty mohou být v rozsahu -16777216 do 16777216. Exponentní hodnoty mohou být v rozsahu –149 až 104. Float umožňuje, aby speciální hodnoty představovaly nekonečno a nečíselné hodnoty. Speciální hodnoty pro float jsou: 0, -0, INF, -INF, NaN. |
double | Totéž jako plovoucí s výjimkou desetinných hodnot může být v rozsahu -9007199254740992 9007199254740992 a exponentní hodnoty mohou být v rozsahu –1075 až 970. Double umožňuje, aby speciální hodnoty představovaly nekonečno a nečíselné hodnoty. Speciální hodnoty pro float jsou: 0, -0, INF, -INF, NaN. |
doba trvání | Formát doby trvání W3C. |
data a času. | Formát dateTime W3C. |
čas | Formát času W3C. |
datum | Hodnoty roku jsou omezeny z 0001 na 9999. |
gYearMonth | Formát měsíce a roku W3C. |
string | Jeden nebo více znaků Unicode. |
Propagace typu
Třída XmlSchemaInference zkoumá hodnoty atributů a prvků po jednom. Při zjištěných hodnotách se odvozuje nejvíce omezující typ bez znaménka. Pokud byl typ odvozen pro atribut nebo prvek a je zjištěna nová hodnota, která neodpovídá aktuálně odvozeného typu, odvozený typ je povýšen na nový typ, který se vztahuje jak na aktuálně odvozený typ, tak na novou hodnotu. Třída XmlSchemaInference při povýšení odvozeného typu považuje předchozí hodnoty.
Představte si například následující fragmenty XML ze dvou dokumentů XML:
<MyElement1 attr1="12" />
<MyElement1 attr1="52344" />
Při výskytu první attr1
hodnoty je typ attr1
odvozen jako unsignedByte
na základě hodnoty 12
. Při výskytu sekundy attr1
je typ povýšen unsignedShort
na základě aktuálně odvozeného typu unsignedByte
a aktuální hodnoty 52344
.
Nyní zvažte následující XML ze dvou dokumentů XML:
<MyElement2 attr2="0" />
<MyElement2 attr2="true" />
Při výskytu první attr2
hodnoty je typ attr2
odvozen jako unsignedByte
na základě hodnoty 0
. Když se narazí na druhý attr2
typ, typ se zvýší string
na základě aktuálně odvozeného typu a aktuální hodnotytrue
, protože XmlSchemaInference třída při povýšení odvozeného typu unsignedByte
považuje předchozí hodnoty. Pokud však byly v jednom dokumentu XML zjištěny attr2
obě instance, a ne ve dvou různých dokumentech XML, jak je znázorněno výše, attr2
byly odvozeny jako boolean
.
Ignorované atributy z https://www.w3.org/2001/XMLSchema-instance oboru názvů
Následují atributy definující schéma, které se při odvozování schématu ignorují.
Atribut | Popis |
---|---|
xsi:type |
Pokud je prvek zjištěn se zadaným xsi:type , xsi:type bude ignorován. |
xsi:nil |
Pokud je zjištěn prvek s atributem xsi:nil , jeho element deklarace v odvozené schéma má hodnotu nillable="true" . Prvek s nastaveným true atributem xsi:nil nemůže mít podřízené prvky. |
xsi:schemaLocation |
Pokud xsi:schemaLocation je zjištěn, bude ignorován. |
xsi:noNamespaceSchemaLocation |
Pokud xsi:noNamespaceSchemaLocation je zjištěn, bude ignorován. |