html之DTD基础知识

Posted chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html之DTD基础知识相关的知识,希望对你有一定的参考价值。

一、基本概念

  1. DTD:文档类型定义
  2. 定义合法的XML文档构建模块
  3. 使用一系列合法的元素来定义文档的结构
  4. 可被成行声明于XML文档中,也可作为一个外部引用
  5. 使用DTD的好处

    1. 使每个XML文件均可携带一个有关其自身格式的描述
    2. 通过其,独立的团体可一致地使用某个标准的DTD来交换数据
    3. 也可通过标准的DTD来验证从外部接收的数据/自身的数据

二、语法

  1. DOCTYPE声明

    1. 内部声明

      1. 应用场景

        DTD被包含在XML源文件中

      2. 格式:

        <!DOCTYPE 根元素 [元素声明]>

        例子:

        <!DOCTYPE note [
          <!ELEMENT note (to,from,heading,body)>
          <!ELEMENT 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>

        解释:第一行说明:该文档为note类型的文档

        第二行:定义note文档中有四个元素:(to from heading body)

        第三行:定义to元素类型为:"#PCDATA"

    2. 外部声明

      1. 应用场景

        DTD文件位于xml外部

      2. 语法

        <!DOCTYPE 根元素 SYSTEM"文件名">

      3. 例子:

        <!DOCTYPE note SYSTEM "note.dtd">
        <note>
        <to>George</to>
        <from>John</from>
        <heading>Reminder</heading>
        <body>Don\'t forget the meeting!</body>
        </note> 

        note.dtd文件

        <!ELEMENT note (to,from,heading,body)>
        <!ELEMENT to (#PCDATA)>
        <!ELEMENT from (#PCDATA)>
        <!ELEMENT heading (#PCDATA)>
        <!ELEMENT body (#PCDATA)>
  2. DTD-XMl构建模块

    1. 元素

      1. 主要构建模块
      2. 例子:<message></message>
    2. 属性

      1. 提供有关元素得额外信息
      2. 总是被置于开始标签中,以键值对得形式出现
    3. 实体

      1. 定义普通文本的变量,而实体引用即为对实体的引用
      2. 当文档被xml解析器解析时,实体就会被展开
      3. 例子:

        实体引用字符
        <<
        >>
        &&
        ""
        \'\'
    4. PCDATA

      1. 被解析的字符数据,当该数据指明为PCDATA的时候,即告诉解析器,在xml元素的开始标签与结束标签中出现的字符数据会被解析器检查实体以及标记,其中文本中的标签被当作标记处理,而实体会被展开
      2. 被解析的字符数据不应当包含任何的&、等可用字符实体表示的
    5. CDATA

      1. 字符数据
      2. 声明则不会被解析器解析的文本,也即在这些文本中标签不会当作标记来处理,实体不会展开处理。
  3. 元素声明

    1. 在DTD中,元素通过元素声明来进行声明的
    2. 元素声明语法:

      1. <!ELEMENT 元素名称 类别>/<!ELEMENT 元素名称 (元素内容)>
        1. 空元素

          1. 含义:该标签内没有数据,可含有属性,类似于<br/>
          2. 语法:

            <!ELEMENT 元素名称 EMPTY>
      2. PCDATA元素

        <!ELEMENT 元素名称 (#PCDATA)>
      3. 带有任何内容的元素

        1. 含义:该元素内包含任何可解析的数据组合(杂)
        2. 语法:

          <! ELEMENT 元素名称 ANY>
      4. 带有子元素的元素

        1. 语法:

          <! ELEMENT 元素名称 (子元素名称1,子元素名称2...)>
        2. 注意:子元素按照逗号分开序列进行声明,这些子元素在文档中也必须按照相同的顺序出现在文档中,且子元素也必须按照相同顺序被声明,且子元素也可拥有子元素,做法是一样的
      5. 声明最少出现一次的元素

        1. 语法:

          <!ELEMENT 元素名称 (子元素名称+)>
        2. 含义:子元素在父元素内至少出现一次
      6. 声明出现0/多次的元素

        <!ELEMENT 元素名称 (子元素名称*)>
      7. 声明出现0/1次的元素

        <!ELEMENT 元素名称 (子元素名称?)>
      8. 声明“非.../既...”类型的内容

        1. 可能出现子元素2/子元素3
        2. <!ELEMENT 元素名称(子元素名称1,(子元素名称2|子元素名称3))>
      9. 声明混合类型的内容

        1. 例子

          <!ELEMENT note (#PCDATA|to|from|header|message)*>

          ​ "note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

    3. 声明属性

      1. <!ATTLIST 元素名称 属性名称 属性类型 默认值>
      2. 属性类型的选项

        类型描述
        CDATA值为字符数据 (character data)
        (en1\\en2\\..)此值是枚举列表中的一个值
        ID值为唯一的 id
        IDREF值为另外一个元素的 id
        IDREFS值为其他 id 的列表
        NMTOKEN值为合法的 XML 名称
        NMTOKENS值为合法的 XML 名称的列表
        ENTITY值是一个实体
        ENTITIES值是一个实体列表
        NOTATION此值是符号的名称
        xml:值是一个预定义的 XML 值
      3. 默认值参数可使用下列值,或者直接写默认值

        解释
        属性的默认值
        #REQUIRED属性值是必需的,若没写该属性则非法
        #IMPLIED属性不是必需的
        #FIXED value属性值是固定的
      4. 例子:

        1. <!ELEMENT square EMPTY>
          <!ATTLIST square width CDATA "0">
        2. <!ATTLIST person number CDATA #REQUIRED>
          若写成:<person number = "5677"/>合法,但是写成:<person />非法,因为#REQUIRED为必须属性
        3. <!ATTLIST payment type (check|cash) "cash">

          ​ 该属性的值由固定值列表check|cash获取

    4. 实体声明

      1. 定义引用普通文本或特殊字符的快捷方式的变量
      2. 内部/外部声明
      3. 构成:&、实体名称、分号(;)
      4. 内部声明:

        1. 语法:

          <!ENTITY 实体名称 “实体值">
        2. 例子

          <!ENTITY writer "Bill Gates">
          
          <author>&writer;</author>
      5. 外部声明

        1. 语法

          <!ENTITY 实体名称 SYSTEM “URI/URL">
        2. 例子

          <!ENTITY 实体名称 SYSTEM "https://www.w3school.com.cn/dtd/entities.dtd">
          <author>&writer;</author>

以上是关于html之DTD基础知识的主要内容,如果未能解决你的问题,请参考以下文章

python之基础篇——模块与包

android小知识点代码片段

Java语言基础之方法的设计

web前端之每天学一点js知识第二期

HTML核心系列1之DTD与实体

《Python学习之路 -- Python基础之切片》