عناصر مجمع XSD
يحتوي العنصر المعقد على عناصر و / أو سمات أخرى.
ما هو العنصر المركب؟
العنصر المعقد هو عنصر XML يحتوي على عناصر و / أو سمات أخرى.
هناك أربعة أنواع من العناصر المعقدة:
- عناصر فارغة
- العناصر التي تحتوي على عناصر أخرى فقط
- العناصر التي تحتوي على نص فقط
- العناصر التي تحتوي على عناصر ونصوص أخرى
ملاحظة: قد يحتوي كل عنصر من هذه العناصر على سمات أيضًا!
أمثلة على العناصر المعقدة
عنصر XML معقد ، "منتج" ، فارغ:
<product pid="1345"/>
عنصر XML معقد ، "موظف" ، والذي يحتوي على عناصر أخرى فقط:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
عنصر XML معقد ، "طعام" ، والذي يحتوي على نص فقط:
<food type="dessert">Ice cream</food>
عنصر XML معقد ، "وصف" ، والذي يحتوي على كل من العناصر والنص:
<description>
It happened on <date lang="norwegian">03.03.99</date> ....
</description>
كيفية تحديد عنصر معقد
انظر إلى عنصر XML المعقد هذا ، "الموظف" ، والذي يحتوي على عناصر أخرى فقط:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
يمكننا تعريف عنصر معقد في مخطط XML بطريقتين مختلفتين:
1. يمكن التصريح عن عنصر "الموظف" مباشرةً عن طريق تسمية العنصر ، على النحو التالي:
<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>
إذا كنت تستخدم الطريقة الموضحة أعلاه ، يمكن فقط لعنصر "الموظف" استخدام النوع المعقد المحدد. لاحظ أن العناصر الفرعية ، "الاسم الأول" و "الاسم الأخير" ، محاطة بمؤشر <التسلسل>. هذا يعني أن العناصر الفرعية يجب أن تظهر بنفس ترتيب الإعلان عنها. سوف تتعلم المزيد عن المؤشرات في فصل مؤشرات XSD.
2. يمكن أن يكون لعنصر "الموظف" سمة نوع تشير إلى اسم النوع المعقد المراد استخدامه:
<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>