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元素