xml学习总结(二)

XML Schema

(1)Schema内置类型

->字符串类型

<strlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:noNamespaceSchemaLocation="string.xsd">
</strlist>

->数值类型

<numberlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="number.xsd">
</numberlist>

->日期时间类型

<date_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:noNamespaceSchemaLocation="date.xsd">
</date_list>

->boolean类型

<boolean_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:noNamespaceSchemaLocation="boolean.xsd">
</boolean_list>

->anyURI类型

<url_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:noNamespaceSchemaLocation="uri.xsd">
</url_list>

 ->二进制

<binaryList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xsi:noNamespaceSchemaLocation="binary.xsd">
</binaryList>

(2)使用限制派生新类型

方式一(base.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:simpleType name="age_Type">
        <xs:restriction base="xs:int">
            <xs:maxInclusive value="100"/>
            <xs:minInclusive value="0"/>
        </xs:restriction>
    </xs:simpleType> 
    <xs:element name="age" type="age_Type"/>
</xs:schema>

方式二

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:simpleType name="price_Type">
        <xs:restriction>
            <xs:simpleType>
                <xs:restriction base="xs:decimal">
                    <xs:fractionDigits value="2"/>
                    <xs:totalDigits value="5"/>                    
                </xs:restriction>
            </xs:simpleType>            
            <xs:maxInclusive value="100"/>
            <xs:minInclusive value="0"/>
        </xs:restriction>
    </xs:simpleType> 
    <xs:element name="price" type="price_Type"/>
</xs:schema>

(base.xml)

<?xml version="1.0" encoding="UTF-8"?>
<age xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="base.xsd">
    34
</age>

 (3)指定类型的两种方式

->指定type类型

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="books" type="xs:string"/>
    <xs:element name="开始日期" type="xs:date"/>
    <xs:attribute name="price" type="xs:double"/>
    <xs:attribute name="islast" type="xs:boolean"/>    
</xs:schema>

->使用子元素

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="books">
        <xs:simpleType>
            <xs:restriction base="xs:token">
                <xs:enumeration value="疯狂Java讲义"/>
                <xs:enumeration value="轻量级Java EE企业应用实战"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
</xs:schema>

(4)长度约束

<xs:length value="5" />
<xs:maxLength value="20" />
<xs:minLength value="0" />

(5)精度约束

<xs:simpleType name="price_Type">
        <xs:restriction base="xs:decimal">
            <!-- 最多5位数,小数点后最多2位数 -->
            <xs:fractionDigits value="2"/>
            <xs:totalDigits value="5"/>
            <!-- 最大值500 -->
            <xs:maxInclusive value="500"/>
        </xs:restriction>
    </xs:simpleType> 

(6)枚举约束

<xs:simpleType name="地址_Type">
        <xs:restriction base="xs:token">
            <!-- 列出多个有效的枚举值 -->
            <xs:enumeration value="广州"/>
            <xs:enumeration value="上海"/>
        </xs:restriction>
    </xs:simpleType>

(7)正则表达式

<xs:simpleType name="price_Type">
        <xs:restriction base="xs:decimal">
            <!-- 必须匹配1XX.X的格式 -->
            <xs:pattern value="1\d{2}\.\d"/>
        </xs:restriction>
    </xs:simpleType> 

(8)空白处理

<!--whiteSpace可以接受的值
presver:保留值里边的空白
replace:将值里出现的所有的空白都替换成空格
collpase:先执行replace,在去掉前后的空格,并将中间的多个连续的空格压缩成一个
-->
<xs:simpleType name="price_Type">
        <xs:restriction base="xs:decimal">
            <!-- 下面的whiteSpace约束的值只能是collapse -->
            <xs:whiteSpace value="collapse"/>
        </xs:restriction>
    </xs:simpleType> 
    <!-- 定义price元素,其类型是price_Type -->
    <xs:element name="price" type="price_Type"/>    
    <xs:element name="简要介绍">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <!-- 为string类型增加collapse约束,相当于token -->
                <xs:whiteSpace value="collapse"/>
                <!-- 指定字符串长度只能为5 -->
                <xs:length value="5"/>
            </xs:restriction>
        </xs:simpleType>    
    </xs:element>

(9)使用list派生列表类型

<xs:simpleType name="age_list_Type">
        <xs:list>
            <xs:simpleType>
                <xs:restriction base="xs:int">
                    <xs:minExclusive value="0"/>
                    <xs:maxExclusive value="100"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:list>
    </xs:simpleType>
    <!-- 定义age_list_Type类型的元素 -->
    <xs:element name="age_list" type="age_list_Type"/>

(10)限制列表约束

---长度约束:Length。maxLength。minLength

---枚举约束:enumeration

---正则表达式约束:pattern

---空白处理:whiteSpace(约束值只能是collapse)

(11)使用union派生联合类型

<xs:simpleType name="price_Type">
        <xs:restriction base="xs:decimal">
            <xs:maxExclusive value="100"/>
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="publish_date_Type">
        <xs:restriction base="xs:date">
            <xs:minExclusive value="2007-01-01"/>
            <xs:maxExclusive value="2009-12-31"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="price_publish_Type">
        <!--此时price_name的值可以是price_Type也可以是publish_date_Type-->
        <xs:union memberTypes="price_Type publish_date_Type"/>
    </xs:simpleType>
    <xs:element name="price_name" type="price_publish_Type"/>

(12)阻止派生新的简单类型

--->使用final属性

--->为约束指定fixed属性

(13)合并多个Schema

---->使用include元素

---->使用redefine元素

---->使用import元素

posted @ 2013-12-29 19:12  nolonely  阅读(270)  评论(0编辑  收藏  举报