قيود / أوجه XSD
تستخدم القيود لتعريف القيم المقبولة لعناصر أو سمات XML. تسمى القيود المفروضة على عناصر XML بالوجهات.
قيود على القيم
يعرّف المثال التالي عنصرًا يسمى "عمر" بقيد. لا يمكن أن تكون قيمة العمر أقل من 0 أو أكبر من 120:
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
قيود على مجموعة من القيم
لقصر محتوى عنصر XML على مجموعة من القيم المقبولة ، سنستخدم قيد التعداد.
يعرّف المثال أدناه عنصرًا يسمى "سيارة" مع وجود قيود. القيم الوحيدة المقبولة هي: Audi ، Golf ، BMW:
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يمكن أيضًا كتابة المثال أعلاه على النحو التالي:
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
ملاحظة: في هذه الحالة ، يمكن استخدام النوع "carType" بواسطة عناصر أخرى لأنه ليس جزءًا من عنصر "car".
قيود على سلسلة من القيم
للحد من محتوى عنصر XML لتحديد سلسلة من الأرقام أو الأحرف التي يمكن استخدامها ، سنستخدم قيد النمط.
يعرّف المثال أدناه عنصرًا يسمى "letter" بقيد. القيمة الوحيدة المقبولة هي أحد الأحرف الأقل حجماً من a إلى z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف المثال التالي عنصرًا يسمى "الأحرف الأولى" بقيد. القيمة الوحيدة المقبولة هي ثلاثة أحرف من الأحرف الكبيرة من a إلى z:
<xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف المثال التالي أيضًا عنصرًا يسمى "الأحرف الأولى" بقيد. القيمة الوحيدة المقبولة هي ثلاثة أحرف من الأحرف الصغيرة أو الكبيرة من a إلى z:
<xs:element name="initials">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف المثال التالي عنصرًا يسمى "اختيار" بقيد. القيمة الوحيدة المقبولة هي أحد الأحرف التالية: x ، y ، or z:
<xs:element name="choice">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف المثال التالي عنصرًا يسمى "prodid" بقيد. القيمة الوحيدة المقبولة هي خمسة أرقام متتالية ، ويجب أن يكون كل رقم في نطاق من 0 إلى 9:
<xs:element name="prodid">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
قيود أخرى على سلسلة من القيم
يعرّف المثال أدناه عنصرًا يسمى "letter" بقيد. القيمة المقبولة هي صفر أو أكثر من تكرارات الأحرف الصغيرة من a إلى z:
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف المثال التالي أيضًا عنصرًا يسمى "letter" بقيد. القيمة المقبولة هي زوج واحد أو أكثر من الأحرف ، كل زوج يتكون من حرف صغير متبوعًا بحرف كبير. على سبيل المثال ، سيتم التحقق من صحة "sToP" من خلال هذا النمط ، ولكن ليس "Stop" أو "STOP" أو "stop":
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يحدد المثال التالي عنصرًا يسمى "الجنس" بقيد. القيمة الوحيدة المقبولة هي ذكر أو أنثى:
<xs:element name="gender">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="male|female"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف المثال التالي عنصرًا يسمى "password" بقيد. يجب أن يكون هناك ثمانية أحرف بالضبط في صف واحد ويجب أن تكون هذه الأحرف صغيرة أو أحرف كبيرة من a إلى z ، أو رقم من 0 إلى 9:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
القيود المفروضة على أحرف المسافات البيضاء
لتحديد كيفية التعامل مع أحرف المسافات البيضاء ، سنستخدم قيد whiteSpace.
يعرّف هذا المثال عنصرًا يسمى "العنوان" بقيد. تم تعيين قيد whiteSpace على "الاحتفاظ" ، مما يعني أن معالج XML لن يزيل أي أحرف مسافات بيضاء:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف هذا المثال أيضًا عنصرًا يسمى "العنوان" بقيد. تم تعيين قيد whiteSpace على "استبدال" ، مما يعني أن معالج XML سوف يستبدل جميع أحرف المسافات البيضاء (موجزات الأسطر ، وعلامات التبويب ، والمسافات ، وخط الإرجاع) بمسافات:
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف هذا المثال أيضًا عنصرًا يسمى "العنوان" بقيد. يتم تعيين قيد whiteSpace على "الانهيار" ، مما يعني أن معالج XML سوف يزيل جميع أحرف المسافات البيضاء (يتم استبدال موجزات الأسطر وعلامات التبويب والمسافات وإرجاع أول حرف بمسافات وإزالة المسافات البادئة والتالية وتقليل المسافات المتعددة إلى مسافة واحدة):
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
قيود على الطول
لتحديد طول قيمة في عنصر ما ، سنستخدم قيود length و maxLength و minLength.
يعرّف هذا المثال عنصرًا يسمى "كلمة المرور" بقيد. يجب أن تتكون القيمة من ثمانية أحرف بالضبط:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
يعرّف هذا المثال عنصرًا آخر يسمى "كلمة المرور" بقيد. يجب ألا تقل القيمة عن خمسة أحرف ولا تزيد عن ثمانية أحرف:
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
قيود لأنواع البيانات
Constraint | Description |
---|---|
enumeration | Defines a list of acceptable values |
fractionDigits | Specifies the maximum number of decimal places allowed. Must be equal to or greater than zero |
length | Specifies the exact number of characters or list items allowed. Must be equal to or greater than zero |
maxExclusive | Specifies the upper bounds for numeric values (the value must be less than this value) |
maxInclusive | Specifies the upper bounds for numeric values (the value must be less than or equal to this value) |
maxLength | Specifies the maximum number of characters or list items allowed. Must be equal to or greater than zero |
minExclusive | Specifies the lower bounds for numeric values (the value must be greater than this value) |
minInclusive | Specifies the lower bounds for numeric values (the value must be greater than or equal to this value) |
minLength | Specifies the minimum number of characters or list items allowed. Must be equal to or greater than zero |
pattern | Defines the exact sequence of characters that are acceptable |
totalDigits | Specifies the exact number of digits allowed. Must be greater than zero |
whiteSpace | Specifies how white space (line feeds, tabs, spaces, and carriage returns) is handled |