Schema简单的类型

     一、Schema简易元素

     XML Schema可以定义XML文件的元素。简易元素之那些只包含文本的元素。它不会包含其他的元素或属性。

     1、字符串(string)

     字符串是最松散的文本约束。其唯一要求是不能含有特殊字符(如&,<,>).

     Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.     <xs:element name="name" type="xs:string"/>
  4. </xs:schema>

     XML实例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <name>张三&</name>

      将xml文档和Schema关联后验证,得到以下的错误提示:

image

      2、日期型(date)

      日期型格式为YYYY-MM-DD.

      Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.     <xs:element name="adddate" type="xs:date"/>
  4. </xs:schema>

       xml实例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <adddate>2009-12-32</adddate>

       在XMLSpy验证,提示错误:

image

      3、数值型(integer)

      数值型约束要求文本内容必须为数值,不能包含字母或其他非数字字符。

      Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.     <xs:element name="num" type="xs:integer"/>
  4. </xs:schema>

     xml文档:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <num>123ab</num>

     在XMLSpy验证,提示以下错误:

image

 

 

 

 

 

 

     4、布尔型(boolean)

     Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.     <xs:element name="isfirst" type="xs:boolean"/>
  4. </xs:schema>

      xml文档:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <isfirst>TRUE</isfirst>

     在XMLSpy验证,提示以下错误:

image

 

 

 

 

     5、枚举型(enumeration)

     枚举型可以创建一组基本简单类型的选项,为了给元素更强的约束。

     Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.     <xs:element name="color">
  4.        <xs:simpleType>
  5.             <xs:restriction base="xs:string">
  6.                 <xs:enumeration value="red"/>
  7.                 <xs:enumeration value="green"/>
  8.                 <xs:enumeration value="blue"/>
  9.             </xs:restriction>
  10.         </xs:simpleType>    
  11.     </xs:element>
  12. </xs:schema>

      xml实例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <color>white</color>

      在XMLSpy验证,提示以下错误:

image     

     在枚举选项组中,定义重复的元素是无意义的,定义的顺序没有要求。

     6、列表类型(list)

     列表类型是简单类型的一种。不过,它所定义的元素或属性的值可以含有多个原子值。这些并列的原子值之间利用空格分隔。

     Schema定义:

显示行号 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.    <xs:element name="fruitlist">
  4.         <xs:simpleType>
  5.             <xs:list itemType="fruitType"/>        
  6.         </xs:simpleType>   
  7.    </xs:element>    
  8.     <xs:simpleType name="fruitType">
  9.         <xs:restriction base="xs:string">
  10.             <xs:enumeration value="apple"/>
  11.             <xs:enumeration value="pear"/>
  12.             <xs:enumeration value="peach"/>
  13.         </xs:restriction>
  14.     </xs:simpleType>    
  15. </xs:schema>

      xml实例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <fruitlist>apple</fruitlist>
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <fruitlist>apple pear</fruitlist>

     以上的实例都可以通过验证。

 

 

 

 

 

     7、联合类型(union)

     联合类型所定义的元素或属性可以含有多个原子值。

     Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:element name="font">
           <xs:simpleType>
               <xs:union memberTypes="color sizelist"/>        
           </xs:simpleType>
         </xs:element>
         <xs:simpleType name="color">
             <xs:restriction base="xs:string">
                <xs:enumeration value="red"/>
                <xs:enumeration value="green"/>
                <xs:enumeration value="blue"/>
            </xs:restriction>
           </xs:simpleType>
           <xs:simpleType name="sizelist">
              <xs:list itemType="size"/>
           </xs:simpleType>
           <xs:simpleType name="size">
  2.           <xs:restriction base="xs:string">
  3.               <xs:enumeration value="9px"/>
  4.               <xs:enumeration value="10px"/>
  5.               <xs:enumeration value="12px"/>        
  6.           </xs:restriction>
  7.       </xs:simpleType>
    </xs:schema>

         xml实例:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <font>blue</font>
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <font>10px 12px</font>

 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <font>blue 12px</font>

     以上都可以通过验证。

     二、XML属性

    简易元素无法拥有属性。假如某个元素拥有属性,它就会被当作复杂元素来定义,属性本身是作为简易类型定义的。

  1. <xs:attribute name="id"/>

     属性的类型和元素一致。

     三、Schema限定

     1、枚举限定

 

     具体见上面的。

    2、限定长度(minLength,maxLength)

    Schema定义:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="name">
          <xs:simpleType>
               <xs:restriction base="xs:string">
                    <xs:minLength value="2"/>
                    <xs:maxLength value="10"/>            
                </xs:restriction>
            </xs:simpleType>   
       </xs:element>
    </xs:schema>

     注意:无论中文字符还是英文字符,都是当做一个字符来看待。

    3、取值范围(minInclusive,maxInclusive,minExclusive,maxExclusive)
  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="mark">
          <xs:simpleType>
                <xs:restriction base="xs:integer">
                    <xs:maxInclusive value="100"/>
                    <xs:minInclusive value="0"/>            
                </xs:restriction>
            </xs:simpleType>   
       </xs:element>
    </xs:schema>

     定义mark必须在[0,100]之间。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  3.    <xs:element name="mark">
  4.       <xs:simpleType>
  5.             <xs:restriction base="xs:integer">
                    <xs:maxExclusive value="100"/>
                    <xs:minExclusive value="0"/>            
                </xs:restriction>
            </xs:simpleType>   
       </xs:element>
    </xs:schema>

     定义mark在(0,100)之间,不包括0和100.

     4、小数位数限定(totalDigits,fractionDigits)
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="price">
          <xs:simpleType>
                <xs:restriction base="xs:decimal">
                    <xs:totalDigits value="8" />
                    <xs:fractionDigits value="3"/>            
                </xs:restriction>
            </xs:simpleType>   
       </xs:element>
    </xs:schema>

     totalDigits定义总位数,fractionDigits定义小数部分的位数。

     5、模式匹配(pattern)

    XML 架构正则表达式与 pattern 方面一起使用,提供对符合定义的模式的字符串的约束或限制。

  1. <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="email">
          <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value="([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)"/>            
                </xs:restriction>
            </xs:simpleType>   
       </xs:element>
    </xs:schema>

      四、元素的默认值和固定值

      1、默认值(default)

      元素的默认值是在Schema中预先设定元素内容,当元素内容为空时,处理器会将该元素的值当做预设值。

  1. <xs:element name="elementName" type="eleType" default="defaultValue"/>

      默认值是在验证的时候设定其默认值,并不是真正改变xml的文本。

     2、固定值(fixed)

     固定值限定XML出现时,其值必须和固定值相等。

  1. <xs:element name="elementName" type="eleType" fixed="fixedvalue"/>
posted @ 2010-01-05 00:51  Asharp  阅读(6074)  评论(0编辑  收藏  举报