码迷,mamicode.com
首页 > 其他好文 > 详细

XML DTD验证

时间:2015-02-07 17:08:04      阅读:356      评论:0      收藏:0      [点我收藏+]

标签:

一、什么是DTD  

  文档类型定义(DTD:Document Type Definition)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
  DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

  

二、DTD的作用

  1、有了DTD,每个XML可以携带一个自身格式的描述。

  2、有了DTD,不同组织可以使用一个通用的DTD来交换数据。

  3、应用程序中使用DTD校检从外部接受的XML数据是否有效。

  

三、DTD中包含的内容

  1、元素的定义规则:在DTD中需要验证XML中能包含哪些元素。

  2、元素之间的关系规则:指元素的父元素是谁,元素和元素之间到底是上下层关系还是平行关系。

  3、属性的定义:可以规定在XML中属性名是什么,属性值是什么类型。

 

四、DTD的分类:

  1、内部DTD文档:DTD文档和XML文档在同一个文件中。

    <!DOCTYPE 根元素 [定义内容]>

  2、外部DTD文档:DTD文档和XML文档保存在不同文件中。

    <!DOCTYPE 根元素 SYSTEM "DTD文件路径">

  3、内外结合的DTD文档:两种相结合的写法。

    <!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>

 

五、DTD元素定义

  语法:

  <!ELEMENT NAME CONTENT>

  ELEMENT:关键字,表示声明一个DTD文档。

  NAME:元素名称,XML中元素的名称。

  CONTENT:元素类型,

  元素类型包括:EMPTY、#PCDATA、纯元素类型、ANY。

  1、Empty:

  该元素不能包含子元素和文本,但可以有属性(空元素)。

  语法: 

  <!ELEMENT 元素名称 EMPTY>

  例:声明一个空的student元素

  <!ELEMENT student empty>

  XML示例:

  <student />

  

  2、#PCDATA:

  可以包含任何字符数据,但不能包含其他子元素。只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:

  语法:

  <!ELEMENT 元素名称 (#PCDATA)>

  例:声明一个name的元素

  <!ELEMENT name (#PCDATA)>

  XML示例:

  <name>张三</name>  

 

  3、纯元素类型:

  只能包含子元素,不能包含文本。元素出现的顺序必须和定义一致。

  语法:

  <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

  例:声明学生标记

  <!ELEMENT student(name,age)>

  XML示例:

  <student>

    <name>张三</name>

    <age>18</age>

  </student>


 符号的用途:
符号 用途 示例 说明
() 用来给元素分组 (古龙|金庸|梁羽生),(王朔|余杰),毛毛 分为三组
| 在列出的对象中必须选择一个 (男人|女人) 表示男人或者女人必须出现,两者至少出现其一。
, 对象必须按照指定的顺序出现 (西瓜,苹果,香蕉) 表示西瓜、苹果、香蕉必须出现,并且是按照指定顺序出现。
* 该对象可以出现0次或者多次 (爱好*) 爱好可以出现0次到多次
? 该对象只能出现0到1次 (菜鸟?) 表示菜鸟可以出现0次到1次
+ 改对象可以出现1到多次。 (成员+) 表示成员必须出现1次到多次。


  4、ANY:

  可以包含任何元素类型。

  语法:  

  <!ELEMENT 元素名称 ANY>
  例子:
  <!ELEMENT student ANY>

 

例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE studentlist [
    <!--声明根元素下可以包含多个student元素-->
    <!ELEMENT studentlist (student*)>
    <!--声明student下可以包含name,age,sex元素,name必须出现0-1次, age出现0-多次,sex必须出现1次 -->
    <!ELEMENT student (name?, age*, sex)>
    <!--声明name中只能包含文本,不能包含其他标记-->
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!--声明sex为空元素-->
    <!ELEMENT sex EMPTY>
]>
<studentlist>
    <student>
        <name>张三</name>
        <age>20</age>
        <sex/>
    </student>
    <student>
        <name>李四</name>
        <sex/>
    </student>
</studentlist>

 

XML DTD验证

标签:

原文地址:http://www.cnblogs.com/zhengcheng/p/4278899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!