xml学习总结(二)

时间:2023-03-09 07:41:49
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元素