Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
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 afgeleide typen beschreven, hoe meerdere verschillende waarden verzoend worden tot één type en hoe schema-definiërende xsi kenmerken worden verwerkt.
Afgeleide typen
De XmlSchemaInference klasse leidt element- en kenmerkwaarden af als eenvoudige typen en bevat een typekenmerk in het resulterende schema. Alle afgeleide 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 van een waarde wordt afgeleid op het moment dat deze 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 afgeleide typen voor het resulterende schema.
| Eenvoudig type | Beschrijving |
|---|---|
| booleaan | Waar, onwaar, 0, 1. |
| byte | Gehele getallen in het bereik van -128 tot 127. |
| ongetekend byte | Gehele getallen in het bereik van 0 tot 255. |
| kort | Gehele getallen in het bereik van -32768 tot 32767. |
| unsignedShort | Gehele getallen in het bereik van 0 tot 65535. |
| int (integer) | Gehele getallen in het bereik van –2147483648 tot 2147483647. |
| unsignedInt (niet-ondertekend geheel getal) | Gehele getallen in het bereik van 0 tot 4294967295. |
| lang | 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 '-'. |
| decimaal | Numerieke waarden die van 0 tot 28 cijfers van precisie bevatten. |
| zweven | Decimalen optioneel gevolgd door 'E' of 'e' gevolgd door een geheel getal dat de exponent vertegenwoordigt. Decimale waarden kunnen in het bereik van -16777216 tot 16777216 liggen. Exponentwaarden kunnen in het bereik van –149 tot 104 liggen. Het datatype Float maakt het mogelijk om speciale waarden te gebruiken voor het weergeven van oneindigheid en niet-numerieke waarden. Speciale waarden voor float zijn: 0, -0, INF, -INF, NaN. |
| dubbel | Hetzelfde als zwevend, behalve dat decimale waarden zich in het bereik van -9007199254740992 tot 9007199254740992 kunnen bevinden en exponentwaarden zich in het bereik van –1075 tot 970 kunnen bevinden. Met het data-type Double kunnen speciale waarden worden gebruikt om oneindigheid en niet-numerieke waarden weer te geven. Speciale waarden voor float zijn: 0, -0, INF, -INF, NaN. |
| duur | De W3C-duratieformaat. |
| datum en tijd | De W3C-datum/tijd-indeling. |
| Tijd | De W3C-tijdnotatie. |
| datum | Jaarwaarden zijn beperkt van 0001 tot 9999. |
| gYearMonth | De W3C Gregoriaanse maand- en jaarnotatie. |
| touw | 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 afgeleide 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 van attr1 als unsignedByte afgeleid op basis van de waarde 12. Wanneer de tweede attr1 wordt aangetroffen, wordt het type gepromoveerd naar unsignedShort op basis van het momenteel afgeleide type van unsignedByte en 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 van attr2 als unsignedByte afgeleid op basis van de waarde 0. Wanneer de tweede attr2 wordt aangetroffen, wordt het type herleid tot string op basis van het momenteel afgeleide type van unsignedByte en de huidige waarde true, omdat de XmlSchemaInference-klasse eerdere waarden in aanmerking neemt bij het herleiden van het afgeleide 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.
| Eigenschap | Beschrijving |
|---|---|
xsi:type |
Wanneer een element wordt aangetroffen met xsi:type opgegeven, wordt 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 wordt aangetroffen, wordt het genegeerd. |
xsi:noNamespaceSchemaLocation |
Als xsi:noNamespaceSchemaLocation wordt aangetroffen, wordt het genegeerd. |