مكون 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>