微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML约束技术

为了使XML文档规范化,对XML文档的书写进行约束

XML DTD

XML文档(test.xml)

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE books SYstem "books.dtd">
<books>
<book>
<name>java</name>
<price>$16</price>
</book>
</books>


DTD约束文档(books.dtd)

<!ELEMENT books (book)>
<!ELEMENT book (name,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>

也可以写在一起:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE users [
<!ELEMENT users (user*)>
<!ELEMENT user (id,username,password,email,birthday)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT username (#PCDATA)>
<!ELEMENT password (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT birthday (#PCDATA)>
]>
<users>
<user>
<id>1</id>
<username>1</username>
<password>1</password>
<email>1</email>
</user>
</users>

引入外部DTD

本地DTD<!DOCTYPE root-element SYstem "filename">
公共DTD<!DOCTYPE root-element PUBLIC "DTD-NAME" "URL">


元素声明

<!ELEMENT element-name category>

<!ELEMENT element-name (element-content)>

符号使用



category



属性定义


实体定义

实体定义有点像C中的宏定义
例:
定义实体:<!ENTITY string “Hello World!”>
使用实体:&string;

XML Schema

xml Schema使用预先定义好的元素和属性开发的,其本身就是XML文档(这与DTD不同),通过Schema再来规定XML实例文档。
由于一个XML实例文档可以引入多个Schema,为了避免元素重名问题,每个Schema都应有一个名称空间(这里使用URI来区分)。
在定义Schema文档时要用到预先定义的属性和元素,需要引入W3C组织规定的scheme,即xmlns="http://www.w3.org/2001/XMLSchema"

XML文档(test.xml)

<?xml version="1.0" encoding="utf-8" ?>
<books
xmlns="http://www.dy-pc.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.dy-pc.com test.xsd"
>
<book>
<name>java</name>
<price>$16</price>
</book>
</books>

约束文档(test.xsd)

<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNameSpace="http://www.dy-pc.com"
elementFormDefault = "qualified"
>
<element name="books">
<complexType>
<sequence>
<element name="book">
<squence>
<element name="name" type="string" />
<element name="price" type="double" />
</squence>
</element>
</sequence>
</complexType>
</element>
</schema>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。