Το στοιχείο complexType του XML Schema
Ορισμός και χρήση
Το στοιχείο complexType ορίζει τον τύπο της δομής. Οι στοιχεία του τύπου της δομής περιέχουν άλλα στοιχεία και/ή ιδιότητες στο στοιχείο XML.
πληροφορίες στοιχείου
εμφάνιση | στο πλαίσιο της αρχιτεκτονικής είναι ανεπιθύμητο;στην περίπτωση του στοιχείου είναι μια φορά. |
γονέας στοιχείο | element, redefine, schema |
περιεχόμενο | annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
σύνταξη
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|λίστα από (extension|restriction)) final=(#all|λίστα από (extension|restriction)) any attributes > (annotation?,(simpleContent|complexContent|((group|all| choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))) </complexType>
(? ο σήμας δηλώνεται στο στοιχείο complexType, το στοιχείο μπορεί να εμφανίζεται μηδέν ή μια φορά, * ο σήμας δηλώνει στοιχείο που μπορεί να εμφανίζεται μηδέν ή πολλές φορές).
ιδιότητες
id
προαιρετικό. Να καθοριστεί το μοναδικό ID του στοιχείου.
name
προαιρετικό. Να καθοριστεί το όνομα του στοιχείου.
abstract
προαιρετικό. Να καθοριστεί αν επιτρέπεται η χρήση του τύπου στο έγγραφο της περιπτώσεως. Αν η τιμή είναι true, το στοιχείο δεν μπορεί να χρησιμοποιηθεί άμεσα με τον τύπο, αλλά πρέπει να χρησιμοποιηθεί ένας τύπος που προκύπτει από τον τύπο. Η προεπιλεγμένη τιμή είναι false.
mixed
προαιρετικό. Να καθοριστεί αν επιτρέπεται η παρουσία χαρακτηριστικών δεδομένων μεταξύ των υποστοιχείων του τύπου. Η προεπιλεγμένη τιμή είναι false.
- Αν το στοιχείο simpleContent είναι υποστοιχείο, δεν επιτρέπεται η ιδιότητα mixed.
- Αν το στοιχείο complexContent είναι υποστοιχείο, τότε η ιδιότητα mixed μπορεί να αντικατασταθεί από την ιδιότητα mixed του στοιχείου complexContent.
block
προαιρετικό. Να αποτρέπεται η χρήση του τύπου που προκύπτει από την εξέλιξη για να αντικαταστήσει τον τύπο που έχει καθορισμένο τύπο εξέλιξης. Η τιμή μπορεί να περιέχει #all ή μια λίστα, η οποία είναι υποσύνολο από extension ή restriction:
- extension - Να αποτρέπεται η χρήση του τύπου που προκύπτει από την εξέλιξη για να αντικαταστήσει τον τύπο.
- restriction - Να αποτρέπεται η χρήση του τύπου που προκύπτει από την εξέλιξη για να αντικαταστήσει τον τύπο.
- #all - Προστατεύει από όλες τις παραγώγους των σύνθετων τύπων που μπορούν να αντικαταστήσουν τον τύπο complexType.
final
Προαιρετικό. Προστατεύει από παραγώγους του τύπου complexType που ορίζεται. Η τιμή μπορεί να περιέχει #all ή μια λίστα που περιλαμβάνει extension ή restriction.
- extension - Προστατεύει από παραγώγους μέσω εκτάσεων.
- restriction - Προστατεύει από παραγώγους μέσω περιορισμού.
- #all - Προστατεύει από όλες τις παραγώγους (εκτάσεις και περιορισμούς).
any attributes
Προαιρετικό. Ορίζει οποιαδήποτε άλλη ιδιότητα με non-schema ονομαστικό χώρο.
Παράδειγμα
Παράδειγμα 1
Το παρακάτω παράδειγμα περιλαμβάνει έναν σύνθετο τύπο στοιχείου με το όνομα "note":
<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>
Παράδειγμα 2
Η παρακάτω παράδειγμα περιλαμβάνει έναν σύνθετο τύπο "fullpersoninfo", ο οποίος επεκτείνει τον τύπο κληρονομικότητας χρησιμοποιώντας τρεις επιπλέον στοιχεία (address, city και country) και προέρχεται από έναν άλλο σύνθετο τύπο "personinfo":
<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
Στο παραπάνω παράδειγμα, το στοιχείο "employee" πρέπει να περιέχει κατά σειρά τα παρακάτω στοιχεία: "firstname", "lastname", "address", "city" και "country".