XML的dtd约束

XML约束之DTD的使用 (1)为什么要有约束? XML都是用户自定义标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat) XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。 两个概念:格式良好的XML:遵循XML语法的XML。有效的XML:遵循约束文档的XML 总之:约束文档定义了在XML中允许出现的元素名称属性及元素出现的顺序等等。 (2)XML约束概述 XML约束概念:在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。 常用的约束技术:XML DTD 和XML Schema (3)DTD约束快速入门 DTD(Document Type Definition),全称为文档类型定义。 book.xml [html] view plain copy <span style="font-size:18px;"><?xml version="1.0" ?> <!DOCTYPE书架 SYSTEM "book.dtd"> <书架> <书> <书名>葵花宝典</书名> <作者>东方不败</作者> <售价>59.00元</售价> </书> <书> <书名>九阳神功</书名> <作者>张无忌</作者> <售价>57.00元</售价> </书> </书架> </span> book.dtd [html] view plain copy <span style="font-size:18px;"><!ELEMENT 书架 (书+)> <!ELEMENT 书 (书名,作者,售价)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 售价 (#PCDATA)> </span> 复杂标签:<!ELEMENT 标签名 (子节点)> 简单标签:<!ELEMENT 标签名 (#PCDATA)> 引入DTD:<!DOCTYPE 根节点 SYSTEM "dtd的地址"> (4)将DTD与XML文档关联的三种形式 DTD约束既可以作为一个单独的文件编写,也可以在XML文件内编写。 使用内部DTD 。<!DOCTYPE 根节点 [DTD的代码]> 使用外部DTD。<!DOCTYPE 根节点 "DTD的地址"> 使用网络DTD。<!DOCTYPE 根节点 PUBLIC "DTD的名称" "DTD的地址"> 常见的使用网络DTD约束有Struts2的框架。 在XML文件内编写DTD [html] view plain copy <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE 书架 [ <!ELEMENT 书架 (书+)> <!ELEMENT 书 (书名,售价)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 售价 (#PCDATA)> ]> <书架> <书> <书名>Java就业培训教程</书名> <作者>张孝祥</作者> <售价>39.00元</售价> </书> ... </书架> </span> XML使用DOCTYPE声明语句来指明它所遵循的DTD文档,有两种形式: 当引用的DTD文档在本地时,采用如下方式: <!DOCTYPE 根元素 SYSTEM “DTD文档路径”> 如:<!DOCTYPE 书架 SYSTEM “book.dtd”> 当引用的DTD文档在公共网络上时,采用如下方式: <!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”> 如:<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> DTD约束语法细节 (1)DTD-定义元素 在DTD文档中使用ELEMENT关键字来声明一个XML元素。 语法:<!ELEMENT 元素名称 使用规则> 使用规则: (#PCDATA)指示元素的主题内容只能是普通的文本。 EMPTY:用于指示元素的主体为空。比如<br/> ANY:用于指示元素的主题内容为任意类型。 (子元素):指示元素中包含的子元素。 定义子元素及描述它们的关系: 1) 如果子元素用逗号隔开,必须按照声明顺序去编写XML文档。 例如:<!ELEMENT FILE(TITLE,AUTHOR,EMAIL)> 2)如果子元素用"|" 分开,说明任选其一。 例如:<!ELEMENT FILE(TITLE|AUTHOR|EMAIL)> 3)用+、*、? 来表示元素出现的次数。 如果元素后面没有+*?表示必须且只能出现一次。 +:表示至少出现一次,一次或多次。 *:表示可有可无,零次、一次或多次。 ?:表示可以有也可以无,有的话只能出现一次。零次或一次。 如:<!ELEMENT MYTITLE((TITLE*,AUTHOR?,EMAIL))*|COMMIT> (2)元素内容的类型

相关文章

引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满足人的生产生活需要而产生的。具体...
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章...
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章...
http://blog.jobbole.com/79252/ 引言 NOKIA 有句著名的广告语:“科技以人为本”。任何技术都是为了满...
(点击上方公众号,可快速关注) 公众号:smart_android 作者:耿广龙|loonggg 点击“阅读原文”,可查看...
一、xml与xslt 相信所有人对xml都不陌生,其被广泛的应用于数据数据传输、保存与序列化中,是一种极为强...