XSD#

XML Schema Definition (XSD) yra schemų kalba skirta XML duomenims aprašyti.

XSD specifikacija susideda iš šių dalių:

Jungtinis modelis#

Jungtiniai modeliai (angl. Aggregate Model) yra modelis, kuris yra sujungtas iš vieno ar kelių papildomų modelių.

Šakninis modelis#

Šakninis modelis (angl. Aggregate Root) yra jungtinio modelio pradžios taškas, per kurį pasiekiami kitų jungtinio modelio sudėtyje esančių modelių duomenys.

Dalinis modelis#

Dalinis modelis (angl. Aggregate Part) yra Jungtinio modelio sudedamoji dalis ir atskirai nenaudojamas duomenims gauti. Dalinio modelio duomenys yra teikiami tik kaip jungtinio modelio dalis.

Dalinio modelio atveju, nėra pildomas model.source, kadangi dalinio modelio duomenys gali būti pasiekiami tik per jungtinį modelį.

Pavyzdys

Duomenys

<country name="Lietuva">
    <city name="Vilnius" />
</country>

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:complexType name="city">
        <xs:attribute name="name" type="xs:string" />
    </xs:complexType>

    <xs:element name="country">
        <xs:complexType>
            <xs:sequence>
                <xs:element type="city" maxOccurs="unbounded" />
                <xs:attribute name="name" type="xs:string" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

Struktūros aprašas

dataset

model

property

type

ref

source

prepare

level

schema

xsd

country.xsd

xsd

Country

/country

0

name

string

@name

cities[]

backref

City

city

expand()

City/:part

0

name

string

@name

0

Pavyzdyje:

  • Country modelis yra Jungtinis modelis ir jungtinio modelio Šakninis modelis.

  • City yra Dalinis modelis, kadangi tai žymi /:part žymė, taip pat City neturi užpildyto model.source stulpelio, tai reiškia, kad tiesiogiai City duomenų gauti galimybės nėra, juos galima gauti tik per Country jungtinį modelį, kurio sudėtyje yra ir City, prieinamas per Country/cities savybę.

  • Country/cities savybė turi expand() funkciją įrašytą į property.prepare, kuri įtraukia visas tiesiogines City savybes į jungtinį Country modelį.

Elementai#

element#

XSD element atitinka DSA loginio modelio:

Jei xsd_element tipas nėra nurodytas, tada pagal XSD specifikaciją elemento tipas yra xs:anyType. DSA neturi xs:anyType analogo, todėl tokiu atveju turėtu būti naudojamas DSA string tipas, kur xs:anyType reikšmė yra pateikiama, kaip tekstinė reprezentacija.

Priklausomai nuo to, kur element yra deklaruotas complexType atžvilgiu, pagal nutylėjimą atliekama sekanti XSD interpretacija:

  • Jei element (complexType tipo) yra complexType sudėtyje, laikoma, kad modelis yra kito Jungtinis modelis dalis, todėl pagal nutylėjimą nenurodomas model.source`ir šis modelis žymimas kaip dalinis, prie jo pavadinimo pridedant žymę `/:part.

  • Jei element (complexType tipo) nėra complexType sudėtyje ir deklaruotas atskirai, bet XSD schemoje yra bent vienas complexType, kurio viduje yra elementas, turintis atributą ref, kurio reikšmė yra šio elemento pavadinimas, tada laikoma, kad modelis yra kito Jungtinis modelis dalis, todėl pagal nutylėjimą nenurodomas model.source ir šis modelis žymimas kaip dalinis, prie jo pavadinimo pridedant žymę /:part.

  • Jei element (complexType tipo) nėra complexType sudėtyje ir yra deklaruotas atskirai, tada laikoma, kad modelis gali būti pasiekiamas tiesiogiai ir tokio modelio model.source yra pildomas bei šis modelis nežymimas kaip dalinis.

  • Jei simpleType tipo element yra complexType sudėtyje, iš jo sukuriama property, ir pridedama prie model, kuris kuriamas iš elemento, kurį aprašo šis complexType. Šios property.source formuojamas iš elemento pavadinimo, prie jo pridedant /text()

  • Jei simpleType tipo element nėra complexType sudėtyje, bet yra deklaruotas atskirai, bei nėra nei vieno kito elemento, kuris per ref ar type referuotų į šį elementą, iš jo sukuriama property, ir pridedama prie specialaus Resource model.

