XSD 限定 / Facets
القيود (restriction) تستخدم لتعريف القيم المقبولة للعناصر أو الخصائص في XML. وتسمى القيود الخاصة بالعناصر بوجهة نظر (facet).
قيود القيمة
في هذا المثال، يعرف عنصر محدد الاسم "age". لا يمكن أن تكون قيمة "age" أقل من 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 ك مجموعة من القيم المقبولة، يجب استخدام قيود التعداد (enumeration constraint).
في هذا المثال، يعرف عنصر محدد الاسم "car". القيم المقبولة هي 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 كسلسلة من الأرقام أو الأحرف المقبولة، يجب استخدام قيود النمط (pattern constraint).
في هذا المثال، يعرف عنصر محدد الاسم "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>
النموذج التالي يعرف عنصر محدد الاسم "initials". القيم المقبولة هي الأحرف الكبيرة من 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>
النموذج التالي يعرف عنصر محدد الاسم "initials". القيم المقبولة هي الأحرف الكبيرة أو الصغيرة من 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>
مثال أدنى يحدد عنصرًا يحتوي على تحديد يُدعى "choice". القيم المقبولة هي حرف x أو y أو 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>
مثال أدنى يحدد عنصرًا يحتوي على تحديد يُدعى "gender". القيم المقبولة هي male أو female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
مثال أدنى يحدد عنصرًا يحتوي على تحديد يُدعى "password". القيم المقبولة هي سطر يحتوي على 8 حروف، ويجب أن تكون حروف كبيرة أو صغيرة من 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:
مثال أدنى يحدد عنصرًا يحتوي على تحديد يُدعى "address". يتم تعيين تحديد whiteSpace إلى "preserve"، مما يعني أن معالج XML لن يزيل أي مسافات بيضاء:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
هذا المثال يعرف أيضًا عنصر "address" يحتوي على تحديد. تم تعيين تحديد whiteSpace إلى "replace"، مما يعني أن معالج XML سيزيل جميع الأحرف البيضاء (النقاطع، الدوائر، الفراغات، والسينات):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
هذا المثال يعرف أيضًا عنصر "address" يحتوي على تحديد. تم تعيين تحديد whiteSpace إلى "collapse"، مما يعني أن معالج 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.
هذا المثال يعرف عنصر "password" يحتوي على تحديد. يجب أن تكون القيمة دقيقة إلى 8 حرفًا:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
هذا المثال يعرف أيضًا عنصر "password" يحتوي على تحديد. يجب أن يكون القيمة أقل من 5 حرفًا وأكبر من 8 حرفًا:
<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>
تحديد نوع البيانات
تحديد | وصف |
---|---|
enumeration | تعريف قائمة من القيم المقبولة |
fractionDigits | تعريف أكبر عدد من أرقام العشرات المسموح بها. يجب أن يكون أكبر أو مساوياً لـ 0. |
length | تعريف عدد الأحرف أو عناصر القائمة المسموح بها بدقة. يجب أن يكون أكبر أو مساوياً لـ 0. |
maxExclusive | تعريف الحد الأعلى لل数值. يجب أن تكون القيم المسموح بها أقل من هذا القيمة. |
maxInclusive | تحديد الحد الأعلى للعدد. يجب أن تكون القيم المسموح بها أقل أو مساوية لهذا القيمة. |
maxLength | تحديد عدد الأرقام أو العناصر المسموح بها بدقة الأكثر. يجب أن يكون أكبر أو مساوياً ل0. |
minExclusive | تحديد الحد الأدنى للعدد. يجب أن تكون القيم المسموح بها أكبر من هذا القيمة. |
minInclusive | تحديد الحد الأدنى للعدد. يجب أن تكون القيم المسموح بها أكبر أو مساوية لهذا القيمة. |
minLength | تحديد عدد الأرقام أو العناصر المسموح بها بدقة الأقل. يجب أن يكون أكبر أو مساوياً ل0. |
pattern | تحديد سلسلة الحروف المسموح بها بدقة. يجب أن تكون سلسلة. |
totalDigits | تحديد عدد الأرقام العشريية المسموح بها بدقة. يجب أن يكون أكبر من 0. |
whiteSpace | تحديد طريقة معالجة مسافات البيانات (التنقلات، الدواخل، المسافات، وتعويذات النص) |