`
isiqi
  • 浏览: 16650011 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

XML之文档类型定义[转载]

阅读更多

DTD Document Type Definition 文档类型定义。我们在XML中可以自定义标记,那XML解析器怎么认识这些自定义标记并根据自定义标记的处理法则来处理元素呢?这需要DTD,它是我们用来定义我们自己定义的标记的含义,我们自己定义元素的相关属性的文档。
DTD与XML是类与对象,数据库表结构与记录的关系。
符合XML规则(包括必须有XML声明语句;必须有且只有一个根元素;标记大小写敏感;属性值用引号;标记成对,空标记关闭;元素正确嵌套)的XML文档称为结构完成的XML文档;符合XML规则并且符合DTD验证的XML文档称为合法的XML文档。IE只验证结构完整性不验证合法性,XMLSPY验证合法性。
DTD分类:内部DTD;外部DTD;内外结合的DTD。
外部DTD的优点:被多个XML共享,保持统一的数据交换格式,不同组织的人使用同一个通用的DTD来交换数据;应用程序可以使用一个标准DTD效验从外部世界接受来的XML数据是否有效。
下面是一个lsmx.dtd

<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 家庭 (人+, 家电*)>
<!ELEMENT 人 (#PCDATA)>
<!ELEMENT 家电 EMPTY>
<!ATTLIST 人
名字 CDATA #REQUIRED
性别 (男 | 女) #REQUIRED
年龄 CDATA #REQUIRED
爱好 CDATA #IMPLIED
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
说明 CDATA #IMPLIED
>

元素定义
<!ELEMENT NAME CONTENT>
关键字 元素名称 元素类型
元素类型
1, EMPTY:空元素,但可以有属性。<mytag id=”001”/>。
2, ANY:含任何DTD中定义的元素内容。
3, #PCDATA:纯文本,不能有任何自元素。<!ELEMENT 人 (#PCDATA)>。
4, 组合类型:<!ELEMENT 家庭 (人+, 家电*)>。
符号含义:+最少出现一次;*可以出现任意次,包括0次;?出现0或一次;(a,b,c)a,b,c必须出现,并且按指定位置出现。

属性定义
<!ATTLIST 元素名称
属性名称 属性类型 属性特点
··········
>
属性类型:
1, CDATA:只包含字符数据。
2, ID:类似主键,必须唯一。
3, NMTOKEN 不包含中文的CDATA。
4, 枚举事先定义好一些值,该属性的值必须匹配列出的这些数值。
性别 (男 | 女) #REQUIRED。
属性特点:
1,#REQUIRED NOTNULL 非空。
2,#IMPLIED 可写可不写。
3,#FIXED value 固定值,不可变。
属性名 CDATA #FIXED“固定值”
5, Default value 默认值

实现:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE 家庭 SYSTEM "lsmx.dtd">
<家庭>
<人名字="郭大路" 性别="男" 年龄="25"/>
<人名字="李寻欢" 性别="男" 年龄="38" 爱好="作个教育家和伟人"/>
<家电名称="彩电" 数量="3"/>
</家庭>

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenanlin1981/archive/2006/06/27/840531.aspx

分享到:
评论

相关推荐

    TinyXML2.5.2中文文档

    - **不支持 DTD 和 XSL**:TinyXML 不解析文档类型定义(DTD)或可扩展样式表语言(XSL),因此对于需要这些特性的复杂应用来说可能不是最佳选择。 - **兼容性与便携性**: - **跨平台兼容**:TinyXML 能够在任何...

    [转载] JAXB中Java对象和XML之间的转换

    XML Schema定义了XML文档的结构,通过`xsdschema`文件,JAXB可以自动生成符合Schema的Java类。 2. **XML序列化**: 将Java对象转换为XML文档的过程称为序列化。JAXB提供了`Marshaller`接口来实现这个功能。开发者...

    xml 解析,下边是位哥们的全新奉献,这里我转载了,谢谢这位哥们。。

    1. DOM解析:DOM将整个XML文档加载到内存中,创建一个树形结构,允许开发者通过节点遍历和操作XML文档。这种方式适用于小型XML文件,因为大型文件可能会消耗大量内存。 2. SAX解析:SAX是一种事件驱动的解析方式,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 ...

    JavaScript 解析读取XML文档 实例代码

    在这篇转载的文章中,展示了如何使用JavaScript来解析和读取XML文档,并通过实例代码进行了演示。文章提供的实例代码向我们展示了几点核心知识: 1. 使用JavaScript的XMLHttpRequest对象来加载和解析XML文件。...

    Ext学习文档--转载整理

    EXT的一大亮点是支持可编辑的网格(Edit Grid),能够处理XML和JSON数据类型,且具备详尽的文档说明。 下载EXT的最新版本通常是大多数开发者的首选,可以从官方站点http://extjs.com/downloads 获取。EXT提供了多个...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    4.19.3 输出文档类型定义 159 4.19.4 输出cdata段 160 4.19.5 指定文档缩进 161 4.19.6 指定媒体类型 161 4.20 xslt中的函数 162 4.21 数字格式化 162 4.22 查询和分组 164 4.23 处理多个输入文档 172 4.24 ...

    Castor学习笔记 (转载)

    它提供了一种简单的方法来处理XML数据,将XML文档转换为Java对象,反之亦然,极大地简化了数据交换的工作。在这个学习笔记中,我们将深入探讨Castor的核心功能、使用场景以及其与XML绑定相关的技术。 1. Castor的...

    springmybatis

    3. 在User.xml 文件里面 主要是定义各种SQL 语句,以及这些语句的参数,以及要返回的类型等. 开始测试 在test_src 源码目录下建立com.yihaomen.test这个package,并建立测试类Test: 程序代码 程序代码 package ...

    DWR中文文档v0.9

    - **2.4 多个dwr.xml配置和J2EE角色定义** - 探讨了如何处理多个dwr.xml文件的情况,并解释了如何为不同的J2EE角色定义相应的配置。 - **2.5 插件配置** - 介绍了如何配置DWR插件以扩展其功能。 - **2.6 测试模式...

    XMLHttpRequest中文参考手册

    这对于发送特定格式的数据(如 JSON 或 XML)非常重要,因为它定义了内容类型和其他元数据: ```javascript xmlHttpReq.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); ``` 以上介绍了 ...

    欧标 DIN 70121 -中文译文

    而应用层则包含了电动汽车和充电站之间的交互,如消息定义、协议握手、消息结构、数据类型定义、会话和错误处理等。 标准还详细描述了直流充电系统的架构,包括了直流充电系统的原理图、先导功能以及通信栈架构。...

    html 语言 学习札记

    在HTML文档中,`xmlns`是一个命名空间的声明,它指定了文档所使用的XML版本,例如在XHTML中,`xmlns="http://www.w3.org/1999/xhtml"`声明了文档使用的是XHTML 1.0规范。 编码语言的声明是通过`&lt;meta&gt;`标签完成的,...

    Python车辆违章查询系统源码.zip

    3. 数据解析:返回的违章信息通常是以JSON或XML格式的数据,需要使用如json或xml库进行解析,将原始数据转换为Python可以处理的对象。 4. 数据展示:查询结果可能需要以友好的方式呈现给用户,这可能涉及到使用...

    webservice demo

    1. **SOAP(Simple Object Access Protocol)**:SOAP是一种基于XML的协议,用于在Web上交换结构化和类型化的信息。它是Web服务的核心通信协议,允许应用程序通过HTTP、HTTPS等协议传输数据。 2. **WSDL(Web ...

    thinkPHP5快速入门手册

    - **版权说明**:文档版权属于ThinkPHP官方,未经授权禁止任何形式的转载与下载。 - **版本优势**:更灵活的路由配置,依赖注入,请求缓存,更强大的查询语法,引入请求/响应对象,增强的模型功能等。 #### 一、...

    WebWork教程开发资料

    这通常包括下载WebWork的JAR文件并将其添加到项目的类路径中,配置web.xml以启动WebWork的前端控制器。然后,创建一个简单的"HelloWorld"应用,这通常是学习新框架的第一步。在WebWork中,这将涉及创建一个Action类...

Global site tag (gtag.js) - Google Analytics