XML , DTD 与 XML Schema简述

一.  XML

XML指可扩展标记语言(EXtensible Markup Language)。它是一种用来存储和传输数据的语言,而HTML是用来显示数据的。

一个完整的XML文件应该具备以下几部分:

1.XML文件的头必须要有文档的申明。

如<?xml version="1.0"  encoding="gb2312"  standalone="no" ?>。version是版本号,当前W3C组织只发布了一个版本,所以都填1.0,encoding是字符编码形式。standalone是之该文档是否独立存在,此属性一般用不上。

2.标签。

形式如 <element></element>或者是<element/>。标签名对字母的大小写敏感,且不能以"_"或数字开始,标签必须成对出现,有头标签必须有尾标签,而且头尾标签名要一致才能匹配,或者在头标签的最后用"/"来直接结束这个标签。一个XML文件有且只有一个跟标签,标签内可以嵌套子标签,但标签之间不能相互嵌套。

3.属性。

位于头标签中,结构:key=“value” key就是属性的名字,value就是属性的值,值必须用引号包裹,单双引号都可以,如果值中含有双引号,那么整个值必须用单引号包裹。

二.  DTD

DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:

<!DOCTYPE 根标签的名字[

xml文件内容定义

]>

使用<!ELEMENT 标签名 标签类型 (含有的标签,#PCDATA)>

在需要DTD文件约束的XML文件中使用<!DOCTYPE 根标签名 SYSTEM “dtd文件名”>

三. XML Schema.

XML Schema是以XML语言为基础的,它与DTD的功能类似,但其内容比DTD丰富,作用也更强大,用来替代DTD。

1.创建XML Schema文件,后缀为xsd。与XML类似,XML Schema也有文档申明,如<?xml version="1.0" encoding="UTF-8"?>,然后主体是<schema></schema>跟标签,需要在跟标签中添加命名空间。

(a)首先引入xmlns:xs="http://www.w3.org/2001/XMLSchema"。

(b)targetNameSpace="http://www.feicui.com/newschema"声明一个我们自己的命名空间(uri)。

(c)xmlns:myns="http://www.feicui.com/newschema"。定义我们自己的命名空间,如果XML文件需要用到该Schema中的东西就需要引入该命名空间来使用。

(d)elementFormDefault="qualified"表示严格按照我们的schema文档约束我们要编写的xml文件。

添加好这四步就需要在schema跟标签中添加其它标签来编写对XML的约束。

2.将schema文档引入要约束的xml文件则需要在XML的跟标签中加入如下属性:

(a)xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"要引入我们的shema文档需要使用这个命名空间中的属性。
(b
)xsi:schemaLocation="http://www.feicui.org/feicuischema newschema.xsd" 使用上面引入的命名空间xsi中的schemalocation读取我们的schema文档,首先要填入我们的schema文档的命名空间的uri,然后空格,再填入我们的schema文档的名字。
(c
)xmlns="http://www.example.org/newschema"在通过引入命名空间的方法,将我们的schema文档的命名空间引入

3.简单元素内容的约束。

首先在我们要约束的元素中添加一个simpleType的标签。然后在simpleType中添加一个restricetion标签,这个标签中有一个重要的属性:base,需要填入我们这个信息类型是基于哪一种类型的。在restricetion标签中,我们就可以加入我们对信息内容的一个具体的约束了:
(a)枚举约束 enumeration 
(b)对大小值的限定 mininclusive 设定最小值,包含最小值
  minEnclusive 设定最小值,但是不包含最小值
  maxinclusive 设定最大值,包含最大值
  maxEnclusive 设定最大值,但是不包含最大值
(c)样式约束
[a-zA-Z]这一位字符,在a-z的大小写中任选一个填入
male|female这里需要多选一来填入信息内容
([a-z][0-9])+  这里小写字母+一位数字的格式重复(可以1次可以多次)

[0-9]{8} 表示有八位阿拉伯数字。

(d)空白字符约束

<whiteSpace vaule="preserve"/> 保留,XML不会删除任何空白字符

<whiteSpace vaule="replace"/> 替代,XML会用空格代替所有空白字符(换行符,制表符,空格符,回车符)

<whiteSpace vaule="collapse"/> 消除,XML会清除所有的空白字符。

(e)长度的约束

<length value="8"/> 值必须有8个字符

minLength 和 maxLength 值最少于最多的字符个数

4. 符合元素的约束。

首先我们在要约束的元素中添加一个complexType的标签。然后我们要填入指示器(eq:sequence)。添加子元素,子元素可以使复合元素也可以使简单元素。

5. 顺序指示器。

sequence 子元素必须出现且要按照指定的顺序出现。

all 子元素可以任意顺序出现,但只出现一次。

choice 指定元素中,仅可以出现一个,可以使用maxOccurs修改。

6.数量指示器。

这种指示器不是以元素(标签)的形式出现,而是以子元素的属性的方式出现。 minOccurs 设置出现的最少次数;maxOccurs设置出现的最多次数

发布了23 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Vitens/article/details/41044339