• XML -- DTD


    1.DTD:
        (Document Type Definition文档类型定义)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。既可被成行地声明于XML文档中,也可作为一个外部引用
        
    2.内部的DOCTYPE声明:如果DTD被包含在XML源文件中,它应当通过下面的语法包装在一个DOCTYPE声明中
        <!DOCTYPE 根元素 [元素声明]>
       

    	//带有DTD的XML文档实例
    	<?xml version="1.0"?>
    	<!DOCTYPE note [				    //定义此文档是note类型的文档
    		<!ELEMENT note (to,from,heading,body)>	    //定义note元素有四个元素to from heading body
    		<!ELEMENT to      (#PCDATA)>		    //定义to元素为 "#PCDATA" 类型
    		<!ELEMENT from    (#PCDATA)>
    		<!ELEMENT heading (#PCDATA)>
    		<!ELEMENT body    (#PCDATA)>
    	]>
    	<note>
    		<to>George</to>
    		<from>John</from>
    		<heading>Reminder</heading>
    		<body>Don't forget the meeting!</body>
    	</note>
    

     
    3.外部文档声明:DTD位于XML源文件的外部,那么它应通过下面的语法被封装在一个DOCTYPE定义中
        <!DOCTYPE 根元素 SYSTEM "文件名">
        

    	//这个XML文档和上面的XML文档相同,但拥有一个外部的DTD
    	<?xml version="1.0"?>
    	<!DOCTYPE note SYSTEM "note.dtd">
    	<note>
    		<to>George</to>
    		<from>John</from>
    		<heading>Reminder</heading>
    		<body>Don't forget the meeting!</body>
    	</note>
    	
    	//这是包含DTD的 "note.dtd" 文件:
    
    	<!ELEMENT note (to,from,heading,body)>
    	<!ELEMENT to (#PCDATA)>
    	<!ELEMENT from (#PCDATA)>
    	<!ELEMENT heading (#PCDATA)>
    	<!ELEMENT body (#PCDATA)>
    

       
    4.DTD的作用:
        4.1通过DTD,你的每一个XML文件均可携带一个有关其自身格式的描述
        4.2通过DTD,独立的团体可一致地使用某个标准的DTD来交换数据
        4.3应用程序也可使用某个标准的DTD来验证从外部接收到的数据
        
    5.DTD-XML构建模块:所有的XML文档(以及HTML文档)均由以下简单的构建模块构成:

      元素:

        HTML的"body"和"table",xml的"note"和"message"。空的HTML元素有"hr"、"br"和"img"

      属性:

        提供有关元素的额外信息,属性总是以名/值的形式成对出现。如:<img src="computer.gif" />

      实体:

        定义引用普通文本或特殊字符的快捷方式的变量。如:"&nbsp;" "&lt;" "&gt;" "&amp;" "&quot;" "&apos;"

      PCDATA:

        被解析的字符数据(parsed character data),这些文本将被解析器检查实体以及标记。

      CDATA:

        字符数据(parsed character data),不会被解析器解析的文本

    6.DTD-元素
        在DTD中,xml元素通过元素声明来进行声明,语法格式如下:

        <!ELEMENT 元素名称 类别>
        //或者
        <!ELEMENT 元素名称 (内容)>
        //空元素
        <!ELEMENT 元素名称 EMPTY>
        //如:
        <!ELEMENT br EMPTY>
        //xml例子:
        <br />
        //只有PCDATA的元素
        <!ELEMENT 元素名称 (PCDATA)>
        //例子
        <!ELEMENT from (PCDATA)>
        //带有任何内容的元素,通过类别关键词ANY声明的元素,可包含任何可解析数据的组合
        <!ELEMENT 元素名称 ANY>
        //例子
        <!ELEMENT note ANY>
        //带有子元素(序列)的元素
        <!ELEMENT 元素名称    (子元素1,子元素2,子元素3,...)>
        //例子
        <!ELEMENT note (to,from,heading,body)>
        //注意:当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。
        //在一个完整的声明中,子元素也必须被声明,子元素也可以拥有子元素
        //声明只出现一次的元素(出现一次而且必须出现一次)
        <!ELEMENT 元素名称 (子元素)>
        //声明最少出现一次的元素
        <!ELEMENT 元素名称 (子元素+)>
        //声明出现零次或多次的元素
        <!ELEMENT 元素名称 (子元素*)>
        //声明出现零次或一次的元素
        <!ELEMENT 元素名称 (子元素?)>
        //声明"|"的内容
        <!ELEMENT note (to,from,heading,(body|message))>
        //混合型声明:"note" 元素可包含出现零次或多次的PCDATA、"to"、"from"、"header" 或者 "message"
        <!ELEMENT note (#PCDATA|to|from|header|message)*>
    

     
    7.DTD-属性:
        <!ATTLIST 元素 属性 属性类型 默认值>

        //DTD实例:
        <!ATTLIST payment type CDATA "check">
        //xml实例:
        <payment typ="check" />
      

        属性类型的选项:
     

     8.DTD-实体:
        实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)

    	//内部实体声明
    	<!ENTITY 实体名称 "实体值">
    	//DTD例子
    	<!ENTITY writer "Bill Gates">
    	<!ENTITY copyright "Copyright W3School.com.cn">
    	//xml例子
    	<author>&writer;©right;</author>
    	
    	//外部实体声明
    	<!ENTITY 实体名称  SYSTEM "URI/URL">
    	//DTD例子
    	<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
    	<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
    	//XML例子
    	<author>&writer;©right;</author>
    

     小结:什么是DTD?简单点来说,DTD就是xml的语法,通过DTD我们可以验证xml文档是否结构良好。但现在我们认为XML Schema(XSD)很快去取代DTD,与DTD不同,XML Schema支持数据类型与命名空间。


        
       

  • 相关阅读:
    sqlserver中死锁问题
    sqlserver循环
    自动装箱和拆箱的原理
    资源文件
    SqlServer函数
    PGSql
    SOAP和REST
    Replication
    office等资料下载
    mysql
  • 原文地址:https://www.cnblogs.com/kuai-man/p/10970129.html
Copyright © 2020-2023  润新知