XML之DTD简单教程

DTD

<?xml version="1.0" encoding="utf-8">XML声明
<!ELEMENT ------>声明XML文档中可用的元素,以及该元素的使用方式
<!ATTLIST------->指定元素拥有列表中的属性

简单的例子

<?xml version="1.0"?>
<!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>

外部文档声明

假如DTD位于XML源文档外部,它应该通过下面的语法被封装在一个DOCTYPE

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

文件名是.dtd格式的文件,封装了dtd声明

DTD的作用

  • 给XML文件有关自身格式的描述
  • 通过DTD验证自身数据
  • 独立团体一致使用某个标准的DTD交换数据

XML文档构建模块

所有的XML文档及HTML文档均由以下简单的构建模块构成

  • 元素
  • 属性
  • 实体
  • PCDATA
  • CDATA

XML元素

元素是XML以及HTML文档的主要构建模块
例如HTML中的“body”,XML中的“note”和“message”

属性

提供有关元素的额外信息

实体

实体是用来定义普通文本的变量,例如HTML实体引用"&nbsp",无折行空格
XML预定义实体(类似于HTML)

实体引用字符
&lt ;<
&gt ;>
&amp ;&
&quot ;"
&apos ;

PCDATA

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

PCDATA是会被解析器器解析的文本。这些文本将被解析器检查实体以及标记

被解析的不包括&、<、>

CDATA

CDATA的意思是字符数据(character data)
CDATA是不会被解析器解析的文本


DTD-元素

声明一个元素

语法

<!ELEMENT 元素名称 类别>

<!ELEMENT 元素名称 (元素内容)>
元素声明<!ELEMNET···>
<!ELEMENT 元素名称 EMPTY>                   <!--空元素声明-->
<!ELEMENT 元素名称 (#PCDATA)>               <!--只有PCDATA的元素-->
<!ELEMENT 元素名称 ANY>                     <!--带有任何内容的元素-->
<!ELEMENT 元素名称 (子元素1,子元素2···)>     <!--带有子元素的元素-->

当子元素按照由逗号分隔开的序列进行声明时,子元素必须按照相同的顺序出现在文档中

<!ELEMENT 元素名称 (子元素名称)>        <!--子元素必须出现一次,且只能在“元素名称中初选一次”-->
<!ELEMENT 元素名称 (子元素名称+)>       <!--子元素必须出现至少一次-->
<!ELEMENT 元素名称 (子元素名称*)>       <!--出现零次或多次-->
<!ELEMENT 元素名称 (子元素名称?)>       <!--出现一次或多次-->
<!ELEMENT 元素名称 (子元素名称1|子元素名称2)><!--非...即...-->

DTD属性<!ATTLIST···>

声明属性

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

属性类型的选项

类型描述
CDATA值为字符数据(character data)
(en1|en2|…)此值为枚举列表中的一个值
ID值为唯一的ID
IDREF值为另一个元素的ID
IDREFS值为其他ID的列表
NMTOKEN值为合法的 XML 名称
NMTOKENS值为合法的 XML 名称的列表
ENTITY值是一个实体
ENTITIES值是一个实体列表
NOTATION此值是符号的名称
xml:值是一个预定义的 XML 值

默认值参数

属性的默认值
#REQUIRED属性值是必须的
#IMPLIED属性不是必需的
#FIXED value属性值是固定的

例子

DTD

<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

合法的XML

<square width="100">

DTD-实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量
实体引用是对实体的引用
实体可在内部或外部进行声明

内部实体声明

<!ENTITY 实体名称 "实体的值">

DTD例子

<!ENTITY writer "bill gates">
<!ENTITY copyright "Copyright zhougang">

XML例子

<author>&writer;&copyright;</author>

注释:一个实体由 &、实体名称、; 组成
外部实体声明

<!ENTITY 实体名称 SYSTEM "URI/URL">

DTD-例子

<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

XML例子

<author>&writer;&copyright;</author>

以上参考 http://www.w3school.com.cn/dtd/index.asp

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值