Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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. |