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

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