XML约束技术

前端之家收集整理的这篇文章主要介绍了XML约束技术前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

XML DTD

XML文档(test.xml)@H_403_2@

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


DTD约束文档(books.dtd)@H_403_2@

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

也可以写在一起:

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

引入外部DTD@H_403_2@

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


@H_403_2@@H_403_2@@H_403_2@元素声明@H_403_2@

<!ELEMENT element-name category>@H_403_2@@H_403_2@
或@H_403_2@
<!ELEMENT element-name (element-content)>@H_403_2@@H_403_2@@H_403_2@

@H_403_2@@H_403_2@@H_403_2@

符号使用@H_403_2@@H_403_2@@H_403_2@


@H_403_2@

@H_403_2@

category@H_403_2@


@H_403_2@

属性定义@H_403_2@


实体定义@H_403_2@

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

XML Schema

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

XML文档(test.xml)@H_403_2@

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

约束文档(test.xsd)

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

猜你在找的XML相关文章