Το στοιχείο 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".