XSD Περιορισμοί / Facets
- Previous Page XSD Attributes
- Next Page XSD Elements
Ο περιορισμός (restriction) χρησιμοποιείται για να ορίσουμε τις αποδεκτές τιμές για ένα XML στοιχείο ή ιδιότητα. Ο περιορισμός του στοιχείου XML ονομάζεται face.
Περιορισμός τιμών
Το παρακάτω παράδειγμα ορίζει ένα στοιχείο με ονομασία "age" που έχει ορισμένο όριο με τιμές που δεν είναι κάτω από 0 ή πάνω από 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>
Περιορισμός μιας ομάδας τιμών
Για να περιορίσουμε το περιεχόμενο μιας XML εLEMENT σε ένα σύνολο αποδεκτών τιμών, χρησιμοποιούμε περιορισμούς καταλόγου (enumeration constraint).
Το παρακάτω παράδειγμα ορίζει ένα στοιχείο με ονομασία "car" που έχει ορισμένο όριο με 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>
Το παρακάτω παράδειγμα μπορεί επίσης να γραφτεί ως:
<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>
Σχόλια:Σε αυτή την περίπτωση, ο τύπος "carType" μπορεί να χρησιμοποιηθεί από άλλα στοιχεία, επειδή δεν είναι μέρος του στοιχείου "car".
Περιορισμός μιας σειράς τιμών
Για να ορίσουμε την περιεχόμενη περιορισμένης έκτασης μιας XML εLEMENT, χρησιμοποιούμε περιορισμούς μοτίβου (pattern constraint).
Το παρακάτω παράδειγμα ορίζει ένα στοιχείο με ονομασία "letter" που έχει ορισμένο όριο με πεζά γράμματα a - z ενός από αυτά:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Ο επόμενο παράδειγμα ορίζει ένα στοιχείο με ονομασία "initials" που έχει ορισμένο όριο με κεφαλαία γράμματα 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>
Ο επόμενο παράδειγμα επίσης ορίζει ένα στοιχείο με ονομασία "initials" που έχει ορισμένο όριο με κεφαλαία ή πεζά γράμματα 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>
Το επόμενο παράδειγμα ορίζει έναν στοιχείο με ονομασία "choice" που έχει περιορισμό. Οι αποδεκτοί όροι είναι οι γραμμές x, y ή z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Το επόμενο παράδειγμα ορίζει έναν στοιχείο με ονομασία "prodid" που έχει περιορισμό. Οι αποδεκτοί όροι είναι μια ακολουθία πέντε αριθμών αραβικού αλφαβήτου, και κάθε αριθμός έχει ως εύρος 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>
Επιπλέον περιορισμοί για μια σειρά τιμών
Το παράδειγμα που ακολουθεί ορίζει έναν στοιχείο με ονομασία "letter" που έχει περιορισμό. Οι αποδεκτοί όροι είναι μηδέν ή περισσότεροι χαρακτήρες από το α - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Το παράδειγμα που ακολουθεί ορίζει έναν στοιχείο με ονομασία "letter" που έχει περιορισμό. Οι αποδεκτοί όροι είναι ένα ζευγάρι ή περισσότερα ζευγάρια γραμμάτων, όπου κάθε ζευγάρι αποτελείται από μια μικρή γραμμή α - z ακολουθούμενη από μια μεγάλη γραμμή Α - Ζ. Για παράδειγμα, το "sToP" θα περάσει από την επιβεβαίωση αυτού του μοτίβου, αλλά το "Stop", "STOP" ή "stop" δεν θα περάσουν από την επιβεβαίωση:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Το παράδειγμα που ακολουθεί ορίζει έναν στοιχείο με ονομασία "gender" που έχει περιορισμό. Οι αποδεκτοί όροι είναι male ή female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Το παράδειγμα που ακολουθεί ορίζει έναν στοιχείο με ονομασία "password" που έχει περιορισμό. Οι αποδεκτοί όροι είναι μια γραμμή χαρακτήρων που αποτελείται από 8 χαρακτήρες, οι οποίοι πρέπει να είναι μεγάλες ή μικρές γραμμές α - z ή αριθμοί 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>
Ο περιορισμός των χαρακτήρων κενάς
Για να καθορίσουμε τον τρόπο επεξεργασίας των χαρακτήρων κενάς (whitespace characters), πρέπει να χρησιμοποιήσουμε τον περιορισμό whiteSpace.
Το παράδειγμα που ακολουθεί ορίζει έναν στοιχείο με ονομασία "address" που έχει περιορισμό. Ο περιορισμός whiteSpace έχει οριστεί ως "preserve", που σημαίνει ότι ο επεξεργαστής XML δεν θα αφαιρέσει οποιαδήποτε χαρακτήρες κενάς:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Αυτό το παράδειγμα ορίζει επίσης έναν στοιχείο με το όνομα "address" με περιορισμό. Ο περιορισμός whiteSpace έχει οριστεί σε "replace", που σημαίνει ότι ο επεξεργαστής XML θα αφαιρέσει όλους τους χαρακτήρες λευκής χώρης (παράθυρα, χαρακτήρες αναστροφής γραμμής, κενά και τάβλες):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Αυτό το παράδειγμα ορίζει επίσης έναν στοιχείο με το όνομα "address" με περιορισμό. Ο περιορισμός whiteSpace έχει οριστεί σε "collapse", που σημαίνει ότι ο επεξεργαστής XML θα αφαιρέσει όλους τους χαρακτήρες λευκής χώρης (παράθυρα, χαρακτήρες αναστροφής γραμμής, κενά και τάβλες θα αντικατασταθούν από κενά, οι κενές στο αρχείο θα αφαιρεθούν και οι πολλαπλές συνεχείς κενές θα συγχωνεύονται σε ένα μοναδικό κενό):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Περιορισμός μήκους
Για να περιορίσουμε το μήκος της τιμής ενός στοιχείου, πρέπει να χρησιμοποιήσουμε τους περιορισμούς length, maxLength και minLength.
Αυτό το παράδειγμα ορίζει έναν στοιχείο με το όνομα "password" με περιορισμό και ακριβή μήκος 8 χαρακτήρων:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Αυτό το παράδειγμα ορίζει επίσης έναν στοιχείο με το όνομα "password" με περιορισμό. Η τιμή του πρέπει να είναι τουλάχιστον 5 χαρακτήρες και το μέγιστο 8 χαρακτήρες:
<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>
Περιορισμός τύπου δεδομένων
Περιορισμός | Περιγραφή |
---|---|
enumeration | Ορίζει μια λίστα αποδεκτών τιμών |
fractionDigits | Ορίζει το μέγιστο αριθμό των δεκαδικών ψηφίων που επιτρέπεται. Πρέπει να είναι μεγαλύτερος ή ίσος με 0. |
length | Ορίζει την ακριβή αριθμοσύνολο των επιτρεπόμενων χαρακτήρων ή των στοιχείων της λίστας. Πρέπει να είναι μεγαλύτερη ή ίση με 0. |
maxExclusive | Ορίζει το ανώτερο όριο του αριθμητικού τιμήματος. Οι επιτρεπόμενες τιμές πρέπει να είναι μικρότερες από αυτήν την τιμή. |
maxInclusive | Define the upper limit of the number. The allowed values must be less than or equal to this value. |
maxLength | Define the maximum number of allowed characters or list items. It must be greater than or equal to 0. |
minExclusive | Define the lower limit of the number. The allowed values must be greater than this value. |
minInclusive | Define the lower limit of the number. The allowed values must be greater than or equal to this value. |
minLength | Define the minimum number of allowed characters or list items. It must be greater than or equal to 0. |
pattern | Define the exact sequence of acceptable characters. |
totalDigits | Define the exact number of decimal places allowed for Arabic numerals. It must be greater than 0. |
whiteSpace | Define the processing method for whitespace characters (newlines, carriage returns, spaces, and tabs). |
- Previous Page XSD Attributes
- Next Page XSD Elements