XSD 复合元素
Το συνδυασμένο στοιχείο περιέχει άλλα στοιχεία και/ή ιδιότητες.
Τι είναι το συνδυασμένο στοιχείο;
Το συνδυασμένο στοιχείο αναφέρεται σε στοιχεία XML που περιέχουν άλλα στοιχεία και/ή ιδιότητες.
Υπάρχουν τέσσερις τύποι συνδυασμένων στοιχείων:
- Κενά στοιχεία
- Στοιχεία που περιέχουν άλλα στοιχεία
- Στοιχεία που περιέχουν μόνο κείμενο
- Στοιχεία που περιέχουν στοιχεία και κείμενο
Σημείωση:Όλα τα παραπάνω στοιχεία μπορούν να περιέχουν ιδιότητες!
Παραδείγματα συνδυασμένων στοιχείων
Το συνδυασμένο στοιχείο, "product", είναι κενό:
<product pid="1345"/>
Το συνδυασμένο στοιχείο, "employee", περιέχει μόνο άλλα στοιχεία:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Το συνδυασμένο στοιχείο, "food", περιέχει μόνο κείμενο:
<food type="dessert">Ice cream</food>
Το συνδυασμένο στοιχείο, "description", περιέχει στοιχεία και κείμενο:
<description> Αυτό συνέβη στις <date lang="norwegian">03.03.99</date> .... </description>
Πώς ορίζεται το συνδυασμένο στοιχείο;
Παρακαλώ δείτε αυτό το συνδυασμένο στοιχείο XML, "employee", που περιέχει μόνο άλλα στοιχεία:
<employee> <firstname>John</firstname> <lastname>Smith</lastname> </employee>
Στο XML Schema υπάρχουν δύο τρόποι για να ορίσουμε το συνδυασμένο στοιχείο:
1. Μέσω ονόμασης αυτού του στοιχείου, μπορείτε να δηλώσετε άμεσα το στοιχείο "employee", όπως ακολουθεί:
<xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Αν χρησιμοποιήσετε τον παραπάνω περιγραφόμενο τρόπο, τότε μόνο το "employee" μπορεί να χρησιμοποιήσει τον καθορισμένο τύπο σύνθετου. Προσέξτε ότι τα υποστοιχεία, "firstname" και "lastname", περιλαμβάνονται μέσα στην οδηγία <sequence>. Αυτό σημαίνει ότι τα υποστοιχεία πρέπει να εμφανίζονται στην τάξη που αναφέρονται. Οδηγίες XSD Αυτό το κεφάλαιο μάθετε περισσότερα για τις οδηγίες.
2. Το στοιχείο "employee" μπορεί να χρησιμοποιήσει την ιδιότητα type, η οποία αναφέρεται στο όνομα του τύπου σύνθετου που χρησιμοποιείται:
<xs:element name="employee" type="personinfo"/> <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:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/> <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: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>