zoukankan      html  css  js  c++  java
  • XML学习之路(二)

    DTD

    一、什么是DTD?

    DTD即Document Type Definition,文档类型定义。

    我们知道,XML的标签可以自定义,不受任何约束。但有时侯,为了符合逻辑和业务需要,我们需要对XML文档加以约束。而DTD就是用来约束XML文档的。使其在一定的规范下使用。除了DTD技术,Schema技术也用于约束XML文档。

    二、DTD文档的声明

    外部文档声明
    <!DOCTYPE 根元素 SYSTEM|PUBLIC "DTD文件路径">
    
    eg:
    <!DOCTYPE webapp PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    
    除了外部文档声明,还有内部文档声明,内外部文档声明。
    内部文档声明:<!DOCTYPE 根元素 [定义内容]>
    内外部文档声明:<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
    对于内部文档声明,内外部文档声明,我们简单了解即可。主要还是采用外部文档声明的方式。

    注意事项:
    1.定义关键字一定要大写,比如DOCTYPE ELEMENT ATTLIST,此外SYSTEM PUBLIC也应该大写。
    2.当引用的是本地的DTD文档时,在声明中使用SYSTEM关键字。  eg:<!DOCTYPE stu SYSTEM "test.dtd">
    3.当引用的是网络上公共的DTD文档时,采用PUBLIC关键字。  eg:<!DOCTYPE webapp PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"

    三、DTD元素

    基本语法:<!ELEMENT NAME CONTENT>
    解释:ELEMENT 关键字   NAME 元素名称  
    CONTENT 元素类型,主要有以下几种,都必须大写:
    1.EMPTY  ----该元素不能包含任何元素或文本,但可以有属性
    2.ANY---该元素可以包含在DTD中定义的元素内容。
    3.#PCDATA ---该元素不包含其他元素,只有文本内容,也就是说钙元素内部不能嵌套其他标签。用关键字#PCDATA进行定义,它代表已经编译过的字符数据。
    4.子元素类型---该元素可以包含其他一系列子元素。子元素内容模型用来指定钙元素可以包含哪些子元素。
    eg:<!ELEMENT stu(classID,name,age,addr)>
    上面代码表示:stu元素包含classID,name,age,addr四个子元素。
    
    根据子元素之间的关系,子元素内容模型可能有以下两种结构:
    1.序列,所有子元素必须出现且只出现一次。注意事项:使用序列时,序列中不能出现#PCDATA。子元素中可以包含其他子元素。
    
    2.选择。 eg:<!ELEMENT stu(classID|name|age|addr)>。
    上述代码表示,stu的子元素只能是classID,name,age,addr中的一个,且只能有一个。
    
    
    元素出现现次数指示符:
    ?    0次或一次
    *    0次或者多次
    +    至少出现一次
    无符号  只能出现一次

    四、XML属性定义

    基本语法:<!ATTLIST 标签名 属性名 属性类型 属性说明>
    解释:
    属性类型可以是以下几种类型;
    1.CDATA:最普通的字符串
    2.枚举 即(值1|值2|值三),需要括号
    3.ID:表示该属性值是唯一的。  属性值需要以字母或者下划线开头。
    
    属性说明:
    1、#REQUIRED:必须设置。
    <!ATTLIST stu school (NCU|Pecking University|Wuhan University) #REQUIRED>
    2.#IMPLIED:可选值,也就是说可以设置该属性的值,也可以不设置
    <!ATTLIST addr CDATA #IMPLIED>
    3.#FIXED:固定值.也就是说给该属性指定一个固定的值。语法格式为:#FIXED ”固定值"
    <!ATTLIST stu class #FIXED "电子商务161">
    4.默认值。
    <!ATTLIST addr (北京|南昌|武汉) "南昌"

    五、XML实体

    实体:实体是用来定义普通文本快捷方式的变量。
    实体分为:引用实体和参数实体
    .
    引用实体在XML中使用,格式为:&实体名
    参数实体在DTD内部使用,格式为:%实体名
    
    
    引用实体:定义格式:<!ENTITY 实体名 文本值>
    eg:<!ENTITY copyright "Evil.company">
    
    参数实体:定义格式:<!ENTITY %  实体名 文本值> 注意:定义时%与实体名之间存在空格,使用的时候不需要空格。
    eg:<!ENTITY % name "HelloWorld">
    在我身后,微笑地活下去吧。
  • 相关阅读:
    Node
    HTTP权威指南
    一些乱七八糟的思考积累
    有限状态机
    奇怪问题引用到其它文件夹项目文件方法
    dijkstra+堆优化
    高精度
    BUAA 1301 最短路
    阿里云服务器ECS(Centos8)下安装和配置python3.8
    Cheat Sheet
  • 原文地址:https://www.cnblogs.com/L-C98/p/9163771.html
Copyright © 2011-2022 走看看