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 u hodnoty 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 probrána v části Typpromotion později 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.
bajt Celá čísla v rozsahu –128 až 127.
bezznaménkový bajt Celá čísla v rozsahu od 0 do 255.
krátký Celá čísla v rozsahu –32768 až 32767.
unsignedShort (nepodepsaný krátký) Celá čísla v rozsahu od 0 do 65535.
int (integer) Celá čísla v rozsahu –2147483648 až 2147483647.
neznačené celé číslo Celá čísla v rozsahu od 0 do 4294967295.
dlouhý Celá čísla v rozsahu –9223372036854775808 do 9223372036854775807.
unsignedLong Celá čísla v rozsahu od 0 do 18446744073709551615.
celočíselný Konečný počet číslic, které mohou mít předponu "-".
desetinné číslo Číselné hodnoty, které obsahují přesnost od 0 do 28 číslic.
plout 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 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.
dvojitý Totéž jako typ floating point, s výjimkou, že desetinné hodnoty mohou být v rozsahu od -9007199254740992 do 9007199254740992, a exponentní hodnoty mohou být v rozsahu od –1075 do 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.
datum a čas 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 podle gregoriánského kalendáře W3C.
řetězec Jeden nebo více znaků Unicode.

Zvýšení úrovně 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. Když dojde k druhému výskytu attr1, typ se změní na unsignedShort na základě momentá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 se povýší na string na základě aktuálně odvozeného typu unsignedByte a aktuální hodnoty true, protože třída XmlSchemaInference zohledňuje předchozí hodnoty při povýšení odvozeného typu. Pokud však byly v jednom dokumentu XML zjištěny obě instance attr2, a ne ve dvou různých dokumentech XML, jak je znázorněno výše, attr2 by bylo odvozeno 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í.

Vlastnost 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 xsi:nil atributem true 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é