XML中的DTD文档类型定义完全解析的示例代码(图)

xml标签的自定义功能非常强大,比如本文将要讲解的dtd(document type definition)就带给人们一种面向对象般的感觉,well,下面就来看一下xml中的dtd文件类型定义完全解析

一、何为DTD
DTD的全称为Document Type Definition,是一种文件定义格式,它规定了XML文件结构为XML文件提供了语法与规则。在DTD中定义XML文件的结构,然后按照DTD的声明来编写XML文件。它就好像编程语言中的函数定义,在使用函数时要根据函数声明的格式进行来引用。
XML中的DTD文档类型定义完全解析的示例代码(图)

二、DTD详解
1、实例详解

          nbsp;影片目录[                                                                                                                             ]>                                十面埋伏片名>              刘德华、金城武、章子怡主演>              张艺谋导演>              &十面埋伏;简介>        影片>                    霍元甲片名>            李连杰主演>            于仁泰导演>            &霍元甲;简介>        影片>     影片目录>

登录后复制

1.1 DTD声明开始语句

(1)内部声明:具体的DTD语句]>
(2)外部声明:键字(SYSTEM/PUBLIC) “dtd文件名称/dtd文件的网络地址”>
对于外部声明有多种形式,主要分为SYSTEM和PUBLIC类型的文件。
SYSTEM:一个作者或组织编写的众多XML文档中通用的DTD;
PUBLIC:由权威机构制定,提供给特定行业或公众使用的DTD。
1.2 其它声明
(1)元素:


登录后复制登录后复制

(2)属性列表:


登录后复制登录后复制

(3)实体
内部
一般:
参数:
外部
一般:
参数:

2、内容详解
2.1 元素声明
XML中的DTD文档类型定义完全解析的示例代码(图)

在元素声明中需要注意的主要是几种特殊的元素声明和子元素出现的次数、选择性、混合型,它们的作用类似于编程语言中的算数和逻辑运算符。如下,为具有多种元素的DTD实例。

     nbsp;影片目录 [                                                                                                                   ]>

登录后复制

想要深入了解元素声明的基本语法,请下载该导图。
2.2 命名冲突

在一个复杂的XML文档中有的时候会出现同名的元素,为了避免这种现象引入了命名空间和前缀标识。
2.2.1 命名空间
使用xmlns来引入命名空间,告诉用户哪一部分是属于该空间内的。在作用上它和其它编程语言中的命名空间有点类似,确保了元素的唯一性,避免发生冲突。

                     werer
             fdfdsfsdf
                影片>

登录后复制

作用:标准化元素和属性,并为它们加上唯一标志;确保元素名称中没有冲突,并阐明了它们的来源。
2.2.2 前缀标识
在元素名和属性名前增加一个标识,以唯一区分当前元素或属性来自哪一个DTD,它常常和命名空间联合使用,如上例中的和。

三、实体详解

有了元素为什么还要引入实体呢?要想区分两者,首先要看实体引入的目的。实体机制是一种节省大量时间的工具,将多种不同类型的数据并入XML文档的方法。它就好像是面向对象的抽象类一样,把经常使用的抽象成一个实体,在使用它的地方可以直接引用,避免了重复。
详细的说
(1)代替无法输入的字符,键盘只有26个字母和一些简单的标点符号,而字符集中有成N多各种符号是无法在键盘中输入的。
(2)代替一些与xml规范保留字相冲突的内容,如: 等等。
(3)代替大段的重复的文本。
实体引用按照引用的位置分为内部和外部两种,按照引用的内容分为一般和参数引用两种。下面看一个外部实体引用的实例:

清单1:“2.dtd”的声明

                                                               

登录后复制

清单2:影评.xml的内容

           这些影评都是由XXX公司出品,值得观看!     影评>

登录后复制登录后复制

清单3:使用dtd的xml文件中的内容。

           这些影评都是由XXX公司出品,值得观看!     影评>

登录后复制登录后复制

