• XML DTD学习


    DTD:文档类型定义 (Document Type Definition)

    一、DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用

    1、声明于XML源文件。

    1 <!DOCTYPE 根元素  [元素声明]>
    <?xml version="1.0"  encoding="UTF-8"?>
    <!-- XML文档的内部声明 --> <!DOCTYPE 书架 [ <!ELEMENT 书架 (书+)> <!ELEMENT 书 (书名,作者,售价)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 售价 (#PCDATA)> ]> <书架> <> <书名>影响力</书名> <作者>罗伯特.西奥迪尼</作者> <售价>45</售价> </> </书架>

    2、外部文档声明

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

    book.dtd 文件:

    <!ELEMENT 书架 (书+)>
    <!ELEMENT 书 (书名,作者,售价)>
    <!ELEMENT 书名 (#PCDATA)>
    <!ELEMENT 作者 (#PCDATA)>
    <!ELEMENT 售价 (#PCDATA)>

    book.xml 文件:

    <?xml version="1.0"  encoding="UTF-8"?>
    <!DOCTYPE 书架 SYSTEM "book.dtd">
    <!-- book.dtd 外部声明 -->
    <书架>
        <>
             <书名>影响力</书名>
             <作者>罗伯特.西奥迪尼</作者>
             <售价>45</售价>
        </>
    </书架>

     二、构建模块

    所有的XML文档都是有一下简单的构建模块构成:元素、属性、实体、PCDATA、CDATA 组成

    PCDATA 的意思是被解析的字符数据(parsed character data),可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

    CDATA 的意思是字符数据(character data),CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

    三、元素的声明:

    <!ELEMENT 元素名称 类别>
    或者
    <!ELEMENT 元素名称 (元素内容)>

    元素类型包括:空元素EMPTY、只有 PCDATA 的元素、带有任何内容的元素、带有子元素(序列)的元素。

      EMPTY类型规定了元素不能有值但可以有属性,不能包括文本。ANY类型则规定一个元素下面可以包括子元素,文本,属性,将根元素设置为ANY后 子元素出现的次数和顺序将不受限制。(#PCDATA) 则规定元素下面不能包括子元素,且元素的值是字符串。

    <!ELEMENT 元素名称 EMPTY>
    <!ELEMENT br EMPTY>
    <!ELEMENT 元素名称 (#PCDATA)>
    <!ELEMENT from (#PCDATA)>
    <!ELEMENT 元素名称 ANY>
    <!ELEMENT note ANY>
    <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
    <!ELEMENT note (to,from,heading,body)>

    关于子元素出现的次数

    <!ELEMENT 元素名称 (子元素名称+)>   <!-- +:至少出现一次 -->
    <!ELEMENT 元素名称 (子元素名称*)>   <!-- *:出现零次或者多次 -->
    <!ELEMENT 元素名称 (子元素名称?)>   <!-- ?:出现零次或者一次 -->

     四、属性的声明

    <!ATTLIST 元素名称 属性名称 属性类型 默认值>

    #REQUIRED:属性值是必需的

    #IMPLIED:属性不是必需的

    #FIXED value:属性值是固定的

    五、实体

    <!ENTITY 实体名称 "实体的值">
    
    <!ENTITY writer "Bill Gates">
    <!ENTITY copyright "Copyright W3School.com.cn">
    
    <author>&writer;&copyright;</author>

    六、实战演练:

    <!DOCTYPE CATALOG [
    
    <!ENTITY AUTHOR "John Doe">
    <!ENTITY COMPANY "JD Power Tools, Inc.">
    <!ENTITY EMAIL "jd@jd-tools.com">
    
    <!ELEMENT CATALOG (PRODUCT+)>
    
    <!ELEMENT PRODUCT
    (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
    <!ATTLIST PRODUCT
    NAME CDATA #IMPLIED
    CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
    PARTNUM CDATA #IMPLIED
    PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
    INVENTORY (InStock|Backordered|Discontinued) "InStock">
    
    <!ELEMENT SPECIFICATIONS (#PCDATA)>
    <!ATTLIST SPECIFICATIONS
    WEIGHT CDATA #IMPLIED
    POWER CDATA #IMPLIED>
    
    <!ELEMENT OPTIONS (#PCDATA)>
    <!ATTLIST OPTIONS
    FINISH (Metal|Polished|Matte) "Matte" 
    ADAPTER (Included|Optional|NotApplicable) "Included"
    CASE (HardShell|Soft|NotApplicable) "HardShell">
    
    <!ELEMENT PRICE (#PCDATA)>
    <!ATTLIST PRICE
    MSRP CDATA #IMPLIED
    WHOLESALE CDATA #IMPLIED
    STREET CDATA #IMPLIED
    SHIPPING CDATA #IMPLIED>
    
    <!ELEMENT NOTES (#PCDATA)>
    
    ]>

    根据上面的ddt,对应写出自己的XML文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE CATALOG SYSTEM "CATALOG.dtd" >
    <CATALOG>
        <PRODUCT NAME="apple"  PARTNUM="30">
            <SPECIFICATIONS WEIGHT="30" POWER="30"> </SPECIFICATIONS>
            <OPTIONS></OPTIONS>
            <PRICE MSRP="40" WHOLESALE="89" STREET ="90"  SHIPPING ="20"></PRICE>
            <NOTES></NOTES>
        </PRODUCT>
    </CATALOG>

    DTD入门学习结束!

  • 相关阅读:
    java架构师学习路线-HTTP请求类型及说明
    java架构师学习路线-关闭HTTP的TRACE方法
    AC自动机模板
    loj 2721 [NOI2018] 屠龙勇士
    scrum介绍
    本地搭建nacos集群
    js对象
    函数声明与表达式、匿名函数与具名函数、立即执行函数
    第六章 SSH远程服务介绍
    第十二章 配置vlan
  • 原文地址:https://www.cnblogs.com/lyjs/p/4853338.html
Copyright © 2020-2023  润新知