精华内容
下载资源
问答
  • 2021-02-28 15:56:47

    一、XML约束概述

    1、什么是XML约束?

        在xml技术里,可以编写一个文档来约束一个xml文档的写法,这称之为XML约束。

     

    2、为什么要使用XML约束?

        我们从网上下载了一个开源框架,这个开源框架是使用XML作为配置文件的,这时候框架的设计者就需要约束我们配置文件的写法。

     

    3、XML约束的作用

        约束xml文档的写法

        对xml进行校验

     

    4、常见的XML约束技术

    XML DTD     //文件类型定义(document type definition)

    XML Schema  //schema:模式,略图

     

     

    、如何在xml中引入dtd

     

    (一)外部引入

        可以将dtd的约束内容写在外置的dtd文件中,这个文件后缀必须为.dtd,而文件保存时必须用utf-8编码保存,再在xml文件中使用:

     

        ①<!DOCTYPE 根元素名称  SYSTEM 文件的位置>

        如果写的是SYSTEM表明当前引入的dtd在当前文件系统中,后面制定的文件位置是当前硬盘中的位置

     

    <?xml version="1.0" encoding="gb2312"?>

    <!DOCTYPE 书架 SYSTEM "book.dtd">

    <书架>

           <书>

                  <书名>Java就业培训教程</书名>

                  <作者>张孝祥</作者>

                  <售价>39.00元</售价>

           </书>

           <书>

                  <书名>JavaScript网页开发</书名>

                  <作者>张孝祥</作者>

                  <售价>28.00元</售价>

           </书>

    </书架>

     

    文件:book.dtd

     

           <!ELEMENT 书架 (书+)>

           <!ELEMENT 书 (书名,作者,售价)>

           <!ELEMENT 书名 (#PCDATA)>

           <!ELEMENT 作者 (#PCDATA)>

           <!ELEMENT 售价 (#PCDATA)>

     

     

        ②<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">

    如果写的是PUBLIC表明当前引入的dtd在网络公共位置中,后面要指明dtd的名字和dtd所在网络位置URL地址,如:

     

    <!DOCTYPE web-app PUBLIC

             "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

             "http://java.sun.com/dtd/web-app_2_3.dtd">

     

     

    (二)内部引入

         

    直接在xml中书写dtd

          <!DOCTYPE 根元素名称[

            dtd约束....

          ]>

     

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <!DOCTYPE 书架 [

         <!ELEMENT 书架 (+)>

         <!ELEMENT (书名,作者,售价)>

         <!ELEMENT 书名 (#PCDATA)>

         <!ELEMENT 作者 (#PCDATA)>

         <!ELEMENT 售价 (#PCDATA)>

    ]>

    <书架>

         <>

             <书名>Java就业培训教程</书名>

             <作者>张孝祥</作者>

             <售价>39.00</售价>

         </>

         ...

    </书架>

     

     

     

     

    三、dtd语法

     

    (一)元素

              <!ELEMENT 元素名称 元素约束>

       a、元素约束:

                    存放类型:ANY/EMPTY (存放任意类型/不能存放任何类型)

                 

    b、元素约束:子元素的列表,将可以包含的子元素用小括号括起来

         ①子元素之间可以使用逗号进行分割,表明子元素必须按照顺序出现

    <!ELEMENT (书名,作者,售价)>

     

         ②子元素之间可以使用竖线进行分割,表示子元素只出现其中之一

    <!ELEMENT (书名|作者|售价)>

     

         ③#PCDATA 表明包含标签体

    <!ELEMENT 书名 (#PCDATA)>

     

          ④ +   :   一次或多次,如:  <!ELEMENT 书架 (书+)>

          ⑤ ?   :   0次或一次,如:  <!ELEMENT 书架 (书?)>

          ⑥ *   :   0次或多次,如:   <!ELEMENT 书架 (书*)>

     

    ⑦也可以使用小括号进行组的操作:

      <!ELEMENT MYFILE ((TITLE* AUTHOR? EMAIL)* | COMMENT)>

     

     

    (二)属性

         

    (ATTLIST:attribute [ə'trɪbjuːt](属性)list简写)

             <!ATTLIST 元素名

                  属性名1 属性类型  属性约束

                  属性名2 属性类型  属性约束

    .....

             >

     

    <?xml version = "1.0" encoding="GB2312" standalone="yes"?>

    <!DOCTYPE 购物篮 [

      <!ELEMENT EMPTY>

      <!ATTLIST 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 )  "鸡肉" >

    ]>

    <购物篮>

      < 品种="鱼肉"/>

      < 品种="牛肉"/>

      </>

    </购物篮>

     

     

     

    、属性类型

          ①CDATA:表示属性的值是一个普通字符串

     

          ②ENUMERATED : 属性的值是一个枚举列表中的值。属性的类型可以是一组取值的列表,在 XML 文件中设置的属性值只能是这个列表中的某个值(枚举)。

     

          ③ID: 表明属性的值必须在整个文档中都是唯一的,如果有重复的id则校验不通过,ID 属性的值只能由字母,下划线开始,数字不能打头,不能出现空白字符

     

    <?xml version = "1.0" encoding="gb2312" ?>

    <!DOCTYPE 联系人列表[

         <!ELEMENT 联系人列表 ANY>

         <!ELEMENT 联系人 (姓名,EMAIL)>

         <!ELEMENT 姓名 (#PCDATA)>

         <!ELEMENT EMAIL (#PCDATA)>

         <!ATTLIST 联系人 编号 ID #REQUIRED>

    ]>

    <联系人列表>

         <联系人 编号="a1">

             <姓名>张三</姓名>

             <EMAIL>zhang@it315.org</EMAIL>

         </联系人>

         <联系人 编号="a2">

             <姓名>李四</姓名>

             <EMAIL>li@it315.org</EMAIL>

         </联系人>

    </联系人列表>

     

     

         

     

     

    、属性约束

         ①#REQUIRED  --- 表明当前属性是一个必须存在的属性,如果这样的属性不存在则在校验时会报错。

         ②#IMPLIED --- (imply 隐含)表明当前属性是一个可选的属性,可以有也可以没有。

         ③#FIXED '固定值' --- 表明当前属性具有一个固定值,这样的属性不需要进行赋值,自动就会取这个固定值为值。如果这样的属性指定了一个不是固定值的值则校验报错。

         ④'默认值'  ---  表明当前属性具有一个默认值,如果给了其他的值就用其他值,如果没有给值则取这个默认值。

     

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <!DOCTYPE 书架 [

      <!ELEMENT 书架 (+)>

      <!ELEMENT (书名作者售价)>

      <!ELEMENT 书名 (#PCDATA)>

      <!ELEMENT 作者 (#PCDATA)>

      <!ELEMENT 售价 (#PCDATA)>

      <!ATTLIST 

                    书号   ID #REQUIRED

                    出版社 CDATA #REQUIRED

                    种类   CDATA #IMPLIED

                    网址   CDATA #FIXED "www.taobao.com"

                    版次   CDATA  "第一版">

        <!ENTITY  press "清华大学出版社">

    ]>

    <书架>

      <  出版社="&press;"  种类="计算机软件版次="第二版书号="a1222">

           <书名>Java就业培训教程</书名>

           <作者>张孝祥</作者>

           <售价>39.00</售价>

      </>

       < 出版社="清华大学出版社" 书号="a1223">

           <书名>JavaScript网页开发</书名>

           <作者>张孝祥</作者>

           <售价>28.00</售价>

      </>

    </书架>

     

     

     

     

     

    四、ENTITY(实体)

     

     (entity  n  实体,本质)

             <!ENTITY >就是对一大段内容的引用,可以简化代码的复用。

    实体分类:

             ①引用实体:在xml中引用的实体叫做引用实体

                  语法格式: <!ENTITY 实体名称 “实体内容” >

                  引用方式:  &实体名称;

     

             ②参数实体:在dtd中引用的实体叫做参数实体

                  <!ENTITY % 实体名称 "实体内容">

                  %实体名称;

     

    举例1:

          <!ENTITY % TAG_NAMES "姓名 | EMAIL | 电话 | 地址">

        

        <!ELEMENT 个人信息 (%TAG_NAMES; | 生日)>

          <!ELEMENT 客户信息 (%TAG_NAMES; | 公司名)>

     

    举例2:

    <!ENTITY % common.attributes

          " id ID #IMPLIED

         account CDATA #REQUIRED "

    >

    ...

    <!ATTLIST purchaseOrder %common.attributes;>

    <!ATTLIST item %common.attributes;>

     

     

    更多相关内容
  • 在XML中使用DTD

    千次阅读 2018-12-22 00:16:16
    使用DTD知识总结DTD介绍DTD的基本语法引入DTD的方式DTD中的元素DTD定义格式缺点 DTD介绍 DTD( Document Type Definition)文档类型定义。在XML标准中,描述了如何创建DTD,以及如何将它与根据它的规则所编写的XML...

    DTD介绍

    • DTD( Document Type Definition)文档类型定义。在XML标准中,描述了如何创建DTD,以及如何将它与根据它的规则所编写的XML文档相关联,并且还定义了XML处理器应该如何对DTD进行处理,有了DTD就可以检测XML文档的结构是否正确。
    • DTD在实际应用中的作用主要包括:
      • 可以验证XML文档数据的有效性
      • 可以为某类XML文档提供统一的格式和相同的结构
      • 可以保证在一定范围内,XML文档数据的交流和共享
      • 一个程序设计人员根据DTD就能够知道对应的XML文档逻辑结构,从而编写出相应的处理应用程序
    • 第一个DTD例子:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE 根元素名称 [
    	<!ELEMENT 根元素名称(第一个子元素, 第二个子元素)>
    	<!ELEMENT 第一个子元素(#PCDATA)>
    	<!ELEMENT 第二个子元素(#PCDATA)>
    	<!ATTLIST 第一个子元素 属性一 CDATA #REQUIRED>
    ]>
    <根元素名称>
    	<第一个子元素 属性一="任意内容">
    		文本内容1
    	</第一个子元素>
    	<第二个子元素>
    		文本内容1
    	</第二个子元素>
    </根元素名称>
    

    DTD的基本语法

    1. DTD内部可以包含下列语句:
    • 元素类型声明语句<!ELEMENT ......>
    • 属性列表声明语句<!ATTLIST ......>
    • 实体声明语句<!ENTITY .......>
    • 符号声明语句<!NOTATION ......>
    • 注释语句
    1. 一个DTA即可以是独立的文档,该文档的扩展名为.dtd。DTD也可以存在于文档内部,如果存在于XML文档内部,则DTD的内容放置于
    2. 例如:demodtd.dtd如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- root元素中包含了两个子元素 --!>
    <!ELEMENT root (sub1, sub2)>
    <!ELEMENT sub1(#PCDATA)>
    <!ELEMENT sub2(#PCDATA)>
    <!ATTLIST root param1 NOTATION(Jpeg | Png) # REQUIRED
    				param2 CDATA # IMPLIED>
    <!ENTITY NAME "ENTITY VALUE">
    <!NOTATION Jpeg SYSTEM "Image/jpeg">
    <!NOTATION Png SYSTEM "Image/png">
    

    引入在XML文档中,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYE root SYSTEM "demodtd.dtd">
    <root param1 = "Jpeg">
    <sub1>&NAME;</sub1>
    <sub2>any word </sub2>
    </root>
    

    直接内置于XML文档中时,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root[
    <!--root元素中包含了2个子元素-->
    <!ELEMENT root (sub1,sub2)>
    <!ELEMENT sub1 (#PCDATA)>
    <!ELEMENT sub2 (#PCDATA)>
    <!ATTLIST root param1 CDATA #REQUIRED
    			   param2 CDATA #IMPLIED>
    <!ENTITY NAME1 "ENTITY VALUE">
    <!ENTITY PIC SYSTEM "Sunset.jpg" NDATA jpr>
    <!NOTATION jpr SYSTEM "mspaint.exe">
    ]>
    <root param1="PIC">
    	<sub1>&NAME1;</sub1>
    	<sub2>any word</sub2>
    </root>
    

    引入DTD的方式

    1. 外部DTD
      外部DTD的引用须事先已有一个dtd文件,将DTD的约束写到文件中,然后在XML文档中按以下语法格式添加:
      <!DOCTYPE (根元素名称) SYSTEM "外部DTD的URL地址">
      SYSTEM关键字表示文档使用的是私有DTD文件,“外部DTD文件的URI”可以是相对URI或者绝对URI,相对URI是相对于文档类型声明所在文档的位置。“外部DTD文件的URI”这部分也被称为系统标识符(system identifier).
    2. 内部DTD
      使用DTD的最简单的方式,内部DTD就是指将语义约束与XML文档的内容放在同一个XML文档中。紧跟在XML声明和处理指令之后,以<!DOCTYPE[开始,以]>结束语法格式如下:
      <!DOCTYPE 根元素名称 [ 元素描述 ]>
    3. 公用DTD
      公用DTD与外部DTD类似,但是该DTD引用公用的DTD的语法格式如下:
      <!DOCTYPE (根元素名称) PUBLIC "DTD的标识名" "公用DTD的URL地址">
      公共DTD名称要遵循一些约定。如果一项DTD是ISO标准,它的名字要以字符串“ISO”开始,如果是一个非ISO的标准组织批准的DTD,它的名字以“+”开始。如果不是标准组织批准的DTD,它的名字以连字符“-”开始。这些开始字符或字符串后面接//和DTD所有者的名字,之后是另一个双斜杠和DTD描述的文档类型,接着又是一个双斜杠后接ISO 639语言标识符,如EN表示英语,ZH表示中文。
      例如:
    • 自定义的dtd
      //tanglin //DTD STUDENT1.0/ZH
      <!DOCTYPE HR PUBLIC "//tanglin //DTD STUDENT1.0/ZH " "http://city.dlut.edu.cn/xml/dtds/students.dtd">

    • HTML网页的文档类型声明
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    DTD中的元素

    1. 元素定义语法
      语法如下所示:
      <!ELEMENT 元素名 元素类型描述>
      语法详细说明:
    • 元素名:即文档中元素的名称。
    • 元素类型描述:元素类型描述用于指定元素本身是否为对空元素,如果不为空元素元素的内容包括哪些。
    1. 元素类型
      元素类型具体包括以下5类:
    • 字符串类型:即#PCDATA,表示该元素的内容只能是字符串。

    • 空元素:EMPTY,表示该元素只能是空元素。

    • 包含子元素:表示该元素内部嵌套其它元素,具体包含子元素可能有:有序子元素、无序互斥子元素、无序组合子元素。子元素出现的次数也会根据实际的定义而不同。

    • 混合类型:即内容中即包括字符串类型又包括子元素,但混合类型在实际应用中不建议使用。

    • 任意类型:即ANY,表示该标记对于元素内容没有限制,该标记的内容可以是字符串类型、也可以包含子元素、即包含字符串又包括自元素的混合类型、该标记也可以是空元素。在实际应用中尽量避免。

    • 子元素如下:

    1. 有序子元素
      用逗号分隔,表示子元素的出现顺序必须与声明时一致,并且不能被省略。
    2. 无序互斥子元素
      用竖线(|)分隔,表示任选其一,即多个子元素在文档定义中只能出现一个。
    3. 无序组合子元素
      子元素出现频率可以根据不同的符号进行设定这些符号的含义如表2-2所示:
      子元素出现频率符号及其含义
      修饰符 含义
      + 一次或多次
      ? 0次或一次
      * 0次或多次
      缺省 一次
      这些修饰符可以限制元素出现的次数,也可以结合圆括号( )批量设置
    • 混合类型
      混合类型定义的子元素即可以包含字符串又可以包含子元素,其定义方法稍微复杂一些,典型的混合类型定义方法形如<!ELEMENT root (#PCDATA|sub1|sub2)*>。但在实际用该类型使用较少,也不建议使用。
    1. DTD中的属性
      在DTD中声明元素属性的语法:
      <!ATTLIST 元素名称 [属性名 属性类型 [约束] [缺省值]]+>
      在一个ATTLIST 中可以定义同一个元素下的一个或多个属性。如果包含多个属性声明,属性声明之间使用空格间隔。
    • 元素名称:属性所属的元素名称
    • 属性名:属性名称
    • 属性类型:属性的值类型,
    • 约束:元素对属性的约束
    修饰符含义
    #REQUIRED表示该属性是必需的,不能没有
    #IMPLIED表示该属性可以有也可以没有
    #FIXED表示在XML文档中只会给出一个元素属性所定义的固定值。只有当约束为该值时,才能给出缺省值,注意缺省值必须给出
    • 定义示例:
    <? xml version="1.0" encoding="UTF-8"?>
    <! DOCTYPE root[
    <!ELEMENT root (#PCDATA)>
    <!ATTLIST root reqParam CDATA #REQUIRED>
    <!ATTLIST root impParam CDATA #IMPLIED
    			fixParam CDATA #FIXED "default value">
    ]>
    <root reqParam = "required value">
    </root>
    

    属性类型

    1. DTD中的ENTITY实体
    • ENTITY 实体,在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它。
    • 实体分类关系图
      实体分类关系图
      1. 通用内部解析实体
        内部实体是最简单的一种实体,该实体的内容为字符串的文本内容。所有的内部实体都是解析实体。内部实体的语法格式如下:<!ENTITY 实体名称 "实体内容"> 例如:
        <!ENTITY one "one">
        <!ENTITY two "&one; I am two">

        • 实体名称:实体名称由DTD程序员自己定义,但必须满足唯一性,即不能重名。同时满足XML的命名规范。
        • 实体内容:所需要表达的文本内容。
      2. 通用外部解析实体
        定义外部解析实体的语法如下:
        <!ENTITY 实体名称 SYSTEM|PUBLIC ["公共实体标识符"] "URI/URL">

        • URI/URL:所引用的外部文件的路径地址,被引用的外部文件必须是可以被解析的,扩展名没有限制。
        • 实体为PUBLIC时才会有相应的“公共实体标识符” ,如果为SYSTEM则没有“公共实体标识符”.
          实例如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE aa[
          	<!ELEMENT aa (#PCDATA)>
          	<!ELEMENT copyright SYSTEM "outer.txt">
          ]>
          <aa>&copyright; </aa>
          
      3. 通用外部未解析实体:
        <!ENTITY 实体名称 SYSTEM “URL/URL” NDATA 标记名>
        URI/URL:所引用的外部文件的路径地址
        标记名:被定义的符号的名称。
        实例代码:
        <!ENTITY PICTURE SYSTEM 'pic.jpg' NDATA msp>

      4. 参数内部解析实体
        参数实体和普通实体只能在XML文档中引用,如果需要在DTD中使用实体则必须使用参数实体
        声明参数内部解析实体的语法:
        <!ENTITY % 参数实体名称 "实体内容">
        参数实体名称:实体名称由DTD程序员自己定义,但必须满足唯一性,即不能重名。同时满足XML的命名规范。
        实体内容:所需要表达的文本内容。

      5. 参数外部解析实体
        声明参数外部解析实体的语法:
        <!ENTITY % 参数实体名称 SYSTEM “URL/URL”>
        URI/URL:所引用的外部文件的路径地址
        引用参数实体的语法:
        %参数实体名称;

    1. DTD符号
      普通符号的语法格式:
      <!NOTATION 符号名称 SYSTEM | PUBLIC ["公共符号标识符"] "URI\URL">
    • 符号名称:名称由DTD程序员自己定义,但必须满足唯一性,即不能重名。同时满足XML的命名规范
    • URI\URL:外部来处理这些未解析数据的程序路径
    • 符号为PUBLIC时才会有相应的“公共符号标识符” ,如果为SYSTEM则没有“公共符号标识符”

    DTD定义格式缺点

    • DTD本身是基于正则表达式的,描述能力相对较弱。
    • DTD不支持数据类型,对数据的约束不够准确。
    • DTD约束能力不足,无法对语义作出更精细的语义限制。
    • DTD的结构不够好,可重用性较差。
    展开全文
  • 主要介绍了XML中DTD文档类型定义,是XML入门学习的基础知识,需要的朋友可以参考下
  • 本文实例讲述了JS操作XML中DTD介绍及使用方法。分享给大家供大家参考,具体如下: 什么是DTD,为什么需要DTD? DTD为英文Document Type Definition,中文意思为“文档类型定义”。DTD肩负着两重任务:一方面它帮助你...
  • XML与WEB Service技术(微软):实验三 在XML文档中使用DTD .doc
  • XML与WEB Service技术(微软):实验二 在XML文档中使用DTD.doc
  • XML标签的自定义功能非常强大,比如本文将要讲解的DTD(Document Type Definition)就带给人们一种面向对象般的感觉,well,下面就来看一下XML中DTD文件类型定义完全解析
  • 用于完整的项目代码,完整的dtd,拥有精美的页面设计,严谨的页面布局
  • [实验目的] 1、安装并学习如何使用XMLSPY集成开发...3、掌握如何在DTD文档声明元素及其内容模型、属性,以及实体的声明和使用使用内部/外部DTD规则,对XML数据文档的有效性进行约束。 某软件学院XML课程实验答案
  • 使用DTD验证XML文档

    2013-08-29 08:44:37
    使用DTD验证XML文档 一、 DTD的定义: a) DTD是Document Type Defintion的缩写,即文档类型定义。DTD用来描述XML文档的结构。 二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义...
  • 使用DTD规范XML文档

    2011-03-31 10:48:31
    学习XML语言的DTD如何去写,如何更好的写出XML语言的DTD文档,对进一步深入学习XML有很大帮助。
  • XMLDTD、Schema

    2017-06-21 00:44:24
    XMLDTD、Schema笔记、使用方法、注意事项,尤其是对XMLDTD比较详细
  • 编写的DTD文档中,要求在DTD文档中使用参数实体来替换所有的#PCDATA和CDATA。 [实验思考] 本实验中发现,一个XML文档可以通过平面的形式、或者层次的形式来表示多个关系数据库中的二维表,那么哪种方式更合适...
  • 基于DTD实现XML文档的有效性验证
  • eclipse中使用xml自动提示功能所需文件:mybatis-3-mapper.dtd eclipse中使用xml自动提示功能所需文件:mybatis-3-mapper.dtd eclipse中使用xml自动提示功能所需文件:mybatis-3-mapper.dtd
  • 实验2XML文档及其DTD

    2011-11-29 21:51:03
    XML网页设计使用教程 实验2XML文档及其DTD 一、实验目的 (1)理解XML和DTD文档之间的关系及使用DTD的重要性 (2)熟练掌握DTD中的元素、属性、实体和注记的声明方法
  • 这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...
  • XML2DTD.jar

    2017-05-18 13:22:21
    xml转换dtd工具jar
  • DTD验证XML详解

    2014-04-22 23:56:44
    很好的一个关于DTD验证XML的一些文档,内容丰富。需要了解的速速下载
  • 创建XML文件,DTD文件,XML Schema文件

    优质文章推荐,适合零基础小白XML入门(从是什么到怎么用)

    创建XML文件

    在我们要使用IDEA创建xml文件的时候,却发现并没有xml文件的这个选项,那我们就来构建一个xml模板
    File -> Settings 打开设置面板,然后按照如下图操作
    在这里插入图片描述
    之后我们就可以在New里面看到xml的文件创建选项了
    在这里插入图片描述

    创建DTD文件

    流程与创建XML文件一致,修改Name和Extension即可,如下图
    在这里插入图片描述

    创建XML Schema文件

    在这里插入图片描述

    本文若有错误,请各位大佬指正,我会尽快修改
    最好的关系就是互相成就,您的三连是我最大的动力,谢谢大家

    展开全文
  • XML文件DTD是什么

    万次阅读 多人点赞 2018-05-25 22:52:55
    常用的约束技术:XML DTDDTD约束快速入门 DTD(Document Type Definition),全称为文档类型定义。 book.xml[html] view plain copy&lt;span style="font-size:18px;"&gt;&lt;?xml ...

    常用的约束技术:XML DTD


    DTD约束快速入门
        DTD(Document Type Definition),全称为文档类型定义。
       book.xml
    [html]  view plain  copy
    1. <span style="font-size:18px;"><?xml version="1.0" ?>  
    2. <!DOCTYPE书架  SYSTEM "book.dtd">  
    3. <书架>  
    4.     <>  
    5.         <书名>葵花宝典</书名>  
    6.         <作者>东方不败</作者>  
    7.         <售价>59.00元</售价>  
    8.     </>  
    9.     <>  
    10.         <书名>九阳神功</书名>  
    11.         <作者>张无忌</作者>  
    12.         <售价>57.00元</售价>  
    13.     </>  
    14. </书架>  
    15. </span>  
       book.dtd
    [html]  view plain  copy
    1. <span style="font-size:18px;"><!ELEMENT 书架 (书+)>  
    2.     <!ELEMENT 书 (书名,作者,售价)>  
    3.     <!ELEMENT 书名 (#PCDATA)>  
    4.     <!ELEMENT 作者 (#PCDATA)>  
    5.     <!ELEMENT 售价 (#PCDATA)>  
    6. </span>  
    复杂标签:<!ELEMENT 标签名 (子节点)>
    简单标签:<!ELEMENT 标签名 (#PCDATA)>
    引入DTD:<!DOCTYPE 根节点 SYSTEM  "dtd的地址">

     (4)将DTD与XML文档关联的三种形式
       DTD约束既可以作为一个单独的文件编写,也可以在XML文件内编写。
    • 使用内部DTD 。<!DOCTYPE 根节点  [DTD的代码]>
    • 使用外部DTD。<!DOCTYPE 根节点 "DTD的地址">
    • 使用网络DTD。<!DOCTYPE 根节点 PUBLIC  "DTD的名称"  "DTD的地址">
          常见的使用网络DTD约束有Struts2的框架。
      在XML文件内编写DTD
    [html]  view plain  copy
    1. <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
    2. <!DOCTYPE 书架 [  
    3.     <!ELEMENT 书架 (书+)>  
    4.     <!ELEMENT 书 (书名,作者,售价)>  
    5.     <!ELEMENT 书名 (#PCDATA)>  
    6.     <!ELEMENT 作者 (#PCDATA)>  
    7.     <!ELEMENT 售价 (#PCDATA)>  
    8. ]>  
    9. <书架>  
    10.     <>  
    11.         <书名>Java就业培训教程</书名>  
    12.         <作者>张孝祥</作者>  
    13.         <售价>39.00元</售价>  
    14.     </>  
    15.     ...  
    16. </书架>  
    17. </span>  
    XML使用DOCTYPE声明语句来指明它所遵循的DTD文档,有两种形式:
    当引用的DTD文档在本地时,采用如下方式:
    <!DOCTYPE 根元素 SYSTEM “DTD文档路径”>
    如:<!DOCTYPE 书架 SYSTEM “book.dtd”>
    当引用的DTD文档在公共网络上时,采用如下方式:
    <!DOCTYPE 根元素 PUBLIC “DTD名称” “DTD文档的URL”>
    如:<!DOCTYPE web-app PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

    DTD约束语法细节

    (1)DTD-定义元素
    在DTD文档中使用ELEMENT关键字来声明一个XML元素。
    语法:<!ELEMENT 元素名称  使用规则>
    使用规则:
    • (#PCDATA)指示元素的主题内容只能是普通的文本。
    • EMPTY:用于指示元素的主体为空。比如<br/>
    • ANY:用于指示元素的主题内容为任意类型。
    • (子元素):指示元素中包含的子元素。
    定义子元素及描述它们的关系:
      1) 如果子元素用逗号隔开,必须按照声明顺序去编写XML文档。
         例如:<!ELEMENT FILE(TITLE, AUTHOR, EMAIL)>
      2)如果子元素用"|" 分开,说明任选其一。
         例如:<!ELEMENT FILE(TITLE|AUTHOR|EMAIL)>
      3)用+、*、? 来表示元素出现的次数。
         如果元素后面没有+*?表示必须且只能出现一次。
         +:表示至少出现一次,一次或多次。
         *:表示可有可无,零次、一次或多次。
         ?:表示可以有也可以无,有的话只能出现一次。零次或一次。
        如:<!ELEMENT MYTITLE((TITLE*,AUTHOR?,EMAIL))*|COMMIT> 
    (2)元素内容的类型


    (3)元素ELEMENT定义

    DTD属性(ATTLIST)定义

    <!ATTLIST 元素名称
        属性名 属性类型  约束
        属性名 属性类型  约束
        ......
    >
    属性声明举例:
    <!ATTLIST 商品
     类别 CDATA  #REQUIRED  必须的
     颜色 CDATA  #IMPLIED       可选的
    >
    对应的XML为:<商品 类别="服装" 颜色="黄色" />

    属性值类型:
    • CDATA:表示属性的取值为普通的文本字符串。
    • ENUMERATED(DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
    • ID:表示属性的取值不能重复(不能只写数字)
    设置说明:
    • #REQUIRED:表示该属性必须出现
    • #IMPLIED:表示该属性可有可无。
    • #FIXED:表示该属性的取值为一个固定值。语法:#FIXED "固定值"
    • 直接值:表示属性的取值为默认值。
    约束的四种形式:

    DTD 定义属性示例一:
    <!ATTLIST 页面作者
       姓名   CDATA    #IMPLIED
       年龄   CDATA    #IMPLIED
       联系信息  CDATA  #REQUIRED
       网站职务  CDATA  #FIXED  "页面作者"
       个人爱好  CDATA  "上网"
    >
    DTD 定义属性示例二:
    属性的类型可以是一组取值的列表,在XML文件中设置的属性值只能是这个列表中的某个值(枚举)
    <?xml version = "1.0" encoding="GB2312" standalone="yes"?>
    <!DOCTYPE 购物篮 [
    <!ELEMENT 肉 EMPTY>
    <!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
    ]> 
    <购物篮>
    <肉 品种="鱼肉"/>
    <肉 品种="牛肉"/>
    <肉/>
    </购物篮>
    DTD 定义属性示例三:
    ID属性的值只能由字母,下划线开始,不能出现空白字符。表示属性的设置值是一个唯一值。
    [html]  view plain  copy
    1. <span style="font-size:18px;"><?xml version = "1.0" encoding="GB2312" ?>  
    2.   
    3. <!DOCTYPE 联系人列表[  
    4.     <!ELEMENT 联系人列表 ANY>  
    5.     <!ELEMENT 联系人(姓名,EMAIL)>  
    6.     <!ELEMENT 姓名(#PCDATA)>  
    7.     <!ELEMENT EMAIL(#PCDATA)>  
    8.     <!ATTLIST 联系人 编号 ID #REQUIRED>  
    9. ]>  
    10.   
    11. <联系人列表>  
    12.     <联系人 编号=“p1">  
    13.         <姓名>张三</姓名>  
    14.         <EMAIL>zhang@it315.org</EMAIL>  
    15.      </联系人>  
    16.     <联系人 编号=“p2">  
    17.         <姓名>李四</姓名>  
    18.         <EMAIL>li@it315.org</EMAIL>  
    19.     </联系人>  
    20. </联系人列表></span>  

    实体的引入

    实体定义:

    • 实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。
    • 在DTD定义中,一条<!ENTITY …>语句用于定义一个实体。
    • <!ENTITY 别名 “值”>
    • 在元素中引用  &别名;
    定义引用实体:
    • 概念:在DTD中定义,在XML中使用
    • 语法:<!ENTITY 实体名称 “实体内容”>
    • 引用方式(注意是在XML中使用):&实体名称;
    DTD中定义:
    <!ENTITY copyright “版权所有”>
    XML中引用:
    &copyright;


    综合实例如下:
    [html]  view plain  copy
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE TVSCHEDULE [  
    3.     <!ELEMENT TVSCHEDULE (CHANNEL+)>  
    4.     <!ELEMENT CHANNEL (BANNER,DAY+)>  
    5.     <!ELEMENT BANNER (#PCDATA)>  
    6.     <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>  
    7.     <!ELEMENT HOLIDAY (#PCDATA)>  
    8.     <!ELEMENT DATE (#PCDATA)>  
    9.     <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>  
    10.     <!ELEMENT TIME (#PCDATA)>  
    11.     <!ELEMENT TITLE (#PCDATA)>   
    12.     <!ELEMENT DESCRIPTION (#PCDATA)>  
    13.       
    14.     <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>  
    15.     <!ATTLIST CHANNEL CHAN CDATA #REQUIRED>  
    16.     <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>  
    17.     <!ATTLIST TITLE RATING CDATA #IMPLIED>  
    18.     <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>  
    19. ]>  
    20.   
    21. <TVSCHEDULE NAME="">  
    22.     <CHANNEL CHAN="">  
    23.         <BANNER>CCAV</BANNER>  
    24.         <DAY>  
    25.             <DATE>2014-11-17</DATE>  
    26.             <PROGRAMSLOT>  
    27.                 <TIME>19:00</TIME>  
    28.                 <TITLE>新闻联播</TITLE>  
    29.             </PROGRAMSLOT>  
    30.         </DAY>  
    31.     </CHANNEL>  
    32. </TVSCHEDULE>  

    展开全文
  • xml使用外部DTD加载验证

    千次阅读 2019-03-14 15:28:20
    默认情况下,对于外部的DTD而言,我们的xml文档不会加载引用的外部DTD。 需要让xml文档强制加载外部DTD。换句话说,需要使用外部DTD文件来验证我们的xml文档。 有两种方法来验证: validateOnParse属性 Validate()...
  • XML应用开发单元设计 软件学院 第 PAGE 6 页 共 NUMPAGES 6 页 XML应用开发课程教学单元设计 单元二 使用DTD定义XML文档 授课教师 XML课程组 授课班级: 学时10 教学条件 软件开发平台和设计平台投影设备广播软件...
  • 3、掌握如何在DTD文档声明元素及其内容模型、属性,以及实体的声明和使用使用内部/外部DTD规则,对XML数据文档的有效性进行约束。 [提交内容] 提交SpyBase1.xml、SpyBase2.xml。 提交SpyBase1.dtd、SpyBase2....
  • xmldtd约束详解

    千次阅读 2020-07-01 12:00:45
    dtd约束 ELEMENT:定义标签 ATTLIST:定义属性 我们自定义一个dtd约束文件 <!ELEMENT Programmers (Programmer*) > <!-- 定义Programmers标签下有Programmer标签,*是正则规则,代表0次或多次 --&...
  • XML之自定义DTD约束

    千次阅读 2018-05-03 23:17:35
    XML之自定义DTD约束1.什么是DTD 文档类型定义(DocumentType Definition,简称DTD)。2.DTD有什么用1)DTD定义了XML文档内容的结构,保证XML以一致的格式存储数据。2)XML允许用户创建自己的DTD约束。3)通过DTD约束...
  • 解码XMLDTD

    2020-03-04 11:34:08
    这篇文章说明了如何创建XML“文档类型定义(DTD...虽然不必产生的每个 XML文件中都包含DTD,但这样做将会使您的生活大为轻松。DTD不仅强制使用XML文件建立的语法,它还将允许文件由确认XML语法分析器进行语法分析。
  • xmlDTD,xmlDTD

    2011-08-13 09:07:16
    xmlDTD,xmlDTD,xmlDTD,xmlDTD
  • XML中DTD的作用

    千次阅读 2018-09-26 11:06:21
    DTD文件对当前XML文档的节点进行了定义,这样我们加载配置文件之前,可通过指定的DTD对当前XML中的节点进行检查,确定XML结构和数据类型是否合法。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 361,251
精华内容 144,500
关键字:

在xml中使用dtd