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:
Country
modelis yra Jungtinis modelis ir jungtinio modelio Šakninis modelis.City
yra Dalinis modelis, kadangi tai žymi/:part
žymė, taip patCity
neturi užpildytomodel.source
stulpelio, tai reiškia, kad tiesiogiaiCity
duomenų gauti galimybės nėra, juos galima gauti tik perCountry
jungtinį modelį, kurio sudėtyje yra irCity
, prieinamas perCountry/cities
savybę.Country/cities
savybė turiexpand()
funkciją įrašytą įproperty.prepare
, kuri įtraukia visas tiesioginesCity
savybes į jungtinįCountry
modelį.
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ą nenurodomasmodel.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 priemodel
, kuris kuriamas iš elemento, kurį aprašo šis complexType. Šiosproperty.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
artype
referuotų į šį elementą, iš jo sukuriamaproperty
, ir pridedama prie specialausResource
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
.
name
element
tampamodel
Country
property
, nes jis yra viduje complexType, kuris yra viduje
Country
element
ir pats yra simpleType. Jo tipas šiuo atveju nurodomas paties elemento aprašymeir yra
string
. Šisstring
tipas DSA taip pat tampastring
tipu.
numberOfMunicipalities
element
taip pat tampaCountry
modelioproperty
. Jam tipas nurodytas atskirame simpleType, kuriame nurodoma, kad jo pagrindas (base
) yrainteger
, ir nurodyti apribojimai (restriction
). Šisbase
tipas ir yra konvertuojamas į DSA tipą, šiuo konkrečiu atveju - įinteger
tipą. Kadangi DSA netaiko apribojimų reikšmėms, tai visi apribojimai, kurie yra nurodytirestriction
(šiame pavyzdyje,minInclusive
) ignoruojami. Kadangiproperty
pavadinimas turi būti sudarytas iš mažųjų raidžių, o tarpai tarp žodžių atskiriami pabraukimais (_), taiproperty
pavadinimas tampanumber_of_municipalities
.Sekantis elementas,
<xs:element ref="governance"/>
, neturi pavadinimo, bet jame yra atributasref
, kas nurodo, kad jo aprašymas referuojamas kitam, globaliam elementui, pavadinimugovernance
. Šiuo atveju iš šio element kuriamaiproperty
suteikiamas pavadinimas pagalref
atributą, o į joref
stulpelį įrašomas modelio, sukurto iš referuojamo element, pavadinimas.iš atskirai apibrėžto elemento
<xs:element ref="governance"/>
sukuriamasmodel
Governance.
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
attribute
kurioname
reikšmė yraname
tampaproperty
su pavadinimuname
. Jo tipas yrastring
, tai konvertuojasi į DSAproperty.type
string
.property.source
padaromas išattribute
name
name
, prie jo pridedant@
ir tampa@name
.XSD
attribute
kurioname
reikšmė yracapital
tampaproperty
su pavadinimucapital
. Jo tipas yrastring
, todėl konvertuojasi į DSAproperty.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:
iš
simpleType
, kurio viduje nurodytas restriction, kurio base yrastring
, gaunamas DSAproperty.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
model
Place, o complexType Place viduje esantis elementname
ir attributeid
tampa jo savybėmis (property
).complexType City tampa
model
City, o complexType City viduje esančiame :rex:`xsd_extension` esantis elementcountry
tampaproperty
country
.extension base atributas nurodo į complexType
Place
, todėl iš jo sukurtasmodel
Place
nurodomasmodel
City
prepare
stulpelyje esančioje :function:`extends` funkcijoje. Tai reiškia, kad vėliau, interpretuojant šį DSA, visosmodel
Place
esančiosproperty
įtraukiamos įmodel
City.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
.