Delen via


Regels voor het uitstellen van eenvoudige typen

Beschrijft hoe de XmlSchemaInference klasse het gegevenstype afgeeft voor kenmerken en elementen.

De XmlSchemaInference klasse bepaalt het gegevenstype voor kenmerken en elementen als eenvoudige typen. In deze sectie worden de mogelijke uitgestelde typen beschreven, hoe meerdere verschillende waarden worden afgestemd op één type en hoe schema-definiërende xsi kenmerken worden verwerkt.

Uitgestelde typen

De XmlSchemaInference klasse leidt element- en kenmerkwaarden af als eenvoudige typen en bevat een typekenmerk in het resulterende schema. Alle uitgestelde typen zijn eenvoudige typen. Er worden geen basistypen of facetten opgenomen als onderdeel van het resulterende schema.

Waarden worden afzonderlijk onderzocht terwijl ze worden aangetroffen in het XML-document. Het type wordt afgeleid voor een waarde op het moment dat het wordt onderzocht. Als een type is afgeleid voor een kenmerk of element en er een waarde voor het kenmerk of element wordt aangetroffen die niet overeenkomt met het momenteel uitgestelde type, bevordert de XmlSchemaInference klasse het type voor elk van een set regels. Deze regels worden verderop in dit onderwerp besproken in de sectie Type promotie.

De volgende tabel bevat de mogelijke uitgestelde typen voor het resulterende schema.

Eenvoudig type Beschrijving
boolean Waar, onwaar, 0, 1.
Byte Gehele getallen in het bereik van -128 tot 127.
unsignedByte Gehele getallen in het bereik van 0 tot 255.
Korte Gehele getallen in het bereik van -32768 tot 32767.
unsignedShort Gehele getallen in het bereik van 0 tot 65535.
int Gehele getallen in het bereik van –2147483648 tot 2147483647.
unsignedInt Gehele getallen in het bereik van 0 tot 4294967295.
long Gehele getallen in het bereik van –9223372036854775808 tot 9223372036854775807.
unsignedLong Gehele getallen in het bereik van 0 tot 18446744073709551615.
geheel getal Een eindig aantal cijfers mogelijk voorafgegaan door '-'.
decimal Numerieke waarden die van 0 tot 28 cijfers van precisie bevatten.
zwevend Decimalen optioneel gevolgd door 'E' of 'e' gevolgd door een geheel getal dat de exponent vertegenwoordigt. Decimale waarden kunnen zich in het bereik van -16777216 tot 16777216. Exponentwaarden kunnen in het bereik van –149 tot 104 liggen.

Met Float kunnen speciale waarden oneindige en niet-numerieke waarden worden weergegeven. Speciale waarden voor float zijn: 0, -0, INF, -INF, NaN.
dubbel Hetzelfde als zwevende waarden, behalve decimale waarden, kunnen zich in het bereik van -9007199254740992 tot 9007199254740992 bevinden, en exponentwaarden kunnen zich in het bereik van -1075 tot 970 bevinden.

Met dubbele precisie kunnen speciale waarden oneindige en niet-numerieke waarden worden weergegeven. Speciale waarden voor float zijn: 0, -0, INF, -INF, NaN.
duur De W3C-duurnotatie.
dateTime De W3C-datum/tijd-indeling.
tijd De W3C-tijdnotatie.
datum Jaarwaarden zijn beperkt van 0001 tot 9999.
gYearMonth De W3C Gregoriaanse maand- en jaarnotatie.
tekenreeks Een of meer Unicode-tekens.

Type promotie

De XmlSchemaInference klasse onderzoekt kenmerk- en elementwaarden één voor één. Naarmate er waarden worden aangetroffen, wordt het meest beperkende, niet-ondertekende type afgeleid. Als een type is afgeleid voor een kenmerk of element en er een nieuwe waarde optreedt die niet overeenkomt met het momenteel uitgestelde type, wordt het afgeleid type gepromoveerd naar een nieuw type dat van toepassing is op zowel het momenteel afgeleide type als de nieuwe waarde. De XmlSchemaInference klasse beschouwt eerdere waarden bij het promoten van het uitgestelde type.

Bekijk bijvoorbeeld de volgende XML-fragmenten uit twee XML-documenten:

<MyElement1 attr1="12" />

<MyElement1 attr1="52344" />

Wanneer de eerste attr1 waarde wordt aangetroffen, wordt het type afgeleid als unsignedByte op basis van attr1 de waarde12. Wanneer de tweede attr1 wordt aangetroffen, wordt het type gepromoveerd naar unsignedShort op basis van het momenteel uitgestelde type en unsignedByte de huidige waarde 52344.

Bekijk nu de volgende XML uit twee XML-documenten:

<MyElement2 attr2="0" />

<MyElement2 attr2="true" />

Wanneer de eerste attr2 waarde wordt aangetroffen, wordt het type afgeleid als unsignedByte op basis van attr2 de waarde0. Wanneer de tweede attr2 wordt aangetroffen, wordt het type gepromoveerd naar string op basis van unsignedByte het momenteel uitgestelde type en de huidige waarde true , omdat de XmlSchemaInference klasse eerdere waarden beschouwt bij het promoten van het uitgestelde type. Als beide exemplaren attr2 echter zijn aangetroffen in hetzelfde XML-document en niet in twee verschillende XML-documenten zoals hierboven geïllustreerd, attr2 zou zijn afgeleid als boolean.

Genegeerde kenmerken uit de https://www.w3.org/2001/XMLSchema-instance naamruimte

Hieronder volgen schema-definiërende kenmerken die tijdens schemadeductie worden genegeerd.

Kenmerk Beschrijving
xsi:type Als er een element is xsi:type opgegeven, wordt het xsi:type genegeerd.
xsi:nil Als een element met een xsi:nil kenmerk wordt aangetroffen, heeft de declaratie van het element in het afgeleid schema de waarde van nillable="true". Een element met een xsi:nil kenmerk dat is ingesteld op true kan geen onderliggende elementen bevatten.
xsi:schemaLocation Als xsi:schemaLocation dit wordt aangetroffen, wordt deze genegeerd.
xsi:noNamespaceSchemaLocation Als xsi:noNamespaceSchemaLocation dit wordt aangetroffen, wordt deze genegeerd.

Zie ook