在继续之前你应对以下内容有基本了解:
HTML / XHTML
XML and XML Namespaces
XML 和 XML 名称空间A basic understanding of DTD
对DTD有基本的了解
Schema约束
XML Schema是以XML语言为基础的,它用于可替代DTD。
一份XML schema文件描述了XML文档的结构。
XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义).
1:Schema(*.xsd)文件就是一个xml文件。(DTD不是一个xml文件)
2:*.xsd文件,可以更加具体限制数据类型,出现的次数。
namespace - java包名。用于区分不同的类。namespace命名空间中,用于区分不同的元素.
<?xml version="1.0" encoding="UTF-8"?>
<users xmlns:a1="" xmlns:a2="" xmlns=""> <a1:user> </a1:user> <a2:dog /> <jack/></users>
以下是用schema来约束xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<users> <user id="U002"> <name>李四</name> <age>23</age> </user></users>
第一步:创建一个xsd文件
<?xml version="1.0" encoding="UTF-8"?>
<schema //schema的根不能修改 xmlns="" - 默认的命名空间,这个命名空间来自于w3,这个命名空间,已经集成到了所有开发环境中targetNamespace="" - 用户可以修改的命名空间,用于做广播或是引用。
xmlns:tns=""- 和targetNamespace保持一致。elementFormDefault="qualified" - 完全限定的名称
>
</schema><?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="" targetNamespace="" xmlns:tns="" elementFormDefault="qualified"> <!-- 定义根元素 --> <element name="users"> <complexType> <sequence> <element name="user" maxOccurs="1" minOccurs="1"> <complexType> <sequence> <element name="name" maxOccurs="1" type="string" minOccurs="1" /> <element name="age" type="integer" maxOccurs="1" minOccurs="1" /> </sequence> <attribute name="id" use="required" type="ID"></attribute>
</complexType> </element> </sequence> </complexType> </element></schema>第二步:在users.xml中引用这个*.xsd文件
<?xml version="1.0" encoding="UTF-8"?>
<users xmlns:xsi="" xmlns="" xsi:schemaLocation=" users.xsd"> <user id="U002"> <name>李四</name> <age>23</age> </user></users>以下是完整的xsd约束:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="" targetNamespace="" xmlns:tns="" elementFormDefault="qualified"> <!-- 定义根元素 --> <element name="users"> <complexType> <sequence> <element name="user" maxOccurs="unbounded" minOccurs="1"> <complexType> <sequence> <element name="name" maxOccurs="1" minOccurs="1"> <simpleType> <restriction base="string"> <minLength value="3"></minLength> <maxLength value="6"></maxLength> </restriction> </simpleType> </element> <element name="age" maxOccurs="1" minOccurs="1"> <simpleType> <restriction base="integer"> <minExclusive value="1"></minExclusive> <maxInclusive value="100"></maxInclusive> </restriction> </simpleType> </element> </sequence> <attribute name="id" use="required" type="ID"> </attribute> </complexType> </element> </sequence> </complexType> </element></schema>经下是引用这个xsd的CODE:
<?xml version="1.0" encoding="UTF-8"?>
<users xmlns:xsi="" xmlns="" xsi:schemaLocation=" users.xsd"> <user id="U002"> <name>李四1</name> <age>23</age> </user> <user id="U001"> <name>李四2</name> <age>23</age> </user> <user id="U004"> <name>李四weew</name> <age>100</age> </user></users>