转自:https://www.cnblogs.com/xiaofu007/p/5079428.html
文件名 student.xml
1 <?xml version="1.0" encoding="GB2312" standalone="no"?> 2 <!--大家好,我是注释--> 3 <!--2015.12.27--> 4 <!DOCTYPE students SYSTEM "student.dtd"> 5 <!--这里没写盘符,及表示当前目录下,也就是说两个文件(student.xml和student.dtd)要放一起--> 6 7 <students> 8 <student number="ITCAST_1001"> 9 <name>张三</name> 10 <age>23</age> 11 <sex>male</sex> 12 </student> 13 14 <student number="ITCAST_1002"> 15 <name>李四</name> 16 <age>25</age> 17 <sex>female</sex> 18 </student> 19 </students>
- DTD是什么:XML文档的类型定义,XML的约束。
- 如果a.xml文件受b.dtd的约束,那在a.xml文件中只能出现在b.dtd中定义的元素和属性。
- html就是一个被DTD约束的文件,所以在html文件中不可能随意给出元素和属性
- 当然,dtd的扩展名字就叫 .dtd
文件名:student.dtd
1 <!--大家好,我是注释--> 2 <!--2015.12.27--> 3 4 <!--“#PCDATA”表示元素中嵌套的是普通的文本字符串--> 5 6 <!ELEMENT students (student+)> 7 8 <!--“student+”中“+”加号表示拥有一到多个student元素--> 9 10 <!ELEMENT student (name,age,sex)> 11 <!ELEMENT name (#PCDATA)> 12 <!ELEMENT age (#PCDATA)> 13 <!ELEMENT sex (#PCDATA)>
DTD根据所处位置分为两类:
- 内部DTD和外部DTD。
- 外部DTD又分为:SYSTEM(本地的)和PUBLIC(网上的)。
内部dtd:
1 <?xml version="1.0" encoding="GB2312" standalone="yes"?> 2 3 <!--大家好,我是注释--> 4 <!--2015.12.27--> 5 6 <!--“#PCDATA”表示元素中嵌套的是普通的文本字符串--> 7 <!--“student+”中“+”加号表示拥有一到多个student元素--> 8 <!DOCTYPE students[ 9 <!ELEMENT students (student+)> 10 <!ELEMENT student (name,age,sex)> 11 <!ELEMENT name (#PCDATA)> 12 <!ELEMENT age (#PCDATA)> 13 <!ELEMENT sex (#PCDATA)> 14 ]> 15 16 17 <students> 18 <student number="ITCAST_1001"> 19 <name>张三</name> 20 <age>23</age> 21 <sex>male</sex> 22 </student> 23 24 <student number="ITCAST_1002"> 25 <name>李四</name> 26 <age>25</age> 27 <sex>female</sex> 28 </student> 29 </students>
外部DTD中的本地DTD
就是上面student.xml和student.dtd组合一起。
语法: <!DOCTYPE 根元素 SYSTEM "dtd文件路径">
外部DTD的网上DTD
语法: <!DOCTYPE 根元素 PUBLIC "dtd名称" "dtd网址">
1 <?xml version="1.0" encoding="GB2312" standalone="no"?> 2 <!--大家好,我是注释--> 3 <!--2015.12.27--> 4 5 <!DOCTYPE students PUBLIC ".//qdmmy6//DTD ST 1.0//ZH" "http://www.qdmmy6.com/xml/dtds/st.dtd"> 6 7 8 <students> 9 <student number="ITCAST_1001"> 10 <name>张三</name> 11 <age>23</age> 12 <sex>male</sex> 13 </student> 14 15 <student number="ITCAST_1002"> 16 <name>李四</name> 17 <age>25</age> 18 <sex>female</sex> 19 </student> 20 </students>
- DTD语法之定义元素
- 定义元素的语法: <!ELEMENT 元素名 元素描述>
- 举例1: <!ELEMENT 学生 (#PCDATA)> ,定义了一个"学生"元素,内容为文本类型 (“#PCDATA ”)。
- 举例2: <!ELEMENT 学生 (姓名,年龄,性别)> ,定义了一个"学生"元素,内容依次为“姓名”、“年龄”、“性别”元素。
- 举例3: <!ELEMENT 学生 ANY> ,定义了一个"学生"元素,内容随意不受限。
- 举例4: <!ELEMENT 学生 EMPTY> ,定义了一个"学生"元素,不能有内容,即空元素,空元素可以有属性。
- 子元素出现次数可以使用 *、+、? 来指定子元素出现的次数。
- *:可以出现0~N次;
- +:可以出现1~N次;
- ?:可以出现0~1次。
- 举例: <!ELEMENT 学生 (姓名,年龄?,业余爱好*,成绩+,性别)> ,定义一个“学生”元素,第一个子元素为“姓名”,必须且仅能出现一次,“年龄”是可有可无的,“业余爱好”可以出现0~N次,grade可以出现1~N次,“性别”必须且仅能出现一次。
- 枚举类型子元素
- 举例: <!ELEMENT 学生 (姓名|年龄|性别)> ,表示“学生”子元素为“姓名”、“年龄”、“性别”其中之一,必须仅且能选择其一。
- 定义元素的语法: <!ELEMENT 元素名 元素描述>
- DTD语法之定义属性
- <!ATTLIST> 就是 ATTRIBUTE LIST 的意思。(属性列表)
- <!ATTLIST 元素名 属性名 属性类型 设置说明> 定义属性的语法结构
- 举例: <!ATTLIST 学生 学号 CDATA #REQUIRED> ,给“学生”元素定义属性“学号”,类型为文本,这个默认是必须的。
- 属性设置说明:
- #REQUIRED :说明属性是必须的。
- #IMPLIED :说明属性是可选的。
- 默认值 :在不给出属性值时,使用默认值。
- 属性类型
- CDATA :文本类型
- Enumerated :枚举类型
- ID :ID类型,ID类型属性用于标记元素的唯一性,即元素的ID属性值不能与其他元素的ID值相同。
- IDREF :ID引用类型,用于指定另一个元素,与另一个元素建立关联关系,IDREF类型的属性值必须是另一个元素的ID。
个人觉得用xml的那种嵌套格式来写dtd也许更直观,比如上面student.dtd改成这样写
<!ELEMENT students> <student+> <name>#pcdata</name> <age>#pcdata</age> <sex>#pcdata</sex> </student> </students>
这样写可能更便于阅读,但是原生语法写起来更便捷,毕竟dtd文件不是给人看的。
相关推荐
DTD规范XML文档编写级XML文档的一般书写格式
### XML模式和DTD规范化设计的重要性 XML(Extensible Markup Language)是一种标准的数据交换格式,广泛应用于不同系统间的通信。DTD(Document Type Definition)和XML Schema是两种定义XML文档结构的方法。DTD...
描述中提到,“可以验证DTD规范的java程序,DTD规范是验证XML文件是否合法的文件”,这进一步证实了这个RAR文件内包含的是一个Java应用程序,该程序的作用是检查XML文档是否遵循了指定的DTD规则。DTD是XML的一个重要...
这个是我今天学的一个Java里面mybatis的主配置中的其中一个包,由于软件问题,只可以传一个,这是接上一个config.dtd的mapper.dtd,这个下载了,记得解压,这个是mapper.dtd还有一个config,等会发下一个教程和代码,...
MyBatis是一个流行的Java持久层框架,它简化了数据库操作,通过XML或注解的方式将SQL与Java代码绑定,提供了一种动态...在实际开发中,我们还需要关注MyBatis的官方文档和最新版本,以便获取最新的DTD规范和最佳实践。
在实际开发中,开发者会根据项目需求编写符合这两个DTD规范的XML文件。`hibernate-mapping-3.0.dtd`用于描述实体类和数据库表之间的映射关系,而`hibernate-configuration-3.0.dtd`则负责设定Hibernate运行时的环境...
然而,手动检查XML文档是否符合DTD规范既费时又容易出错,这时就催生了工具化的解决方案——"IE浏览器校验dtd文件小插件",即Iexmltls。 **Iexmltls插件简介** Iexmltls是专为Internet Explorer浏览器设计的一款...
- **DTD规范**:`-//mybatis.org//DTD Config 3.0//EN` 表示该配置文件遵循的是MyBatis 3.0版本的DTD规范。 - **配置项**: - **environments**:定义数据源环境,可以包含多个数据源,通过`default`属性指定默认...
- 确保DTD文件的版本与Hibernate库版本匹配,因为不同版本的Hibernate可能使用不同的DTD规范。 - 配置文件中的属性和元素必须符合DTD文件的规定,否则会导致解析错误。 - 在没有网络的情况下,需要将DTD文件与`...
这个声明告诉解析器文档遵循XHTML 1.0 Strict DTD,其URL指向W3C的DTD规范。 一个基本的XHTML文档结构通常由以下部分组成: 1. **DOCTYPE声明**: 它位于文档的第一行,定义了文档类型和使用的DTD。 2. **Head**: ...
**DTD(Document Type Definition)**是XML文档类型定义的缩写,它是一种规范,用于定义XML文档的结构和限制。DTD允许我们为XML文档创建一套预定义的规则,确保文档内容遵循特定的格式,便于数据交换和处理。下面将...
DTD语言规范....
**DTD(Document Type Definition)** 是XML(Extensible Markup Language)文档类型定义的缩写,它是XML规范的一部分,用于定义XML文档的结构和元素。在XML文档中,DTD的作用是确保文档内容遵循预设的规则,即所有...
[实验目的]: 1、掌握使用XMLSpy软件创建DTD和Schema文档 2、掌握在XML文档如何引入DTD和Schema,并验证有效 3、掌握DTD中声明元素、属性的方法 4、掌握Schema中声明元素,属性,类型的方法
首先引入XML上的数据冗余及其消除处理示例,同时基于函数依赖,提出了规范化的DTD概念和XML DTD 规范化处理规则;其次通过XML多值依赖的定义,给出用于消除冗余模式的算法;最后给出用于XML模式及其消除冗余模式的...
3. **测试阶段**:使用TIBCO提供的浏览器工具,开发者可以测试和验证自定义的XML文档是否符合DTD规范。这有助于发现并修复潜在问题,确保数据交换的准确性和一致性。 4. **部署与监控**:一旦验证无误,这些自定义...
在XML中,DTD(Document Type Definition)是用来定义XML文档结构的规范,它规定了元素、属性以及它们之间的关系。理解XML的外部DTD和内部DTD对于编写符合规范的XML文档至关重要。 一、XML DTD概述 DTD是一种元语言...