مكون XML Schema
التعريف والاستخدام
يحدد عنصر element عنصرًا.
معلومات العنصر
مرة الظهور | عدد العناصر المحددة في النمذجة. |
العنصر الأب | schema،choice،all،sequence |
المحتوى | simpleType،complexType،key،keyref،unique |
النحو
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=عدد غير سالب|غير محدود minOccurs=عدد غير سالب nillable=true|false abstract=true|false block=(#all|قائمة من (extension|restriction)) final=(#all|قائمة من (extension|restriction)) خصائص أي > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(؟ علامة التبويب تُستخدم في عنصر element، والذي يمكن أن يظهر صفر مرة أو مرة واحدة، * علامة التبويب تُستخدم للإشارة إلى أن العنصر يمكن أن يظهر صفر مرة أو مرات عديدة).
خصائص
id
اختياري. لتعيين ID الفريد للعنصر.
name
اختياري. لتعيين اسم العنصر. يجب أن يكون هذا العنصر ضروري إذا كان العنصر الأب هو عنصر schema.
ref
اختياري. للإشارة إلى عنصر آخر. يمكن أن يحتوي属性 ref على بدلة اسم نطاق.
type
اختياري. لتعيين اسم نوع بيانات مدمج، أو لتعيين اسم عنصر simpleType أو complexType.
substitutionGroup
اختياري. لتعيين اسم العنصر الذي يمكن استبداله. يجب أن يكون هذا العنصر من نفس النوع أو نوع مستمد من هذا النوع المحدد.
لا يمكن استخدام هذه الخاصية إذا لم يكن العنصر الأب هو عنصر schema.
default
اختياري. لتعيين قيمة افتراضية للعنصر (يستخدم فقط عندما يكون محتوى العنصر نوع بسيط أو textOnly).
fixed
اختياري. لتعيين قيمة ثابتة للعنصر (يستخدم فقط عندما يكون محتوى العنصر نوع بسيط أو textOnly).
form
اختياري. شكل العنصر. القيمة الافتراضية هي قيمة خاصية elementFormDefault للنموذج الذي يحتوي على هذه الخاصية. يجب أن تكون هذه القيمة واحدة من الأنواع التالية: "qualified" أو "unqualified".
لا يمكن استخدام هذه الخاصية إذا كان العنصر هو عنصر schema.
- إذا كانت هذه القيمة هي "unqualified"، فإنه لا يجب تقييد العنصر عبر مسبقته المحددة بالنطاق.
- إذا كانت هذه القيمة هي "qualified"، فإنه يجب تقييد العنصر عبر مسبقته المحددة بالنطاق.
maxOccurs
اختياري. يحدد عدد الأكثر الذي يمكن أن يظهر العنصر في العنصر الأصلي. يمكن أن يكون هذا القيمة عددًا صحيحًا أكبر أو مساويًا لـ 0. إذا لم يكن هناك تحديد لأي حد أقصى، يتم استخدام الكلمة "unbounded". القيمة الافتراضية هي 1.
لا يمكن استخدام هذه الخاصية إذا كان العنصر هو عنصر schema.
minOccurs
اختياري. يحدد عدد الأقل الذي يمكن أن يظهر العنصر في العنصر الأصلي. يمكن أن يكون هذا القيمة عددًا صحيحًا أكبر أو مساويًا لـ 0. القيمة الافتراضية هي 1.
لا يمكن استخدام هذه الخاصية إذا كان العنصر هو عنصر schema.
nillable
اختياري. يشير إلى ما إذا كان يمكن تخصيص قيمة صفرية واضحة للعنصر. هذا يطبق على محتوى العنصر وليس خاصيته. القيمة الافتراضية هي false.
إذا كان nillable صحيحًا، فإنه يمكن أن يسمح للعنصر الخاص بالحالة أن يضيف خاصية nil إلى true. يتم تعريف خاصية nil كجزء من نطاق الاسم المحدد (QName) للنموذج.
على سبيل المثال، يحدد الفقرة التالية عنصرًا واحدًا ويقوم بتعيين nillable إلى true.
<xs:element name="myDate" type="xs:date" nillable="true"/>
يستخدم العنصر في الفقرة التالية ويحتوي على قيمة صفرية واضحة (تم تعيين خاصية nil إلى true).
<myDate xsi:nil="true"></myDate>
abstract
اختياري. يشير إلى ما إذا كان العنصر يمكن استخدامه في مستند التطبيق. إذا كان القيمة صحيحة، فإن العنصر لا يمكن أن يظهر في مستند التطبيق. على العكس من ذلك، يجب أن تحتوي خاصية substitutionGroup على العناصر الأخرى التي تحتوي على اسم محدد (QName) للعنصر في نفس الموضع. يمكن أن تشير عدة عناصر إلى العنصر في خاصية substitutionGroup. القيمة الافتراضية هي false.
block
اختياري. نوع المشتق. يمنع خاصية block استخدام العناصر التي تحتوي على نوع المشتق المحدد لتعويض العنصر. يمكن أن يحتوي هذا القيمة على #all أو قائمة تحتوي على مجموعة من extension أو restriction أو substitution:
- تمديد - منع استخدام العناصر المشتقة من التوسيع لتعويض العنصر نفسه.
- restriction - يمنع العناصر المشتقة عبر الحد من الاستبدال لهذا العنصر.
- substitution - يمنع العناصر المشتقة عبر الاستبدال من الاستبدال لهذا العنصر.
- #all - يمنع جميع العناصر المشتقة من الاستبدال لهذا العنصر.
final
اختياري. تعيين قيمة افتراضية لخصية final في عنصر element. إذا لم يكن العنصر الأب هو عنصر schema، فإن هذه الخاصية لا يمكن استخدامها. يمكن أن تحتوي القيمة على #all أو قائمة تشمل مجموعة من extension أو restriction:
- extension - يمنع العناصر المشتقة عبر التوسيع من الاستبدال لهذا العنصر
- restriction - يمنع العناصر المشتقة عبر الحد من الاستبدال لهذا العنصر
- #all - يمنع جميع العناصر المشتقة من الاستبدال لهذا العنصر
خصائص أي
اختياري. تحديد أي خصائص أخرى غير محددة بنمط.
مثال
مثال 1
في المثال التالي، هو schema يحتوي على أربعة عناصر بسيطة: "fname", "lname", "age" و "dateborn"، ونوعها هو string و nonNegativeInteger و date:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="fname" type="xs:string"/> <xs:element name="lname" type="xs:string"/> <xs:element name="age" type="xs:nonNegativeInteger"/> <xs:element name="dateborn" type="xs:date"/> </xs:schema>
مثال 2
في المثال التالي، هو schema يحتوي على عنصر معقد "note" يحتوي على أربعة عناصر بسيطة: "to", "from", "heading" و "body":
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <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> </xs:schema>
مثال 3
هذا المثال مشابه للاعتبارات 2، ولكن في هذا المثال، نحن نختار استخدام خاصية ref لاستدعاء اسم العنصر:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element ref="to"/> <xs:element ref="from"/> <xs:element ref="heading"/> <xs:element ref="body"/> </xs:sequence> </xs:complexType> </xs:element> <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:schema>