【WebService】(二)XML之DTD

一.定义

文档类型定义 DTD(Document Type Definition),专门用于检测XML是否符合语法规则。

二.实例

文档类型声明的两种方式:

1.内部定义

persons.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE 根元素 [元素声明]> -->
<!DOCTYPE persons[
<!--常用的控制符:?:0-1次  ;  *:0-N次;  	+:1-N次; 	默认:1次  -->
	<!ELEMENT persons (person+)>
	<!ELEMENT person (name , password, age)>
	<!-- #PCDATA 是XML解析器解析的文本数据使用的一个术语 -->
	<!-- CDATA出现在属性声明中 -->
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT password (#PCDATA)>
	<!ELEMENT age (#PCDATA)>
	<!-- #REQUIRED	属性值是必需的 -->
	<!-- #IMPLIED	属性不是必需的 -->
	<!-- #FIXED value	属性值是固定的 -->
	<!-- ID	值为唯一的 id -->
	<!ATTLIST person id ID #REQUIRED>
	<!-- CDATA	值为字符数据 (character data) -->
	<!ATTLIST person email CDATA #REQUIRED>
]>

<persons>
	<person id="p1070541038" email="[email protected]">
		<name>赵栗婧</name>
		<password>000000</password>
		<age>26</age>
		<!-- <id>p1070541038</id> --><!-- 错误写法 -->
		<!-- <email>[email protected]</email> -->
	</person>
	<person id="p2070541038" email="[email protected]">
		<name>赵栗婧</name>
		<password>000000</password>
		<age>26</age>
	</person>
</persons>

2.外部定义

classroom.dtd 文件

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT classroom (name,grade,students)>
<!ATTLIST classroom id ID #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT students (student+)>
<!ELEMENT student (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>

classroom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部文档声明 -->
<!-- 假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中: -->
<!DOCTYPE classroom  SYSTEM "classroom.dtd">
<classroom id="classroomid1">
	<name>classname1</name>
	<grade>grade1</grade>
	<students>
		<student>
			<id>studentid1</id>
			<name>studentname1</name>
			<age>studentage1</age>
		</student>
		<student>
			<id>studentid2</id>
			<name>studentname2</name>
			<age>studentage2</age>
		</student>
	</students>
</classroom>

三.点评

1.优点:

简单明了,容易编写。

可检测XML是否有效

2.缺点:

1)与XML语法不同

2)提供有限的数据类型,用户无法自定义类型

3)不支持域名机制

时间: 2024-08-28 03:04:20

【WebService】(二)XML之DTD的相关文章

jQuery的ajax调用webservice返回XML数据传参错误

jQuery的ajax调用webservice返回XML数据传参错误: 有时候使用jquery的ajax调用带有参数的webservice返回XML格式输出的时候,会出现传参错误,当然错误的原因可能是多种多样的,下面就简单介绍一种. 一.错误代码: 1.ajax代码: $.ajax({ type:"post", url:"_service.asmx/getDataFromATable", data:" { tablename: temp }",

jdom dom4j解析xml不对dtd doctype进行验证(转)

一.写在所有之前:因为dom4j和jdom在这个问题上处理的方法是一模一样的,只是一个是SAXBuilder 一个SAXReader,这里以jdom距离,至于dom4j只需要同理替换一下就可以了.二.问题发生的情况当你用jdom读取一个有dtd验证的xml文件,同时你的网络是不通的情况下.会出现以下错误:1,代码如下 package dom;import java.io.File;import org.jdom.Document;import org.jdom.input.SAXBuilder;

【PHP XML与dtd概述【完整版】】

一.XML文件简介 关于XML的大多数人都知道一些,HTML->xhtml->xml,这个顺序本来应当是HTML发展的顺序. XML可以当做配置文件使用,还可以充当小型的数据库. version:文档符合xml1.0规范,我们学习的一般都是1.0encoding:文档字符编码,比如gb2312,一般使用utf-8standalone:文档定义是否独立使用standalone="yes",表名文档独立使用standalone="no":默认 XML文档有且

javaee之xml和dtd的基础练习

从昨天的学习中,我学习到了xml的基础知识,包括dtd的约束基础 一.首先 是关于dtd的联系,关于这部分我们知识需要了解能够根据dtd约束来写出xml文件即可 1)首先是dtd文件: <!ELEMENT TVSCHEDULE (CHANNEL+)> <!ELEMENT CHANNEL (BANNER,DAY+)> <!ELEMENT BANNER (#PCDATA)> <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>

xml基础之二(XML结构【1】)

xml基础之二(XML结构[1]) 新建 模板 小书匠 XML结构 XML结构 1.1 元素:被开始标签和结束标签所包裹的内容,(红色部分),蓝色部分也是元素,由于其仅有词语和句子,可细分为文本元素. 1.2 属性:在开始标签内,用于描述标签附加信息的字段,等于号前面的字段为属性,其后面的字符串为属性值.(青绿色部分) 简化结构如下: xml简化结构 从根节点开始,包含1个或多个子节点,子节点还可以有其他子节点,在这些子节点的开始标签内用属性来定义其功能特性和附加信息,在开始和结束标签内的用文本

理清XML,HTML,DTD,Schema,户阿由

其实我是很厉害的段子手,吹逼高手.很久很久以前,有一次,在那个那个地方...(啪)卢本伟闭嘴==! 1.HTML和XML没啥关系,XML和DTD,Schema比较亲近. 2.HTML是显示数据.XML是传输存储数据.(至于定义什么的自己去搜着看,我主要是了解他们干嘛的.) 3.DTD是一种语法规则,它用来规则XML文档怎么怎么写. 4.Schema就牛逼了,基于XML,只是功能比DTD更丰富,但是最最根本的目标,和DTD一样,为了让XML更方便写,传输存储处理数据上功能更强大. 5.DTD和Sc

XML学习总结(二)——XML入门

一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(processing instruction) 1.1.xml语法——文档声明 在编写XML文档时,需要先使用文档声明,声明XML文档的类型. 最简单的声明语法: <?xml version="1.0" ?> 例如: 1 <?xml version="1.0"?> 2 <softCo

WebService传递XML数据 C#DataSet操作XML 解析WebService返回的XML数据

Webservice传递的数据只能是序列化的数据,典型的就是xml数据.   /// <summary>         /// 通过用户名和密码 返回下行数据         /// </summary>         /// <param name="UserName">用户名</param>         /// <param name="UserPwd">密码</param>    

xml约束DTD演示

此演示xml和DTD在一个文件中 book.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE 书架 [ <!ELEMENT 书架 (书+)> <!ELEMENT 书 (书名,作者,售价)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 售价 (#PCDATA)> &