XML约束技术

前端之家收集整理的这篇文章主要介绍了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@H_499_301@"

XML文档(test.xml)

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

约束文档(test.xsd)

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

猜你在找的XML相关文章