Pavyzdys

Duomenys

<Country>
  <name>France</name>
  <numberOfMunicipalities>35</numberOfMunicipalities>

  <City>
    <name>Paris</name>
  </City>

  <City>
    <name>Lyon</name>
  </City>

</Country>

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="Country">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="name" type="xs:string" />

        <xs:element name="numberOfMunicipalities">
          <xs:simpleType>
            <xs:restriction base="xs:integer">
              <xs:minInclusive value="1" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>

        <xs:element ref="governance"/>

        <xs:element name="City" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="governance">
    <xs:complexType>
      <xs:sequence>
        <element name="president" type="string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

Struktūros aprašas

Pavyzdyje:

  • Country element tampa modeliu, nes jis yra pirminio lygio, ir jo tipas yra complexType.

XML struktūroje jis tampa šakniniu elementu, todėl iš jo kilęs modelis irgi nurodomas kaip šakninis modelis, galintis eiti atskirai, ir nėra žymimas /:part.

Country element ir pats yra simpleType. Jo tipas šiuo atveju nurodomas paties elemento aprašyme

ir yra string. Šis string tipas DSA taip pat tampa string tipu.

  • numberOfMunicipalities element taip pat tampa Country modelio property. Jam tipas nurodytas atskirame simpleType, kuriame nurodoma, kad jo pagrindas (base) yra integer, ir nurodyti apribojimai (restriction). Šis base tipas ir yra konvertuojamas į DSA tipą, šiuo konkrečiu atveju - į integer tipą. Kadangi DSA netaiko apribojimų reikšmėms, tai visi apribojimai, kurie yra nurodyti restriction (šiame pavyzdyje, minInclusive) ignoruojami. Kadangi property pavadinimas turi būti sudarytas iš mažųjų raidžių, o tarpai tarp žodžių atskiriami pabraukimais (_), tai property pavadinimas tampa number_of_municipalities.

  • Sekantis elementas, <xs:element ref="governance"/>, neturi pavadinimo, bet jame yra atributas ref, kas nurodo, kad jo aprašymas referuojamas kitam, globaliam elementui, pavadinimu governance. Šiuo atveju iš šio element kuriamai property suteikiamas pavadinimas pagal ref atributą, o į jo ref stulpelį įrašomas modelio, sukurto iš referuojamo element, pavadinimas.

  • iš atskirai apibrėžto elemento <xs:element ref="governance"/> sukuriamas model Governance.

Santrauka: XSD elementų ir DSA Atitikimas#

attribute#

XSD attribute atitinka DSA loginio modelio property.

attribute atributo name formuojamas property pavadinimas. Jei name susideda iš kelių žodžių, property pavadinimas taip pat susidės iš kelių žodžių, tačiau jie bus mažosiomis raidėmis ir atskirti pabraukimo ženklu (_).

property.source yra formuojamas iš attribute atributo name, priekyje pridedant @.

Jei attribute tipas yra nurodytas attribute elemente esančiu type atributu, tai property tipas formuojamas iš attribute, naudojantis xd_type_conversion.

Jei attribute tipas aprašytas simpleType, tai property.type formuojamas iš šio simpleType viduje esančio restriction base nurodyto type.

Jei attribute elemento sudėtyje yra annotation, iš jo formuojamas aprašymas - property.description.

Jei attribute turi atributą use su reikšme required, tai prie property pavadinimo pridedama required žymė, reiškianti, kad ši property yra privaloma.

