مخطط XSD: كيفية تحديد عدد الأرقام في القيمة؟

StackOverflow https://stackoverflow.com/questions/4228607

  •  26-09-2019
  •  | 
  •  

سؤال

أرغب في الحد من عدد الأرقام المسموح بها في عنصر إلى 6:

<AccountNumber>123456</AccountNumber>
<AccountNumber>999999</AccountNumber>
<AccountNumber>000000</AccountNumber>

مواصفات تنسيق الحقل عبارة عن 6 أرقام ، غير محفوظة الصفر ، رقمية.

قرأت أنني قد أرغب في استخدامها ال totalDigits التقييد ، بناءً على:

totalDigits يحدد العدد الدقيق للأرقام المسموح بها. يجب أن تكون أكبر من الصفر

لذلك لدي النوع البسيط:

<xs:simpleType name="AccountNumber">
   <xs:restriction base="xs:int">
      <xs:totalDigits value="6"/>
   </xs:restriction>
</xs:simpleType>

وبينما يمسك بأرقام غير صالحة ، مثل:

<AccountNumber>1234567</AccountNumber>
<AccountNumber>0000000</AccountNumber>
<AccountNumber></AccountNumber>

لا يصطاد أرقام غير صالحة:

<AccountNumber>12345</AccountNumber>
<AccountNumber>01234</AccountNumber>
<AccountNumber>00123</AccountNumber>
<AccountNumber>00012</AccountNumber>
<AccountNumber>00001</AccountNumber>
<AccountNumber>00000</AccountNumber>
<AccountNumber>0000</AccountNumber>
<AccountNumber>000</AccountNumber>
<AccountNumber>00</AccountNumber>
<AccountNumber>0</AccountNumber>

ما هو القيود المقترحة لتحديد العدد الدقيق للأرقام المسموح بها؟

هل كانت مفيدة؟

المحلول

تحتاج إلى استخدام xs:pattern وتوفير تعبير منتظم للحد من ذلك.

<xs:simpleType name="AccountNumber">
   <xs:restriction base="xs:int">
      <xs:pattern value="\d{6}"/>
   </xs:restriction>
</xs:simpleType>

نصائح أخرى

هذه أبسط طريقة

    <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> 

ربما سأستخدم XS: Mininclusive و XS: MaxInclusion.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top