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. |