Pavyzdys

Duomenys

<country name="France" capital="Paris" />

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xs:element name="country">
        <xs:complexType>
            <xs:attribute name="name" type="xs:string" use="required"/>
            <xs:attribute name="capital" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>

</xs:schema>

Struktūros aprašas

dataset

model

property

type

ref

source

prepare

level

schema

xsd

country.xsd

xsd

Country

/country

0

name

string

@name

capital

string

@capital

Pavyzdyje:

  • XSD attribute kurio name reikšmė yra name tampa property su pavadinimu name. Jo tipas yra string, tai konvertuojasi į DSA property.type string. property.source padaromas iš attribute name name, prie jo pridedant @ ir tampa @name.

  • XSD attribute kurio name reikšmė yra capital tampa property su pavadinimu capital. Jo tipas yra string, todėl konvertuojasi į DSA property.type string. property.source padaromas iš attribute name capital, prie jo pridedant @ ir tampa @capital.

simpleType#

Jei elemento ar atributo tipas aprašytas naudojant simpleType, į DSA tipą jis konvertuojamas naudojant konvertavimo lentelę xsd_type_conversion.

simpleType viduje gali būti restriction arba extension. Jie abu naudojami smulkesniam simpleType aprašymui. Dauguma jų naudojami duomenų validavimui, o DSA duomenų validavimo taisyklės netaikomos, tai šie apribojimai dažniausiai yra ignoruojami. Jų aprašymus rasite žemiau.

Jei simpleType elementas turi annotation, jo turinys pridedamas prie iš šį simpleType naudojančio elemento sukurtos property aprašymo: property.description.

simpleType gali būti aprašomas ir atskirai. Tokiu atveju, iš jo nustatytas property.type bus pridėtas toms property, kurios sukurtos iš į šį tipą referuojančių elementų arba atributų.

Pavyzdys

Duomenys

<numberOfMunicipalities>5</numberOfMunicipalities>

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="country">
        <xs:complexType>
            <xs:element name="population">
          <xs:simpleType>
            <xs:restriction base="xs:integer">
              <xs:minInclusive value="1" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        </xs:complexType>
    </xs:element>

</xs:schema>

Struktūros aprašas

Pavyzdyje:

complexType#

complexType gali būti arba element sudėtyje, arba atskirai. Jei complexType yra element sudėtyje, iš jų abiejų kartu kuriamas model. model struktūra nustatoma iš complexType, o pavadinimas - iš element atributo name.

Jei complexType yra aprašytas atskirai, iš jo kuriamas model, kurio pavadinimas nustatomas iš complexType pavadinimo.

complexType gali turėti atributą mixed. Jis reiškia, kad šiuo complexType aprašytas element turės galimybę viduje turėti teksto. Tokiu atveju, prie model pridedama property su pavadinimu text ir tipu string. Jos property.source yra text().

Jei complexType sudėtyje yra choice elementas ir šio elemento atributas maxOccurs yra daugiau, nei 1 arba yra unbounded, iš šio complexType kuriama po vieną model kiekvienam choice pasirinkimui, kai šis pasirinkimas pridedamas prie kitų property.

Jei complexType viduje yra complexContent, kurio viduje yra extension, kurio base rodo į kitą, atskirai apibrėžtą elementą, tai prie model, stulpelyje prepare, nurodoma funkcija :function:`extends()`, jos parametru nurodžius model, kuris buvo sukurtas iš to tipo.

complexType sudėtyje gali būti įvairios konstrukcijos, aprašančios atributus ir elementus, iš kurių šiam model formuojamos property:

  • attribute

  • sequence

  • choice

  • all

  • simpleContent

  • complexContent

sequence#

sequence elementas būna complexType sudėtyje. Jis nurodo element elementų seką. Kiekvienas sequence viduje esantis element yra apdorojamas, ir iš jo sukurta savybė ar savybės pridedamos prie iš complexType sukurto modelio.

