精华内容
下载资源
问答
  • 在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技术里,可以编写一个文档来约束一个xml文档的写法,这称之为XML约束。 2、为什么要使用XML约束? 我们从网上下载了一个开源框架,这个开源框架是使用XML作为配置文件的,这时候框架的设计者就需要约束...

    一、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约束。

    2019-07-09 21:12:55
    一,介绍XML中DTD约束。 DTD全称为,Document Type Definition,中文翻译为文档类型定义,是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。 文档类型定义(DTD)可定义合法的XML文档构建模块。它...

    一,介绍XML中的DTD约束。

    DTD全称为,Document Type Definition,中文翻译为文档类型定义,是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。

    文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
    DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

    内部的 DOCTYPE 声明:
    假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
    在这里插入图片描述
    外部文档说明:
    假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
    在这里插入图片描述
    那么我们为什么要使用DTD呢?
    1.通过 DTD,你的每一个 XML 文件都可以携带一个有关其自身格式的描述。
    2.独立的团体可以一致使用某个标准的 DTD 来交换数据。
    3.而你的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
    4.你还可以使用 DTD 来验证自身的数据。

    1.什么是良好格式的XML?(满足以下全部条件)
    1. 有且只有一个根元素
    2 .XML标签大小写正确区分
    3. 正确使用结束标签
    4 .正确嵌套标签
    5. 使用了合法的标签名
    6.定义有效的属性

    代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <persons>
     <person>
      <name>张小明</name>
      <age>10</age>
      <contact>
       <phone>1234567</phone>
      </contact>
      <br/>
     </person>
     <person >
      <name>张大明</name>
      <age>35</age>
      <contact>
       <email>123@qq.com</email>
      </contact>
     </person>
    </persons>
    
    

    二,元素的定义语法,分类,以及限制。
    1.语法:
    在这里插入图片描述
    注意 :根标签也要定义。
    2.分类:
    在这里插入图片描述
    3.元素的限制:
    在这里插入图片描述
    代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE persons[
    		<!ELEMENT persons (person*)>
    		<!ELEMENT person (name,age,contact,br?)>
    		<!ELEMENT name (#PCDATA)>
    		<!ELEMENT age (#PCDATA)>
    		<!ELEMENT contact (phone|email)>
    		<!ELEMENT phone (#PCDATA)>
    		<!ELEMENT br EMPTY>
    		<!ELEMENT email (#PCDATA)>
    ]>
    <persons>
    	<person>
    		<name>张小明</name>
    		<age>10</age>
    		<contact>
    			<phone>1234567</phone>
    		</contact>
    		<br/>
    	</person>
    	<person>
    		<name>张大明</name>
    		<age>35</age>
    		<contact>
    			<email>123@qq.com</email>
    		</contact>
    	</person>
    </persons>
    
    

    三:属性定义的方法如下:

    <!ATTLIST element-name att_name type>

    attribute
    ID
    (男|女)
    CDATA
    IDREF
    reference

    #REQUIRED/#IMPLIED(非必须)
    注意:根标签也要定义。

    代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE persons [
    <!-- DTD约束声明 -->
        <!ELEMENT persons (person*)>
        <!ELEMENT person (name,age,contact,br?)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT contact (phone|email)>
        <!ELEMENT phone (#PCDATA)>
        <!ELEMENT br EMPTY>
        <!ELEMENT email (#PCDATA)>
        <!ATTLIST person
            pid ID #REQUIRED
            sex (男|女) '男'
            qq CDATA #IMPLIED
            parent IDREF #IMPLIED
        >
    ]>
    <persons>
    	<person pid="p1" sex="男" qq="aaa" parent="p2">
    		<name>张小明</name>
    		<age>10</age>
    		<contact>
    			<phone>1234567</phone>
    		</contact>
    		<br/>
    	</person>
    	<person pid="p2">
    		<name>张大明</name>
    		<age>35</age>
    		<contact>
    			<email>123@qq.com</email>
    		</contact>
    	</person>
    </persons>
    
    

    XML中的特殊符号:
    在这里插入图片描述
    DTD自定义属性作业:

    代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE config [
        <!ELEMENT config (action*) >
        <!ELEMENT action (forward*) >
        <!ATTLIST action
            path CDATA #REQUIRED
            type CDATA #REQUIRED
        >
        <!ATTLIST forward
            name CDATA #REQUIRED
            path CDATA #REQUIRED
            redirect CDATA #REQUIRED
        >
    ] >
    	<!--config标签:可以包含0~N个action标签-->
    <config>
    	<!--action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
    		type:字符串,非空,子控制器的完整类名-->
    	<action path="/registerAction" type="test.action.RegisterAction">
    		<forward name="success" path="/index.jsp" redirect="true" />
    		<forward name="failed" path="/register.jsp" redirect="false" />
    	</action>
    	<action path="/loginAction" type="test.action.LoginAction">
    		<forward name="a" path="/index.jsp" redirect="false" />
    		<forward name="b" path="/welcome.jsp" redirect="true" />
    	</action>
    </config>
    
    
    展开全文
  • XML中DTD约束

    2019-05-23 18:33:32
    1,XML可作为传输数据、做配置用,一个格式良好的XML具有一下要求 1.1 有且只有一个根元素 ... 在XML加入DTD声明 ** **3. 元素定义的语法 <!ELEMENT element-name (type)> 注:根标签也要定...

    1,XML可作为传输数据、做配置用,一个格式良好的XML具有一下要求
    1.1 有且只有一个根元素
    1.2 XML标签大小写正确区分
    1.3 正确使用结束标签
    1.4 正确嵌套标签
    1.5 使用了合法的标签名
    1.6 定义有效的属性
    在这里插入图片描述
    **2. 在XML加入DTD声明

    **

    **3. 元素定义的语法

    <!ELEMENT element-name (type)>

    注:根标签也要定义!!!**

    **4. 元素的分类

    <!ELEMENT element-name EMPTY>//空元素 <!ELEMENT element-name (#PCDATA)>//文本元素 <!ELEMENT element-name (e1,e2)>//混合元素**

    在这里插入图片描述
    **6. 属性定义的语法

    <!ATTLIST element-name att_name type >

    attribute

    ID
    (男|女)
    CDATA
    IDREF
    reference
    #REQUIRED/#IMPLIED**
    在这里插入图片描述

    展开全文
  • XML中DTD是什么

    千次阅读 2018-05-25 23:33:54
    因为XML中的标记有非常高的自由性,可以随意定义标记。但是很多时候我们需要对标记进行规定,比如,某个标记只能出现一次,某个标记只能叫什么。对于此类的定义就由DTD语言来定义。文档类型定义(DTD)可定义合法的...
  • DTD约束什么是格式良好XML在XML加入DTD声明元素定义的语法元素的分类属性定义的语法 什么是格式良好XML XML 传输数据、做配置 什么是格式良好XML 1.1 有且只有一个根元素 1.2 XML标签大小写正确区分 1.3 ...
  • java项目xml使用自定义dtd位置问题

    千次阅读 2018-04-10 15:06:21
    java项目xml使用自定义dtd位置问题项目自定义了xml文件,因为要约束一下xml的编写规范,因此使用dtd文件。但是实际的使用过程发现dtd文件的路径非常诡异。到目前位置还没有找到原因,如果有人知道,请指教。...
  • ibatis的xml中dtd问题

    2019-10-08 00:28:09
    eclipse下使用ibatis,使用默认的dtd会有问题,会报 Connection reset的错误,不爽的话把dtd的路径从www.ibatis.com改成ibatis.apache.org吧 代码 <?xml version="1.0" encoding="utf-8"?><!...
  • 请为下面的XML文档编写一个外部DTD文件,并使该DTD 分析下列XML实例,编写外部DTD文档1 书上1道作业 请为下面的XML文档编写一个外部DTD文件,并使该DTD文件能够你的xml错误,请先修改 文件名称为 x.dtd 在xml中第一...
  • XML中DTD笔记

    千次阅读 2016-07-18 14:34:47
    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。...假如 DTD 被包含您的 XML 源文件,它应当通过下面的语法包装一个 DOCTYPE 声明: 带有 DTDXML 文档实例(请 IE5 以及更高的
  • 3)xml验证和dtd验证 根据您的企业安全策略,某些(如果不是大多数的话)中间件服务器无法访问Internet。 当您的开发基础架构与Internet(例如银行或安全公司)隔离时,情况甚至更糟。 这种情况下,根据架构验证XML...
  • XML】——DTD

    2018-06-27 08:14:37
    XML之DTDDTD DTD的作用l 定义XML文件的结构l 为XML 文件提供语法和规则l 内容就可以定义在XML文件,也可以定义在XML文件之外l 使用XML进行数据交换的行业或者组织可定义自己的DTDl DTD对于XML是可选的内容 ...
  • 这里覆盖DefaultHandler的resolveEntity 就可以实现用程序来控制是否使用dtd校验,使用哪个dtd来校验xml。 比如, public InputSource resolveEntity (String publicId, String systemId) throws IOException, ...
  • xml xml约束 DTD dom解析

    2012-12-19 13:34:06
    在XML语言,它允许用户自定义标签。一个标签用于描述一段数据;一个标签可分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其它标签描述其它数据,以此来实现数据关系的描述。例如: XML是被设计...
  • xml中DTD关键字说明

    2019-09-30 01:36:35
    在DTD文档中使用ELEMENT关键字来声明一个XML元素。 语法:<!ELEMENT 元素名称 使用规则> 使用规则: (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data) EMPTY:用于指示元素的主体为...
  • XML Basics & DTD

    2012-12-05 23:18:29
    1、熟悉和掌握XML规范的基本内容,包括XML声明、注释、处理指令、元素、属性、...2、掌握如何在DTD文档声明元素及其内容模型、属性,以及实体的声明和使用使用内部/外部DTD规则,对XML数据文档的有效性进行约束。
  • XML -- DTD

    2019-06-03 21:22:00
    1.DTD: (Document Type Definition文档类型定义)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则,...内部的DOCTYPE声明:如果DTD被包含在XML源文件,它应当通过下面的语法包装在一个DOCTYPE声明 &...
  • 3、掌握如何在DTD文档声明元素及其内容模型、属性,以及实体的声明和使用使用内部/外部DTD规则,对XML数据文档的有效性进行约束。 [提交内容] 提交SpyBase1.xml、SpyBase2.xml。 提交SpyBase1.dtd、SpyBase2....
  • 考虑一个问题:能否使用getElementById呢?(原来没有这个方法) 可以,但是需要在DTD中进行定义,并且要强制加载进来才行。 在dtd中定义id属性 ...在xml中加上id属性 在php代码中,使用getElementById查找元素 ...
  • XML DTD

    2017-08-09 22:56:45
    1.我们经常项目看到一些xml配置文件,它们都有着固定的标签写法,那么这些规范是怎么定义的呢,一种方式就是使用dtd来定义。文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档...
  • 3、DTD如何使用?4、DTD的语法4.1 复习XML4.2 DTD元素定义4.3 DTD属性定义4.4 DTD实体定义4.5 DTD如何进行验证?5、结论Reference 1、问题 了解过HTML文档的都知道,HTML文档的第一行有这么一句: <!DOCTYPE ...
  • 引自 XML中DTD,XSD的区别与应用 XML我们并不陌生,企业级应用中有很广的用途。具体就不再说,下面介绍一下DTD,XSD的区别并以XSD为例看spring中定义与使用。 1.DTD(Documnet Type Definition) DTD即文档类型定义...
  • XML语法之DTD

    2016-12-15 00:17:20
    在DTD文档中使用ELEMENT声明一个XML元素,语法格式如下所示:  元素名称 元素类型> 元素类型可以是元素内容、或类型 如为元素内容:则需要使用()括起来,如 书架 (书名,作者,售价)> 书名 (#PCDATA)> 如为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,701
精华内容 680
关键字:

在xml中使用dtd