XSD 限定 / Facets
- หน้าก่อนหน้า คุณสมบัติ XSD
- หน้าต่อไป องค์ประกอบ XSD
จำกัด (restriction) ใช้เพื่อกำหนดค่าที่ยอมรับขององค์ประกอบ XML หรือแบบระบุ จำกัดขององค์ประกอบ 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 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 processor จะลบรวมทั้งหมดของตัวอักษรว่าง (รวมถึงวงจรรอบสาระ ออกเรียก อักษรเปล่า และตารางที่วาง)
<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 processor จะลบรวมทั้งหมดของตัวอักษรว่าง (รวมถึงวงจรรอบสาระ ออกเรียก อักษรเปล่า และตารางที่วาง จะถูกแทนที่ด้วยอักษรเปล่า ตัวอักษรเปล่าที่อยู่ท้ายต้นจะถูกลบ และอักษรเปล่าที่มีจำนวนมากกว่าหนึ่งตัวจะถูกขยายเป็นอักษรเปล่าเดียว)
<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 | กำหนดวิธีการประมวลผลของอักษรช่องว่าง (แบบเรียบเรียง ช่องว่าง ช่องติด และช่องตั้ง) |
- หน้าก่อนหน้า คุณสมบัติ XSD
- หน้าต่อไป องค์ประกอบ XSD