Διατήρηση/Facets XSD
- Προηγούμενη σελίδα Χαρακτηριστικά XSD
- Επόμενη σελίδα Σύνθετο στοιχείο XSD
Ο περιορισμός (restriction) χρησιμοποιείται για να καθορίσει τις αποδεκτές τιμές για ένα στοιχείο XML ή μια ιδιότητα. Ο περιορισμός του στοιχείου XML ονομάζεται faceted.
Περιορισμοί τιμών
Η παρακάτω παράδειγμα καθορίζει έναν στοιχείο με ονομασία "age" που έχει περιορισμό. Η τιμή του "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 στοιχείου σε ένα σύνολο αποδεκτών τιμών, πρέπει να χρησιμοποιήσουμε περιορισμούς κατάλογου (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 στοιχείου σε μια σειρά από χρησιμοποιήσιμα αριθμούς ή γράμματα, πρέπει να χρησιμοποιήσουμε περιορισμούς μοτίβου (pattern constraint).
Η παρακάτω παράδειγμα ορίζει έναν στοιχείο με ορισμένο όνομα "letter" με περιορισμένη τιμή. Αποδεκτές είναι μόνο ένας πεζός χαρακτήρας από το α έως το 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" με περιορισμένη τιμή. Αποδεκτές είναι τρεις κεφαλαία ή πεζά γράμματα από το α έως το 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" που έχει περιορισμό. Οι αποδεκτοί τύποι είναι μια ζυγία ή περισσότερες ζυγίες γράμματα, όπου κάθε ζυγία αποτελείται από μια πεζή και μια κεφαλαία γραφή. Για παράδειγμα, το "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 χαρακτήρες, οι οποίοι πρέπει να είναι κεφαλαία ή πεζά γράμματα a-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 θα αφαιρέσει όλους τους κεντικούς χαρακτήρες (παράθυρα, επιστροφές χαρακτήρων, κενά και tab):
<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 | 定义数值的上限。所允许的值必须小于或等于此值。 |
maxLength | 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。 |
minExclusive | 定义数值的下限。所允许的值必需大于此值。 |
minInclusive | Ορισμός του ελάχιστου ορίου του αριθμού. Οι επιτρεπόμενες τιμές πρέπει να είναι μεγαλύτερες ή ίσες με αυτό το όριο. |
minLength | Ορισμός του ελάχιστου αριθμού χαρακτήρων ή στοιχείων που επιτρέπονται. Πρέπει να είναι μεγαλύτερη από ή ίση με 0. |
pattern | Ορισμός της ακριβούς σειράς χαρακτήρων που αποδέχονται. |
totalDigits | Ορισμός της ακριβούς θέσης των αριθμητικών που επιτρέπονται. Πρέπει να είναι μεγαλύτερη από 0. |
whiteSpace | Ορισμός της επεξεργασίας των κενών χαρακτήρων (παραβιάσεις, επανεισαγωγές, κενά και tab) |
- Προηγούμενη σελίδα Χαρακτηριστικά XSD
- Επόμενη σελίδα Σύνθετο στοιχείο XSD