清单3:使用dtd的xml文件中的内容。  

     nbsp;影片目录 SYSTEM "./2.dtd" >                           十面埋伏片名>             刘德华、金城武、章子怡主演>             张艺谋导演>             &十面埋伏;简介>         影片>                      霍元甲片名>             李连杰主演>             于仁泰导演>             &霍元甲;简介>         影片>          &filmcomment;     影片目录>

登录后复制

     
清单4:使用IE8打开清单3后的内容

       nbsp;影片目录 (View Source for full doctype...)>     -      -               十面埋伏片名>            刘德华、金城武、章子怡主演>            张艺谋导演>            漫天大雪,三人在雪中决斗简介>         影片>     -               霍元甲片名>            李连杰主演>            于仁泰导演>            民族英雄,与西方帝国主义抗争简介>         影片>         这些影评都是由XXX公司出品,值得观看!影评>       影片目录>

登录后复制

内部和外部很容易理解,主要看一般和参数两种引用的区别。

1.参数实体

清单1:test.dtd,在此该内容单独存在了一个dtd文件中是因为在内部DTD子集中。
参数实体引用不能在标记声明内部出现,可以在标记声明允许出现的地方出现。然而,对于外部DTD子集,则没有这个限制。

                         

登录后复制

清单2:学校信息.xml文件,引用了外部的test.dtd文件

                nbsp;学校信息 SYSTEM './test.dtd'>                       张三姓名>       男性别>       2013-10-12出生日期>      学生信息>             张三姓名>       男性别>       2013-10-12出生日期>      教师信息>             张三姓名>       男性别>       2013-10-12出生日期>      员工信息>     学校信息>

登录后复制

       
清单3:使用IE8打开清单2的内容后

     -        nbsp;学校信息 (View Source for full doctype...)>     -      -      -                张三姓名>            男性别>            2013-10-12出生日期>          学生信息>     -                 张三姓名>             男性别>             2013-10-12出生日期>          教师信息>     -                 张三姓名>             男性别>             2013-10-12出生日期>          员工信息>       学校信息>

登录后复制

 
2. 一般实体

可在XML元素中加以引用,也可以在DTD中引用,但参数实体只能在DTD中引用,并且通常情况下只能在外部DTD文档中引用。

3. 对比升华

参数实体与一般实体的区别如下:

     (l)在定义参数实体时,实体名前必须加一个“%”号。

     (2)参数实体引用以“%”开始,而不是一般实体引用的“&”。

     (3)参数实体的内容不仅可以包含文本,还可以包含标记。

     (4)参数实体只能应用于DTD,而不能在文档本体中引用。即参数实体只能用来构成DTD的内容,而不能构成文档内容。

     (5)参数实体只能在外部DTD文档中使用,无法应用于内部DTD。

外部参数实体与外部一般实体的区别如下:

     (1)外部参数实体应用于独立的DTD文档,外部一般实体应用于XML文档。

     (2)外部参数实体应用于将多个独立的DTD文档组合为一个大的DTD文档,外部一般实体用于将多个独立的XML文档组合成一个大的XML文档。

四、验证XML文件的合法性

DTD定义了XML文件的使用格式,它从结构和形式上限制了XML文档,通过引用DTD可以形成统一的规范化的XML文档,另外通过使用实体简化了DTD和XML文档的内容。使用DTD验证的XML文档才能称为规范化文档,那如何验证所写的XML文档是否符合DTD的规范呢。通过如下的代码串:

