`
schy_hqh
  • 浏览: 558157 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

XML_DTD

 
阅读更多

DTD,约束xml中元素出现的特性:
是否必须,出现次数,书写顺序等

DTD的缺点
不同元素下不能出现同样的节点名称;能够提供的数据类型比较少,比如枚举类型(男,女,未知)不支持;定制不灵活;等等


编写一个person的dtd:
persons作为根,persons下能够存在多个person
person有属性:id 有且唯一,height必须有,sex有默认值
person有元素:name 默认出现1次,password可有可无,age默认出现1次,addr至少出现1次
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义persons的DTD文件,指定根对象-->
<!DOCTYPE persons[
	<!-- 元素与类型之间要有空格,否则格式报错 -->

	<!-- 声明persons类型 -->
	<!ELEMENT persons (person+)>
	
	<!-- 定义person,并指定其中包含的元素和出现的顺序 -->
	<!-- 标签出现次数控制符 ?:0次或者1次; *:0次或者多次;+:1次或者多次;默认为1次-->
	<!-- 使用+说明addr至少出现1次 -->
	<!ELEMENT person (name,password?,age,addr+)>
    
    <!-- 定义person的属性 -->
	<!--使用ATTLIST增加属性-->
	<!-- id类型,不允许重复 -->
	<!ATTLIST person id ID #REQUIRED>
	<!-- 使用#REQUIRED 表示该属性必须要出现 -->
	<!ATTLIST person height CDATA #REQUIRED>
	<!-- CDATA 值为字符数据character data -->
	<!ATTLIST person sex CDATA "男">
	
	<!-- 定义person的元素节点 -->
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT password (#PCDATA)>
	<!ELEMENT age (#PCDATA)>
	<!ELEMENT addr (#PCDATA)>	
]>

<persons>
	<!-- persons中可以出现多个person元素 -->
        <!-- id如果为数字,xmlspy会报错,这里使用字母来标识id  -->
	<person sex="男" height="170CM" id="p1">
		<name>zhangsan</name>
		<!--password可有可无,因为在声明的时候用?进行了修饰-->
		<password>abc</password>
		<age>18</age>
		<addr>bj</addr>
		<addr>sh</addr>
	</person>
	
	<person height="187CM" id="p2">
		<name>lisi</name>
		<age>21</age>
		<addr>sz</addr>
		<addr>xg</addr>
	</person>
	
</persons>



编写一个dtd
classroom.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT classroom (cname,grade,students)>
	<!ATTLIST classroom id ID #REQUIRED>
	<!ELEMENT cname (#PCDATA)>
	<!ELEMENT grade (#PCDATA)>
	<!ELEMENT students (student+)>
		<!ELEMENT student (id,sname,age)>
			<!ELEMENT id (#PCDATA)>
			<!ELEMENT sname (#PCDATA)>
			<!ELEMENT age (#PCDATA)>


将dtd编入到eclipse的目录中
window-->preference-->XML-->XML Catolog-->User Specified Entried-->Add
Next Catalog(从当前工程中引入)-->Workspace-->OK!


引入dtd,并编写一个xml
classroom.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	引入编写的classroom DTD文件对当前的xml进行文档约束 
	1.使用DOCTYPE说明需要引入dtd文件
	2。给被引入的dtd文件取一个名称:classroom 
	3.指定如何引入外部dtd文件:
		 PUBLIC 公共的,引用外部互联网的dtd 
		 SYSTEM 内部的,引入内部的dtd 
-->
<!DOCTYPE classroom SYSTEM "classroom.dtd">
<!-- 定义一个班级 -->
<classroom id="c1">
	<!-- 班级的名称 -->
	<cname>one</cname>
	<!-- 班级所在年级 -->
	<grade>2013</grade>
	<!-- 学生集合 -->
	<students>
		<!-- 学生 -->
		<student>
			<id>1</id>
			<sname>zs</sname>
			<age>12</age>
		</student>
		<!-- 学生 -->
		<student>
			<id>2</id>
			<sname>ls</sname>
			<age>12</age>
		</student>
	</students>
</classroom>



-------------------------------------------------------------
根据xml反向编写DTD文件
person.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons SYSTEM "C:\Users\lenovo\Desktop\person.dtd">
<persons>
	<person id="p1">
		<name></name>
		<age></age>
		<sex></sex>
		<messages>
			<message>
				<title></title>
				<content></content>
			</message>
		</messages>
	</person>
	<person id="p2">
		<name></name>
		<age></age>
		<sex></sex>
		<messages>
			<message>
				<title></title>
				<content></content>
			</message>
		</messages>
	</person>
</persons>


person.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT persons (person+)>
	<!ELEMENT person (name,age,sex,messages+)>
		<!ATTLIST person id ID #REQUIRED>
		<!ELEMENT name (#PCDATA)>
		<!ELEMENT age (#PCDATA)>
		<!ELEMENT sex (#PCDATA)>
		<!ELEMENT messages (message+)>
			<!ELEMENT message (title,content)>
				<!ELEMENT title (#PCDATA)>
				<!ELEMENT content (#PCDATA)>
分享到:
评论

相关推荐

    dtd.rar_dtd_java dtd_xml dtd

    标题"DTD.rar_dtd_java dtd_xml dtd"暗示了这是一个与XML文档类型定义(DTD)相关的Java程序,可能包含了用于验证XML文档是否符合DTD规范的代码。"rar"表明这个资源是以RAR格式压缩的文件,通常包含多个相关文件。 ...

    XML.rar_dtd xml_xml dtd_xml schema_xml 设计

    在本主题中,我们将深入探讨如何利用DTD(Document Type Definition)和XML Schema来设计一个表示图书信息的XML文档。这两种方法都是为了确保XML文档结构的合法性与一致性。 首先,DTD是XML的早期验证机制,它定义...

    xml.rar_Recall_XML DOM_html_xml_xml dtd

    从第二章到第四章,我们分别从XML语法、DTD和样式单三方面详细介绍XML的三个基本要件。在第五、第六章中,我们从与XML相关的协议和软件工具两个角度来分析XML的使用现状。第七、八、九章,我们将讨论一些与XML相关的...

    XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介.pdf

    ### XML_XSL_DTD_SCHEMA_SAX_DOM_JDOM_WEBSERVICE简介 #### 背景知识点拨 XML(可扩展标记语言,Extensible Markup Language)及其相关技术(如XSL、DTD、Schema、SAX、DOM、JDOM以及Web服务)在现代信息技术中...

    DTD_Schema.rar.rar_dtd_xml_xml schema

    在处理XML文档时,为了确保数据的一致性和准确性,我们通常会使用DTD(Document Type Definition)或XML Schema来定义文档的结构。这两个工具都是XML的约束机制,用于规定XML文档的元素、属性以及它们之间的关系。 ...

    Lotus Domino Designer 6 Programming Guide, Volume 4_ XML_Domino_DTD_and_JSP_Tags

    ### Lotus Domino Designer 6 Programming Guide, Volume 4: XML, Domino DTD, and JSP Tags #### 概述 《Lotus Domino Designer 6 Programming Guide, Volume 4: XML, Domino DTD, and JSP Tags》是针对Lotus ...

    xml_io_tools_2010_11_05.rar

    4. **XML验证**:可能包含了对XML文档进行结构验证的功能,确保其符合预定义的XML Schema或DTD(文档类型定义)。 5. **XML修改**:提供了方便的API接口,让用户能够轻松地添加、删除或修改XML文档中的节点和属性。 ...

    xml与DTD,xml与DTD

    ### XML与DTD详解 #### 一、XML简介 XML(Extensible Markup Language)是一种非常重要的数据交换标准,它被广泛应用于互联网数据交换场景之中。XML的设计初衷是为了传输和存储数据,其灵活性允许用户自定义标签,...

    XML.rar_delphi XML_xml_xml delphi

    4. **XML验证**:了解如何使用DTD(Document Type Definition)或XML Schema来验证XML文档的结构。 5. **XSLT转换**:学习如何使用XSL样式表将XML转换为其他格式,如HTML。 6. **事件驱动处理**:如果压缩包包含事件...

    spring_mybatis_dtd_lib

    这个名为"spring_mybatis_dtd_lib"的压缩包文件包含了Spring MVC 3和4版本,MyBatis 3,以及MySQL 5.1的相关库文件,这些都是开发基于Java的Web应用程序时不可或缺的部分。下面将详细讲解这些知识点。 **1. Spring...

    XML.rar_Csharp xml_c# xml文件读写_xml_xml读写_读写xml

    5. **DTD(Document Type Definition)**或**XML Schema(XSD)**:定义XML文档的结构和约束。 C#中处理XML文件的其他高级功能还包括: - 使用XmlNodeReader和XmlReader进行流式读取,节省内存资源。 - LINQ-to-...

    tinyxml_libtinyxml的缺点_test_tinyxml_keptj4v_解析xml_

    3. 不支持XML Schema或DTD:TinyXML不支持XML Schema验证或DTD(Document Type Definition),这意味着它无法确保XML文档符合预定义的结构。 4. 不完全符合XML标准:虽然TinyXML可以处理大多数常见的XML文档,但它...

    mybatis-generator-config_1_0.dtd

    mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...

    test_XML.rar_c 读写xml_test_xml_test_xml.rar_读写xml

    然而,实际应用中可能需要处理更复杂的情况,如XML命名空间、XPath查询、DTD或XSD验证等。理解XML的基础知识和选择合适的库是解决这些问题的关键。在处理XML时,确保正确处理字符编码、空格和特殊字符,以确保数据的...

    XML_xml_

    3. 文档类型定义(DTD)或XML Schema:这些工具可以用来验证XML文档的结构是否符合预定义的规则,确保数据的准确性和一致性。 4. 跨平台和跨应用程序:由于XML是基于标准的,所以可以在不同的操作系统和软件环境中...

    xml_批处理学习 xml_批处理学习

    2. **验证XML**:使用XML Schema(XSD)或DTD(Document Type Definition)验证XML文档是否符合预定义的结构。 3. **搜索和替换**:查找并修改XML文档中特定元素或属性的值。 4. **转换XML**:使用XSLT(Extensible ...

    配置Mybatis_DTD环境

    DTD(Document Type Definition)是XML文档类型定义,用于规定XML文件的结构和元素。在Mybatis的环境中,DTD文件主要用来验证XML配置文件的正确性,确保其符合预定义的规则。以下将详细讲解如何配置Mybatis的DTD环境...

    XML的DTD教程

    ### XML的DTD教程 #### 一、文档类型定义(DTD)概述 文档类型定义(Document Type Definition,简称DTD)是一种用于定义XML文档结构的语言。它主要用于描述XML文档中元素、属性以及实体等组成部分的规则,确保XML...

    XML(W3C标准).rar_w3c_w3c webservi_xml_xml XML_xml w3c

    W3C对XML的标准化工作包括定义XML的语法规范、命名空间(Namespaces)规则、文档类型定义(DTD)和XML Schema,以及XPath、XSLT、XQuery等处理XML的语言。这些规范确保了不同系统间XML数据的互操作性和一致性。 XML...

    xml数据演示.rar_XML系统_xml_xml html

    5. **文档类型定义(DTD,Document Type Definition)** 或者 **XML Schema(XSD)**:定义XML文档的结构和规则,用于验证XML文档的合法性。 6. **XPath(XML Path Language)**:一种用于在XML文档中查找信息的语言...

Global site tag (gtag.js) - Google Analytics