XSD#
XML Schema Definition (XSD) yra schemų kalba skirta XML duomenims aprašyti.
XSD specifikacija susideda iš šių dalių:
- W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures 
- W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes 
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:
- Countrymodelis yra Jungtinis modelis ir jungtinio modelio Šakninis modelis.
- Cityyra Dalinis modelis, kadangi tai žymi- /:partžymė, taip pat- Cityneturi užpildyto- model.sourcestulpelio, tai reiškia, kad tiesiogiai- Cityduomenų gauti galimybės nėra, juos galima gauti tik per- Countryjungtinį modelį, kurio sudėtyje yra ir- City, prieinamas per- Country/citiessavybę.
- Country/citiessavybė turi- expand()funkciją įrašytą į- property.prepare, kuri įtraukia visas tiesiogines- Citysavybes į jungtinį- Countrymodelį.
Elementai#
element#
XSD element atitinka DSA loginio modelio:
- model- jei elemento tipas yra complexType,
- property- jei elemento tipas yra simpleType.
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.sourceir š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.sourceyra 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.sourceformuojamas 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 - refar- typereferuotų į šį 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- elementtampa 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.
- name- elementtampa- model- Country- property, nes jis yra viduje complexType, kuris yra viduje
- Country- elementir pats yra simpleType. Jo tipas šiuo atveju nurodomas paties elemento aprašyme
- ir yra - string. Šis- stringtipas DSA taip pat tampa- stringtipu.
- numberOfMunicipalities- elementtaip pat tampa- Countrymodelio- property. Jam tipas nurodytas atskirame simpleType, kuriame nurodoma, kad jo pagrindas (- base) yra- integer, ir nurodyti apribojimai (- restriction). Šis- basetipas ir yra konvertuojamas į DSA tipą, šiuo konkrečiu atveju - į- integertipą. Kadangi DSA netaiko apribojimų reikšmėms, tai visi apribojimai, kurie yra nurodyti- restriction(šiame pavyzdyje,- minInclusive) ignoruojami. Kadangi- propertypavadinimas turi būti sudarytas iš mažųjų raidžių, o tarpai tarp žodžių atskiriami pabraukimais (_), tai- propertypavadinimas 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- propertysuteikiamas pavadinimas pagal- refatributą, o į jo- refstulpelį įrašomas modelio, sukurto iš referuojamo element, pavadinimas.
- iš atskirai apibrėžto elemento - <xs:element ref="governance"/>sukuriamas- modelGovernance.
Santrauka: XSD elementų ir DSA Atitikimas#
attribute#
XSD attribute atitinka DSA loginio modelio property.
Iš 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 - attributekurio- namereikšmė yra- nametampa- propertysu pavadinimu- name. Jo tipas yra- string, tai konvertuojasi į DSA- property.type- string.- property.sourcepadaromas iš- attribute- name- name, prie jo pridedant- @ir tampa- @name.
- XSD - attributekurio- namereikšmė yra- capitaltampa- propertysu pavadinimu- capital. Jo tipas yra- string, todėl konvertuojasi į DSA- property.type- string.- property.sourcepadaromas 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:
- iš - simpleType, kurio viduje nurodytas restriction, kurio base yra- string, gaunamas DSA- property.type- string.
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 model iš complexType, 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:
- complexType Place tampa - modelPlace, o complexType Place viduje esantis element- nameir attribute- idtampa jo savybėmis (- property).
- complexType City tampa - modelCity, o complexType City viduje esančiame :rex:`xsd_extension` esantis element- countrytampa- property- country.- extension base atributas nurodo į complexType - Place, todėl iš jo sukurtas- model- Placenurodomas- model- City- preparestulpelyje esančioje :function:`extends` funkcijoje. Tai reiškia, kad vėliau, interpretuojant šį DSA, visos- model- Placeesančios- propertyįtraukiamos į- modelCity.
- analogiškai su - Country.
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.