成都网站建设设计

将想法与焦点和您一起共享

XML中DTD文档类型定义完全解析的案例-创新互联

这篇文章给大家分享的是有关XML中DTD文档类型定义完全解析的案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联公司专注于塔城企业网站建设,成都响应式网站建设公司,商城建设。塔城网站建设公司,为塔城等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

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

二、DTD详解
1、实例详解

     
     
        
                 
             
               
            
            
            
            
            
]>     
     
<影片目录>     
   <影片 类别="武侠" 年份="2008">     
         <片名>十面埋伏     
         <主演>刘德华、金城武、章子怡     
         <导演>张艺谋     
         <简介>&十面埋伏;     
        
   <影片 类别="武侠" 年份="2006">     
       <片名>霍元甲     
       <主演>李连杰     
       <导演>于仁泰     
       <简介>&霍元甲;     
        

1.1 DTD声明开始语句

(1)内部声明:
(2)外部声明:
对于外部声明有多种形式,主要分为SYSTEM和PUBLIC类型的文件。
SYSTEM:一个作者或组织编写的众多XML文档中通用的DTD;
PUBLIC:由权威机构制定,提供给特定行业或公众使用的DTD。
1.2 其它声明
(1)元素:

(2)属性列表:

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

2、内容详解
2.1 元素声明
XML中DTD文档类型定义完全解析的案例

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

     
        
            
              
              
             
         
         
         
         
         
]>

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

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

     
<影片 xmlns:h='http://www.abc.edu' xmlns:c='http://www.123.edu'>     
       
    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文件中的内容。  

     
     
<影片目录>     
    <影片 类别="武侠" 年份="2008">     
        <片名>十面埋伏     
        <主演>刘德华、金城武、章子怡     
        <导演>张艺谋     
        <简介>&十面埋伏;     
         
    <影片 类别="武侠" 年份="2006">     
        <片名>霍元甲     
        <主演>李连杰     
        <导演>于仁泰     
        <简介>&霍元甲;     
         
     &filmcomment;     


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

     
       
- <影片目录>     
-   <影片 类别="武侠" 年份="2008">     
       <片名>十面埋伏     
       <主演>刘德华、金城武、章子怡     
       <导演>张艺谋     
       <简介>漫天大雪,三人在雪中决斗     
         
-   <影片 类别="武侠" 年份="2006">     
       <片名>霍元甲     
       <主演>李连杰     
       <导演>于仁泰     
       <简介>民族英雄,与西方帝国主义抗争     
         
    <影评>这些影评都是由XXX公司出品,值得观看!     
  

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

1.参数实体

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

     
     
     
     
     


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

     
      
     
     
     
<学校信息>     
 <学生信息>     
  <姓名>张三     
  <性别>男     
  <出生日期>2013-10-12     
      
 <教师信息>     
  <姓名>张三     
  <性别>男     
  <出生日期>2013-10-12     
      
 <员工信息>     
  <姓名>张三     
  <性别>男     
  <出生日期>2013-10-12     
      


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

     
-      
       
-      
- <学校信息>     
-    <学生信息>     
       <姓名>张三     
       <性别>男     
       <出生日期>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文件。

感谢各位的阅读!关于“XML中DTD文档类型定义完全解析的案例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


分享标题:XML中DTD文档类型定义完全解析的案例-创新互联
转载来源:http://chengdu.cdxwcx.cn/article/jiipe.html