XSD Begrensninger/Facetter
- Forrige side XSD Egenskaber
- Næste side XSD Komplekse elementer
Begrænsning (restriction) bruges til at definere de acceptable værdier for XML-elementer eller egenskaber. Begrænsning af XML-elementer kaldes facet.
Begrænsning af værdier
Dette eksempel definerer en element med navn "age" som er begrænset. Værdien af age må ikke være lavere end 0 eller højere end 120:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
Begrænsning af en gruppe værdier
For at begrænse indholdet af en XML-element til en gruppe af acceptable værdier, skal vi bruge en opretningsbegrænsning (enumeration constraint).
Nedenstående eksempel definerer et element med et specificeret navn "car". De acceptable værdier er kun: Audi, Golf, BMW:
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
Det foregående eksempel kan også skrives som:
<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Kommentar:I dette tilfælde kan typen "carType" bruges af andre elementer, fordi den ikke er en del af elementet "car".
Begrænsning af en række værdier
For at begrænse indholdet af en XML-element til en række brugbare tal eller bogstaver, skal vi bruge mønstervilkår (pattern constraint).
Nedenstående eksempel definerer et element med et specificeret navn "letter". De acceptable værdier er kun et enkelt lille bogstav a-z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Næste eksempel definerer et element med et specificeret navn "initials". De acceptable værdier er tre store bogstaver A-Z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Næste eksempel definerer også et element med et specificeret navn "initials". De acceptable værdier er tre store eller små bogstaver a-z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Næste eksempel definerer et element med et specificeret navn "choice". De acceptable værdier er en af bogstaverne x, y eller z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Næste eksempel definerer et element med en specificeret navn "prodid". De acceptable værdier er en sekvens af fem arabiske cifre, og hvert ciffer har et interval på 0-9:
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
Andre begrænsninger for en række værdier
Et andet eksempel definerer et element med et begrænset navn kaldet "letter". De acceptable værdier er nul eller flere bogstaver fra a-z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Et andet eksempel definerer et element med et begrænset navn kaldet "letter". De acceptable værdier er et par eller flere par af bogstaver, hvor hvert par består af en lille bogstav fulgt af et stort bogstav. For eksempel vil "sToP" passere denne model, men "Stop", "STOP" eller "stop" vil ikke kunne passere validiteten:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Et andet eksempel definerer et element med et begrænset navn kaldet "gender". De acceptable værdier er male eller female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Et andet eksempel definerer et element med et begrænset navn kaldet "password". De acceptable værdier er en række af 8 tegn, som skal være store eller små bogstaver a-z eller tal 0-9:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Begrænsning af blanke tegn
For at specificere behandlingen af blanke tegn (whitespace characters) skal vi bruge whiteSpace begrænsningen.
Et andet eksempel definerer et element med et begrænset navn kaldet "address". Denne whiteSpace begrænsning er sat til "preserve", hvilket betyder, at XML-behandleren ikke vil fjerne nogen blanke tegn:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Dette eksempel definerer også et element med et begrænset navn kaldet "address". Denne whiteSpace begrænsning er sat til "replace", hvilket betyder, at XML-behandleren vil fjerne alle blanke tegn (linjeskift, returtegn, mellemrum og tabulatorer):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Dette eksempel definerer også et element med navnet "address", der har en begrænsning. Denne whiteSpace-begrænsning er sat til "collapse", hvilket betyder, at XML-håndtereren vil fjerne alle blanke tegn (linjeskift, enter, mellemrum og tabulatorer vil blive erstattet af et mellemrum, og begyndelses- og slutmellemrum vil blive fjernet, samt flere sammenhængende mellemrum vil blive reduceret til et enkelt mellemrum):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Begrænsning af længde
For at begrænse længden af værdier i et element skal vi bruge begrænsninger som length, maxLength og minLength.
Dette eksempel definerer et element med navnet "password", der har en begrænsning. Værdien skal være præcis 8 tegn lang:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Dette eksempel definerer også et element med navnet "password", der har en begrænsning. Værdien skal være mellem 5 og 8 tegn:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Begrænsning af datatypen
Begrænsning | Beskrivelse |
---|---|
enumeration | Definerer en liste af accepterbare værdier |
fractionDigits | Definerer det maksimale antal decimalpladser for de tilladte værdier. Det skal være større end eller lig med 0. |
length | Definerer det præcise antal tilladte tegn eller elementer i en liste. Det skal være større end eller lig med 0. |
maxExclusive | Definerer numerisk øvre grænse. De tilladte værdier skal være mindre end denne værdi. |
maxInclusive | Definerer numerisk øvre grænse. De tilladte værdier skal være mindre end eller lig med denne værdi. |
maxLength | Definerer det maksimale antal tilladte tegn eller elementer i en liste. Det skal være større end eller lig med 0. |
minExclusive | Definerer numerisk nedre grænse. De tilladte værdier skal være større end denne værdi. |
minInclusive | Definerer nedre grænse for tallet. De tilladte værdier skal være større end eller lig med denne værdi. |
minLength | Definerer det mindste antal tilladte tegn eller elementer i en liste. Må være større end eller lig med 0. |
pattern | Definerer den præcise sekvens af tegn, der er acceptable. |
totalDigits | Definerer den præcise antal decimaler, der er tilladt for de tilladte arabiske cifre. Må være større end 0. |
whiteSpace | Definerer behandlingen af blanke tegn (linjeskift, enter, mellemrum og tabulatorer). |
- Forrige side XSD Egenskaber
- Næste side XSD Komplekse elementer