XSD ÏÞ¶¨ / Facets
ÏÞ¶¨£¨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:simpleTypename="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 ´¦ÀíÆ÷½«ÒƳýËùÓпհ××Ö·û£¨»»ÐС¢»Ø³µ¡¢¿Õ¸ñÒÔ¼°ÖƱí·û£©£º
<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 | ¶¨Òå¿Õ°××Ö·û£¨»»ÐС¢»Ø³µ¡¢¿Õ¸ñÒÔ¼°ÖƱí·û£©µÄ´¦Àí·½Ê½¡£ |