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 | ¶¨Òå¿Õ°××Ö·û£¨»»ÐС¢»Ø³µ¡¢¿Õ¸ñÒÔ¼°ÖƱí·û£©µÄ´¦Àí·½Ê½¡£ |