XML Schema element 元素
定义和用法
element 元素定义一个元素。
元素信息
出现次数 | 在架构中定义的元素的数目。 |
父元素 | schema、choice、all、sequence |
内容 | simpleType、complexType、key、keyref、unique |
语法
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=nonNegativeInteger|unbounded minOccurs=nonNegativeInteger nillable=true|false abstract=true|false block=(#all|list of (extension|restriction)) final=(#all|list of (extension|restriction)) Kaikki attribuutit > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? Merkkijono määrittää elementissä, joka voi esiintyä nollan tai yhden kerran, * Merkkijono määrittää elementin, joka voi esiintyä nollan tai useita kertoja.)
Atribuutti
id
Valinnainen. Määrittää elementin ainutlaatuisen ID:n.
name
Valinnainen. Määrittää elementin nimen. Jos isäelementti on schema-elementti, tämä ominaisuus on välttämätön.
ref
Valinnainen. Viittaus toiseen elementtiin. ref-ominaisuus voi sisältää nimenkerroksen. Jos isäelementti on schema-elementti, tätä ominaisuutta ei käytetä.
type
Valinnainen. Määrittää sisäänrakennetun datatyyppin nimen tai määrittää simpleType- tai complexType-elementin nimen.
substitutionGroup
Valinnainen. Määrittää elementin, joka voi korvata kyseisen elementin. Tämä elementti täytyy olla samaa tyyppiä tai johdettu tietystä elementtipyydöstä.
Jos isäelementti ei ole schema-elementti, tätä ominaisuutta ei voida käyttää.
default
Valinnainen. Määrittää elementille oletusarvon ( käytetään vain, kun elementin sisältö on yksinkertainen tyyppi tai textOnly ).
fixed
Valinnainen. Määrittää elementille vakion arvon ( käytetään vain, kun elementin sisältö on yksinkertainen tyyppi tai textOnly ).
form
Valinnainen. Elementin muoto. Oletusarvo on sisältävän attribuutin schema-elementin elementFormDefault-ominaisuuden arvo. Arvon täytyy olla seuraavista merkkijonoista yksi: "qualified" tai "unqualified".
Jos emoottori on schema-elementti, tätä ominaisuutta ei voi käyttää.
- Jos arvo on "unqualified", elementtiä ei tarvitse määrittää nimenkerroksen avulla.
- Jos arvo on "qualified", elementtiä täytyy määrittää nimenkerroksen avulla.
maxOccurs
Valinnainen. Määrittää elementin elementtiä isäelementissä voimassa olevan enimmäismäärän. Arvo voi olla yhtä suuri tai suurempi kuin nolla oleva kokonaisluku. Jos et halua asettaa enimmäismäärälle mitään rajoitusta, käytä merkkijonoa "unbounded". Oletusarvo on 1.
Jos emoottori on schema-elementti, tätä ominaisuutta ei voi käyttää.
minOccurs
Valinnainen. Määrittää elementin vähimmäisilman määrän emoottorissa. Arvo voi olla yhtä suuri tai suurempi kuin nolla. Oletusarvo on 1.
Jos emoottori on schema-elementti, tätä ominaisuutta ei voi käyttää.
nillable
Valinnainen. Indikoi voidaanko elementille asettaa selkeä nolla-arvo. Tämä koskee elementin sisältöä eikä elementin ominaisuutta. Oletusarvo on false.
Jos nillable on true, elementin instanssia voidaan asettaa nil-ominaisuudeksi true. nil-ominaisuus määritellään instanssin XML-rakennetyypin osana.
Esimerkiksi seuraavassa kohdassa määritellään yksittäinen elementti ja asetetaan nillable true.
<xs:element name="myDate" type="xs:date" nillable="true"/>
Seuraavassa kohdassa käytetään tätä elementtiä ja asetetaan selkeä nolla-arvo (nil-ominaisuus asetettu true).
<myDate xsi:nil="true"></myDate>
abstract
Valinnainen. Indikoi, voidaanko elementtiä käyttää instanssidokumentissa. Jos arvo on true, elementti ei voi olla instanssidokumentissa. Päinvastoin, substitutionGroup-ominaisuus sisältää muiden elementtien, joiden QNamen (Qualified Name) on tämän elementin määritetty, ja ne on oltava tämän elementin sijalla. Useita elementtejä voidaan viitata substitutionGroup-ominaisuudessaan. Oletusarvo on false.
block
Valinnainen. Johdettu tyyppi. block-ominaisuus estää määritellyn johdettujen tyyppien elementtien käyttämisen korvaamiseen. Arvo voi sisältää #all tai listan, joka on extension, restriction tai substitutionin alijoukko:
- extension - Estää johdettujen elementtien korvaamisen laajennuksen sijaan.
- restriction - Estää johdettujen elementtien korvaamisen rajoituksen sijaan.
- substitution - Estää korvaamisen johdettujen elementtien sijaan.
- #all - Estää kaikki johdettujen elementtien korvaamisen tämän elementin sijaan.
final
Valinnainen. Aseta elementti-elementin lopullisen ominaisuuden oletusarvo. Jos emoottori ei ole schema-elementti, tätä ominaisuutta ei voi käyttää. Arvo voi sisältää #all tai listan, joka on extension tai restrictionin alijoukko:
- laajennus - Estää johdettujen elementtien käytön korvaamaan tätä elementtiä laajennuksella
- rajoitus - Estää johdettujen elementtien käytön korvaamaan tätä elementtiä rajoituksella
- #all - Estää kaikkien johdettujen elementtien käytön korvaamaan tätä elementtiä
Kaikki attribuutit
Valinnainen. Määrittelee minkä tahansa muun schema-vapauden määrittämättömät attribuutit.
Esimerkki
Esimerkki 1
Seuraava esimerkki on schema, jossa on neljä yksinkertaista elementtiä: "fname", "lname", "age" ja "dateborn", tyyppien ollessa string, nonNegativeInteger ja date:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="fname" type="xs:string"/> <xs:element name="lname" type="xs:string"/> <xs:element name="age" type="xs:nonNegativeInteger"/> <xs:element name="dateborn" type="xs:date"/> </xs:schema>
Esimerkki 2
Seuraava esimerkki on schema, jossa on monimutkainen "note"-elementti. "note"-elementti sisältää neljä yksinkertaista elementtiä: "to", "from", "heading" ja "body":
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Esimerkki 3
Tämä esimerkki on samanlainen kuin esimerkki 2, mutta tässä esimerkissä valitsimme käyttää ref-ominaisuutta elementin nimen viittaamiseen:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element ref="to"/> <xs:element ref="from"/> <xs:element ref="heading"/> <xs:element ref="body"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:schema>