XML(2)——结识DTD

背景:学习XML视频,自然就接触了DTD,不总结吧,感觉说不过去,毕竟算是一个新的名词。下面就来总结一下吧,算是对自己一个交代,也方便后期查阅。


一、What?


文档类型定义(Document Type Definition)

Document英汉翻译:
n. 文件,公文;[计] 文档;证件
vt. 用文件证明


Definition英汉翻译:
n. 定义;[物] 清晰度;解说


定义XML文件的结构

为XML文件提供语法与规则

内容既可以定义在XML文件中,也可以定义在XML文件外

使用XML进行数据交换的行业或者组织可定义自己的DTD

对于XML是可选内容



二、Why?


为了正确交换数据,XML文件需要正确的结构



三、How?


1、元素


【声明】


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


空元素:

    DTD中:<!ELEMENT 元素名称 EMPTY>    

    XML中:<br/>


表示带有任何内容:

    DTD中:<!ELEMENT 元素名称 ANY>

    XML中:<student>何丽杰</student>   <student><name>何丽杰</name></student>


只出现一次:<!ELEMENT 元素名称(子元素名称)>


最少出现一次:<!ELEMENT 元素名称(子元素名称+)>


出现0次或多次:<!ELEMENT 元素名称(子元素名称*)>


出现0次或一次:<!ELEMENT 元素名称(子元素名称?)>


或:<!ELEMENT 元素名称(子元素名称|子元素名称)>


混合型内容:<!ELEMENT 元素名称(#PCDATA|子元素名称)>



【子元素要求顺序】

DTD中:<!ELEMENT 计算机书籍(书名,价格)>

       <!ELEMENT 书名(#PCDATA)>

       <!ELEMENT 价格(#PCDATA)>

XML中:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><书籍列表>
     <计算机书籍>
          <书名>XML书籍</书名>
          <价格>100</价格>
     </计算机书籍>
</书籍列表></strong></span>



【重复元素】

DTD中:

       <!ELEMENT 计算机书籍(书名,作者+)>

       <!ELEMENT 书名(#PCDATA)>

       <!ELEMENT 作者(#PCDATA)>

XML中:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><书籍列表>
     <计算机书籍>
          <书名>XML书籍</书名>
          <作者>张三</作者>
          <作者>李四</作者>
     </计算机书籍>
</书籍列表></strong></span>


【成组元素】
DTD中:

       <!ELEMENT 计算机书籍(书名,价格)+>

       <!ELEMENT 书名(#PCDATA)>

       <!ELEMENT 价格(#PCDATA)>

XML中:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong><书籍列表>
     <计算机书籍>
          <书名>XML书籍</书名>
          <价格>100</价格>
          <书名>J2EE教程</书名>
          <价格>100</价格>
     </计算机书籍>
</书籍列表></strong></span>


2、属性


【声明】

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

       <!ATTLIST payment type CDATA "cash">

XML中:<payment type = "cash" />

 

【属性的默认值】

DTD中:<!ATTLIST 元素名称 属性名称 属性类型 #FIXED "value">

       <!ATTLIST payment type CDATA #FIXED "cash">

XML中:<payment type = "cash" />

       <payment/>



   

3、实体

    用于定义引用普通文本或者特殊字符的快捷方式的变量

    实体引用是对实体的引用

    实体可在内部或外部进行声明


【PCDATA】
    被解析的字符数据(parsed character data)。
    可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
    PCDATA是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
    文本中的标签会被当作标记来处理,而实体会被展开。
    不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &amp; 、&lt; 以及 &gt; 实体来分别替换它们。


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


4、命名空间

    在一个XML文档中,包含由多个DTD描述的元素,会出现冲突问题。为解决此问题,W3C的XML小组制定了被称为命名空间(NameSpace)的标准。


5、前缀标识符

   即在元素名和属性名前面增加一个标识符,以唯一区分当前元素或属性来自哪一个DTD。



四、优缺点


【优势】
    每一个XML文档都可携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。
    加强了文档标记内参数的一致性,使XML语法分析器能够确认文档。
    在DTD中对根元素的声明是必不可少的。

【缺陷】
    有自己的特殊语法,其本身不是XML文档;
    只提供了有限的数据类型,用户无法自定义类型;
    不支持域名机制。



五、心得体会

  

    学习了短短的一集视频,再加网上的内容,这块儿内容的学习也就到达了这种程度,总是感觉对这部分不是很了解,希望后期的学习实践中还能遇上,加油!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值