XSD 限定/Facets

ກຳນົດ (restriction) ຖືກນຳໃຊ້ເພື່ອອະທິບາຍຄູ່ມູນທີ່ກັບພາສາ XML ຫຼື ປະກອບ. ກຳນົດຄູ່ມູນຂອງ XML ຖືກເອີ້ນວ່າ facet.

ກຳນົດຄູ່ມູນ

ຄວາມຄິດທີ່ຖືກອະທິບາຍໃນນີ້ມີຫຼັກສັດທີ່ມີຄວາມກຳນົດແລະມີຊື່ "age". ຄວາມຄິດຂອງ age ບໍ່ສາມາດຕໍ່າກວ່າ 0 ຫຼືຫຼາຍກວ່າ 120:

<xs:element name="age">
<xs:simpleType>
  
    <xs:minInclusive value="0"/>
    
  </xs:restriction>
</xs:simpleType>
</xs:element>

<xs:maxInclusive value="120"/>

ກຳນົດຄວາມຂອງຄັກນັກພາສາຫຼືຈຳນວນສິ່ງ:

ຖ້າພວກເຮົາຕ້ອງກຳນົດຄວາມຂອງ XML element ສະແດງໃຫ້ເປັນຄັກນັກພາສາຫຼືຈຳນວນສິ່ງທີ່ກຽມມີຫຼາຍຄຳສັບທີ່ພວກເຮົາສາມາດໃຊ້ໄດ້ນັ້ນພວກເຮົາຕ້ອງໃຊ້ຄວາມກຳນົດວິທະຍາສາດ (enumeration constraint):

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

ບັນດາຄວາມທີ່ຕໍ່ມາອອກຈາກຄວາມຊັດເຊຍທີ່ມີຄວາມກຳນົດຢ່າງສະເພາະວ່າ "car"。ຄວາມພິນປະກອບທີ່ກຽມມີແມ່ນຄຳສັບ Audi, Golf, BMW:

<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 element ສະແດງໃຫ້ເປັນຄັກນັກພາສາຫຼືຈຳນວນສິ່ງທີ່ກຽມມີຫຼາຍຄຳສັບທີ່ພວກເຮົາສາມາດໃຊ້ໄດ້ນັ້ນພວກເຮົາຕ້ອງໃຊ້ຄວາມກຳນົດວິທະຍາສາດ (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:simpleType>
  
    
  </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 限定

ເພື່ອກໍານົດວິທີການຈັດການຄວາມຈະທີ່ບໍ່ຖືກນໍາໃຊ້ (whitespace characters), ພວກເຮົາຕ້ອງໃຊ້ 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 ຂະນະພາຍໃນຂອງຄວາມທີ່ຈະຫຼາຍດ້ວຍ 0.

<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 ການຈຳນວນລຸ່ມທີ່ຕ້ອງການຈະຫຼາຍກວ່າຫຼາຍດ້ວຍ 0.
maxInclusive ການຈຳນວນລຸ່ມທີ່ຕ້ອງການຈະຫຼາຍກວ່າຫຼືຫຼາຍຫຼາຍດ້ວຍ 0.
maxLength ການຈຳນວນຂອງຄວາມຫຼາຍສຸດທີ່ອະນຸຍາດ. ຕ້ອງຫຼາຍກວ່າຫຼືຫຼາຍຫຼາຍດ້ວຍ 0.
minExclusive ການຈຳນວນລຸ່ມທີ່ຕ້ອງການຈະຫຼາຍກວ່ານັ້ນ.
minInclusive 定义数值的下限。所允许的值必需大于或等于此值。
minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。
pattern 定义可接受的字符的精确序列。
totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于0。
whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。