Jei sequence viduje yra choice, kurio maxOccurs yra "1", tai kiekvienam šio choice pasirinkimui iš jo ir likusių savybių kuriamas atskiras modelis.

Jei sequence turi atributą maxOccurs ir jo reikšmė yra daugiau nei 1 ar yra "unbounded", tai kiekviena property, sukurto iš sequence viduje esančių elementų, tampa masyvu, kas reiškia, kad prie jos pavadinimo prisideda `[], o jei jos tipas būtų buvęs ref, jis pasikeičia į backref.

choice#

Jei choice elemento atributas maxOccurs yra lygus "1", tai choice verčiamas į DSA lygiai taip pat, kaip ir sequence.

Jei choice elemento atributas maxOccurs yra daugiau nei "1" arba yra "unbounded", tai su kiekvienu šio choice viduje esančiu pasirinkimu (tai gali būti element, sequence ar kitas choice) bus kuriamas atskiras modelcomplexType, kurio sudėtyje yra šis choice (tiesiogiai, ar kito sequence ar choice viduje).

Pavyzdys

Duomenys

Pirmas variantas:

<country>
    <population>800000</population>
    <area>700.5</area>
    <king_or_queen>Elžbieta II</king_or_queen>
</country>

Antras variantas:

<country>
    <population>1000000</population>
    <area>500.0</area>
    <president>Ona Grybauskaitė</president>
</country>

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="country">
        <xs:complexType>
            <xs:element name="population" type="xs:integer" />
            <xs:element name="area" type="xs:decimal" />
            <xs:choice maxOccurs="1">
                <xs:element name="president" type="xs:string" />
                <xs:element name="king_or_queen" type="xs:string" />
            </xs:choice>

        </xs:complexType>
    </xs:element>

</xs:schema>

**Struktūros aprašas - **

all#

Elementas all reiškia, kad jo viduje aprašyti elementai turi eiti nurodyta tvarka, ir maksimalliai gali būti po 1 kartą. Minimaliai gali būti taip, kaip nurodyta prie kiekvieno elemento naudojant minOccurs. Taigi, iš kiekvieno all viduje esamų elementų bus kuriama savybė, ir galbūt modelis, kaip nurodyta element.

complexContent#

complexContent būna complexType viduje ir aprašo sudėtinį turinį.

complexContent viduje būna extension, kuris turi atributą base. Šis atributas nurodo, kokio kito tipo pagrindu kuriamas šis tipas. Iš base nurodomo tipo sukurtas modelis įdedamas į iš šio complexContent tėvinio complexType prepare stulpelyje nurodomą funkciją :function:`extends()`.

extension viduje gali būti sequence, choice ir all, o taip pat attribute.

Iš šių attribute bei iš sequence, choice ir all viduje esančių element kuriamos savybės, ir pridedamos prie iš complexType sukurto modelio, pagal tas pačias taisykles, kaip ir iš tiesiogiai complexType esančių tokių pačių elementų.

Pavyzdys

Duomenys

<example>
    <country id="C1">
        <name>Lithuania</name>
        <capital>Vilnius</capital>
    </country>

    <city id="CT1">
        <name>Kaunas</name>
        <country>Lithuania</country>
    </city>
</example>

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

    <xs:complexType name="Place">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="Country">
        <xs:complexContent>
            <xs:extension base="Place">
                <xs:sequence>
                    <xs:element name="capital" type="xs:string"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="City">
        <xs:complexContent>
            <xs:extension base="Place">
                <xs:sequence>
                    <xs:element name="country" type="xs:string"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:element name="country" type="Country"/>
    <xs:element name="city" type="City"/>

</xs:schema>

**Struktūros aprašas - **

dataset

model

property

type

ref

source

prepare

level

xsd

Pavyzdyje:

simpleContent#

simpleContent elementas būna viduje complexType elemento. Viduje simpleContent elemento gali būti arba restriction arba extension elementas.

Jei simpleContent viduje naudojamas extension, tai extension viduje nurodomi attribute. Iš kiekvieno jų kuriama property ir pridedama prie model, sukurto iš xsd_complex_type, kurio viduje yra. Taip pat, prie modelio, sukurto iš xsd_complex_type pridedama property pavadinimu text ir jai priskiriamas tipas, kuris gaunamas iš base, pagal tipų siejimo lentelę xsd_type_conversion.

Jei simpleContent viduje naudojamas restriction, tai reiškia, kad tipas, kurio viduje yra šis mazgas, yra apribojamas. Apribojimai gali būti tokie, kaip minimalios ar maximalios reikšmės, ilgis ar kitos duomenų validacijos taisyklės. Dauguma jų yra ignoruojami, nes DSA duomenų reikšmių apribojimui įrankių neturi. Tačiau, jei restriction viduje yra enumeration, tai išvardintos reikšmės perkeliamos į enum. Išsamiau paaiškinta prie enumeration.

enumeration#

enumeration išvardija reikšmes, iš kurių gali būti pasirenkama element arba xsd_attribute reikšmė. DSA jo atitiktis yra enum. enumeration būna xsd_simple_type sudėtyje esančio restriction viduje, o šis xsd_simple_type aprašo element arba attribute tipą. Taigi, iš enumeration gautas reikšmių sąrašas perkeliamas į DSA savybės, suformuotos iš element arba attribute enum reikšmes.

Pavyzdys

Duomenys

Pirmas variantas:

<country>
    <population>800000</population>
    <area>700.5</area>
    <king_or_queen>Elžbieta II</king_or_queen>
</country>

Antras variantas:

<country>
    <population>1000000</population>
    <area>500.0</area>
    <president>Ona Grybauskaitė</president>
</country>

Schema


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="Country">
<xs:complexType>
<xs:sequence>

<xs:element name="name" type="xs:string" /> <xs:element name="head_of_state">

<xs:simpleType>
<xs:restriction base="xs:string">

<xs:enumeration value="President" /> <xs:enumeration value="Monarch" /> <xs:enumeration value="PrimeMinister" />

</xs:restriction>

</xs:simpleType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

**Struktūros aprašas - **

dataset

model

property

type

ref

source prepare

level

schema

xsd

country.xsd

xsd

Country

/country

0

name

string

name/text()

head_of_state

string

head_of_state/text()

enum

President

Monarch

PrimeMinister

annotation#

annotation viduje būna informacija apie elementą, kurio viduje jis yra. Jo viduje gali būti elementai documentation ir union. union elementas ignoruojamas, o documentation viduje esantis tekstas perkeliamas į lauką property.description arba į model.description, kuris kuriamas iš element ar attribute, kurio viduje annotation yra.

Pavyzdys

Duomenys

<Country name="Lithuania">
    <Capital>Vilnius</Capital>
</Country>

Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="Country">
        <xs:annotation>
            <xs:documentation>
                Represents a country, with its name as and its capital.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Capital" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>
                            Represents the capital city of the country.
                        </xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Specifies the name of the country.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

</xs:schema>

Struktūros aprašas

documentation#

documentation elementas visada būna viduje annotation elemento ir iš jų abiejų kartu formuojamas aprašymas - model.description arba model.description. Daugiau informacijos prie annotation

restriction#

restriction yra taikomas galimų duomenų reikšmių ribojimui, kaip pavyzdžiui, minimalioms ar maksimalioms reikšmėms, teksto ilgio ribojimams. DSA šie ribojimai neaprašomi, taigi dauguma šių žymių ignoruojama.

Vienintelis atvejis, kai restriction perkeliamas į DSA, yra, kai jis naudojamas kartu su enumeration. Tai naudojama aprašyti išvardijamoms galimoms reikšmėms. Daugiau aprašyta prie enumeration.

extension#

extension mazgas visada eina viduje xsd_simple_type arba xsd_complex_type. Kaip jis veikia šiuose mazguose, aprašyta prie jų.

union#

union#

Atributai#

base#

base naudojamas viduje extension arba restriction, kai norima išplėsti arba susiaurinti tam tikro tipo reikšmes. Daugiau apie base naudojimą aprašyta prie complexContent ir prie simpleContent.

unique#

minOccurs#

minOccurs naudojamas nurodyti elemento minimalų pasikartojimų skaičių. Pagal šį atributą taip pat galim nustatyti, ar elementas privalomas, ar ne. Jei minOccurs yra lygus 0, tai elementas neprivalomas, o jei didesnis nei 0, elementas privalomas. DSA privalomumas nurodomas prie property.name pridedant required jei ji yra privaloma, arbe nepridedant nieko, jei neprivaloma.

Jei element turi atributą minOccurs, kurio reikšmė lugi '0', reiškia iš šio elemento sukurta savybė yra neprivaloma, ir žymė required nepridedama, o jei minOccurs atributo reikšmė yra 1 arba didesnė, arba jei šis atributas visai nenurodytas (pagal nutylėjimą jo reikšmė lygi 1), reiškia, kad iš jo sukurta savybė yra privaloma ir prie jos pavadinimo pridedama žymė required.

maxOccurs#

maxOccurs žymi, kiek daugiausiai kartų elementas gali pasikartoti. Jei ši reikšmė yra 1, arba jei šis atributas iš viso nenurodytas (jo numatytoji reikšmė yra 1), reiškia elementas gali būti tik vieną kartą. Tokiu atveju, DSA tai yra įprasta, vieną objektą ar savybę žyminti property. Jei maxOccurs reikšmė yra daugiau nei 1 arba unbounded, tai reiškia, kad elementas gali pasikartoti daug kartų, tai iš jo padaryta property bus masyvas, ir prie jos pavadinimo bus pridėti laužtiniai skliaustai ([]), o jei tai yra į kitą model rodanti savybė, tai jos tipas bus ne ref, bet backref.

nillable#

type#

XSD tipas gali būti nurodytas pačiame elemente, nurodant atributą type, arba aprašytas po jo einančiame simpleType arba complexType.

Jei tipas aprašytas pačiame elemente ar atribute, į DSA property.type jis konvertuojamas naudojant konvertavimo lentelę xsd_type_conversion.

Taip pat elemento tipas gali būti aprašytas naudojant simpleType ir complexType.

use#

use naudojamas aprašant attribute, ir nurodo, ar elementas yra privalomas, ar ne. Jei use nenurodytas, naudojama jo numatytoji reikšmė, kuri yra optional, ir tai reiškia, kad attribute nėra privalomas, taigi DSA jis taip pat nežymimas kaip privalomas. Jei use reikšmė yra "required", reiškia, kad šis attribute yra privalomas, ir DSA prie jo pavadinimo pridedama žymė required.

Duomenų tipai#

XSD tipas (type)

DSA tipas (type)

string

string

boolean

boolean

decimal

number

float

number

double

number

duration

string

dateTime

datetime

time

time

date

date

gYearMonth

date;enum;M

gYear

date;enum;Y

gMonthDay

string

gDay

string

gMonth

string

hexBinary

string

base64Binary

binary;prepare;base64

anyURI

uri

QName

string

NOTATION

string

normalizedString

string

token

string

language

string

NMTOKEN

string

NMTOKENS

string

Name

string

NCName

string

ID

string

IDREF

string

IDREFS

string

ENTITY

string

ENTITIES

string

integer

integer

nonPositiveInteger

integer

negativeInteger

integer

long

integer

int

integer

short

integer

byte

integer

nonNegativeInteger

integer

unsignedLong

integer

unsignedInt

integer

unsignedShort

integer

unsignedByte

integer

positiveInteger

integer

yearMonthDuration

integer

dayTimeDuration

integer

dateTimeStamp

datetime

string