加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML(2)——结识DTD

发布时间:2020-12-16 06:09:29 所属栏目:百科 来源:网络整理
导读:背景:学习XML视频,自然就接触了DTD,不总结吧,感觉说不过去,毕竟算是一个新的名词。下面就来总结一下吧,算是对自己一个交代,也方便后期查阅。 一、What? 文档类型定义( Document Type Definition) Document 英汉翻译: n. 文件,公文;[计] 文档;证

背景:学习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文档;
只提供了有限的数据类型,用户无法自定义类型;
不支持域名机制。



五、心得体会

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


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读