import javax.xml.parsers.DocumentBuilder;     import javax.xml.parsers.DocumentBuilderFactory;          import org.xml.sax.InputSource;          public class ValidateDTD     {         public static void main(String[] args){                          //在验证前需要把需要验证的XML和规范DTD包含在jar中             try{                 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();    //创建一个文档构造工厂                 dbf.setValidating(true);                 DocumentBuilder builder=dbf.newDocumentBuilder();                 builder.parse(new InputSource("xml-2-2.xml"));  //需要验证的XML名称             }catch(Exception e){                 e.printStackTrace();             }         }     }

登录后复制

上面代码中的类和结构主要完成了XML文档的解析,并且在解析之前验证当前XML文件是否符合某个DTD的定义。在上面的代码运行前需要将需要验证的XML和提供规范化的DTD文档引入到当前ValidateDTD项目中,后运行上面的代码实例,该项目会在项目文件中自动查找规范的DTD,然后验证xml文件。

五、结语
至此,有关文件定义格式的内容已经基本上讨论了一遍,从最初的元素声明到复杂多变的实体类型,DTD的引入无疑为XML的使用指定了一个统一的标准,这种标准是由提供方规定好,使用方遵守的一种规则,并在最后讨论了如何验证引用DTD的XML合法与否。另外描述XML文档结构的不仅仅只有DTD,DTD是一种早期的定义格式,它有很多缺点,如不支持数据类型,不易于扩展等,为了避免这种缺点后来又引入了Schema,它是DTD的继任者,下篇博客将着重讨论Schema。

以上就是XML中的DTD文档类型定义完全解析的示例代码(图)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2419441.html

(0)
上一篇 2025年3月3日 02:45:48
下一篇 2025年3月3日 02:46:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • XML教程-XML的用途介绍

    XML是被设计为存储、传输以及交换数据的。XML不是被设计为用来显示数据的。XML可以将HTML与数据分离通过使用XML,您的数据可存储于HTML之外。当我们使用HTML来显示数据时,数据存储于HTML中。通过使用XML,数据可以被存储在单…

    编程技术 2025年3月3日
    200
  • 使用XML将机器内码转换为人们能够理解的信息案例分享

      程序中通常会有一些错误代码或标识,为了程序中方便这些东西通常不会使用汉字,经常在程序中用的是一些fileerror或数字。还有就是在编码中经常使用的枚举标识对象的状态。而通常这些信息会直接的或间接的现实给用户,可用户需要到的是容易理解的…

    编程技术 2025年3月3日
    200
  • 初学XML的基础知识-认识XML的作用

    “可扩展标记语言”(XML) 提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的 HTML 标记不同,XML 标记用于定义数据本身的结构和数据类型。 XML 使用一组标记来描绘数据元素。每个元素封装可能十分简单也可能十分复杂的数…

    编程技术 2025年3月3日
    200
  • 详细介绍xml的使用方法总结

    1、 认识xml 可扩展标记语言,一种用于标记电子文档使其具有结果性的标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 2、 和超文本标记语言区别 2.1 html不一定需要成对出现,xml则一定…

    编程技术 2025年3月3日
    200
  • 详细介绍测试几个xml的问题的案例

    使用sql server的时候,免不了与xml的参数打交道,xml大多数时候都给我们的程序带来方便,但是也有些时候会有变量赋值不通过的时候。(当然罗,如果你本身xml都通不过 xml spy 之类软件的检查的话那就不是这方面的范围啦~) 今…

    编程技术 2025年3月3日
    200
  • 教你如何正确使用XML

    首先要明确的是:xml是被设计用来存储数据、携带数据和交换数据的,他不是为了显示数据而设计的。 ——————————&#…

    编程技术 2025年3月3日
    200
  • 简单介绍XML Schema中的elementFormDefault属性

    下面小编就为大家带来一篇浅谈xml schema中的elementformdefault属性。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 elementFormDefault属性与命名空间相关,其值可设置为…

    编程技术 2025年3月3日
    200
  • 利用xslt将xml解析成xhtml的代码示例

    xslt进行解析的基本格式如下所示的代码,需要的朋友可以参考下 使用xslt进行解析的基本格式是这样的:如 代码如下:       //这里可以包含一些xhtml的标签     登录后复制 XSL 指扩展样式表语言(EXtensible S…

    编程技术 2025年3月3日
    200
  • android三种操作XML的方法总结

    在android中,操作xml文件,一般有几种方式:sax操作,pull操作,dom操作等。其中dom的方式,可能是大家最熟悉的,也是符合w3c标准的 XML作为一种业界公认的数据交换格式,在各个平台与语言之上,都有广泛使用和实现。其标准型…

    编程技术 2025年3月3日
    200
  • jscript和vbscript对XML元素属性进行操作的方法

    jscript和vbscript对xml元素属性进行操作的方法,需要的朋友可以参考下。 Although attributes belong to a particular element, they are not considered …

    编程技术 2025年3月3日
    200

发表回复

登录后才能评论