Sdílet prostřednictvím


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.

Viz také