XML--DTD

前端之家收集整理的这篇文章主要介绍了XML--DTD前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是DTD


DTD(Document Type Definition) 是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。

用于定义XML的结构和语法规则,避免出现数据的混乱

还用于配置XML,保证定义的标准

DTD内容放置


XML

也可以放在专门的DTD文档中

实例代码


例如
<student>
 
<name>刘伟</name>
<number>232123</number>
</student>
一个student标签只能包含一个<name>和<number>标签

<!DOCTYPE>

<!DOCTYPE>声明位于文档中的最前面的位置,处于<HTML>标签之前。此标签可告示浏览器文档使用那种htmlXHTML规范

标签可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的HTML文档。


PS :

<!DOCTYPE>标签\没有结束标签

下面咱先来全局观看看学习的内容


XML内置DTD内容



<?xmlversion="1.0" encoding="utf-8"?>
<!DOCTYPE书籍列表[
<!ELEMENT书籍列表(计算机书籍*)>
<!ELEMENT计算机书籍(书名,价格,简要)>
<!ELEMENT书名(#PCDATA)>
<!ELEMENT价格(#PCDATA)>
<!ELEMENT简要(#PCDATA)>]>
<书籍列表>
 
<书籍列表>
    <计算机书籍>
      <书名>XML</书名>
      <价格>55.5</价格>
      <简要>
    整理过程
      </简要>
    </计算机书籍>
</书籍列表>


外部DTD



就是将DTDXML内容分别在不同的文件

两种类型

系统共享 system关键字

特定行业或公众 public关键字


所以上面实例还可以写成以下内容

DTD内容不变,写成文件book.dtd
在XML文件中插入引用的DTD
<?xml version="1.0" encoding="utf-8">
<!DOCTYPE书籍列表 SYSTEM "book.dtd">


注意:关键字System用于引用一个作者或组织所编写的众多xml文档中通用的dtd

XML文件构成

元素

实体

PCDATA被解析的数据(文本内容)

CDATA不应由xml解析的文本数据


XML中有 5个预定义的实体引用:


@H_601_404@

小于

@H_601_404@

大于

@H_601_404@

和号

@H_601_404@

省略号

@H_601_404@

引号

&lt;

<

&gt;

>

&amp;

&

&apos;

'

&quot;

"


非法的XML字符必须被替换为实体引用


DTD元素


元素声明使用以下语法:


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

声明可以包含元素或是没有子元素(只有文本,则填写pcdata)

例如:

<!ELEMENT计算机送枯寂(书名,价格)>

空元素则通过关键字 EMPTY声明


<!ELEMENT元素名称 EMPTY>

实例

DTD<!ELEMENT br EMPTY>

XML<br/>

任何元素


表示可以带有任何内容的元素

<!ELEMENT元素名称ANY>

实例
DTD中 <!ELEMENT student ANY>
xml中 <student>刘伟</student>
 <student><name>刘伟</name></studente>


对于元素可以添加一些限制,出现的次数

这里就要注意字符的使用了



尤其注意或(or)的使用 |,以及严格按照顺序的要求的并(AND)符号" ' "

实例

声明只出现一次的元素
<!ELEMENT元素名称(子元素名称)>
<!ELEMENT书籍(计算机书籍)>
最少出现一次的元素
<!ELEMENT元素名称(子元素名称+)>
<!ELEMENT书籍(计算机书籍+)>
xml中
<书籍>
 <计算机书籍>
 <作者>张珊</作者>
 <作者>张四</作者>
 </计算机书籍>
</书籍>
 
成组元素
表示括号中的元素可以成组的出现或重复这里就不再解释了


DTD属性


DTD中,通过ATTLISTatlist)来进行声明


语法:

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

实例
DTD中
<!ATLISTpayment type CDATA "cash">
XML文件中
<paymenttype="cash">


DTD属性有多种类型

以下是属性类型的选项:

类型

描述

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:
<!ELEMENTsquare EMPTY>
<!ATTLIST square width CDATA "0">
合法的 XML:
<squarewidth="100" />
在上面的例子中,"square" 被定义为带有 CDATA 类型的 "width"属性的空元素。如果宽度没有被设定,其默认值为0 。
列举属性值
语法:
<!ATTLIST元素名称 属性名称 (en1|en2|..) 默认值>
DTD 例子:
<!ATTLISTpayment type (check|cash) "cash">
XML 例子:
<paymenttype="check" />
或者
<paymenttype="cash" />
如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。
 
固定值的默认值语法
#FIXED
语法
<!ATTLIST元素名称 属性名称 属性类型 #FIXED "value">
例子
DTD:
<!ATTLISTsender company CDATA #FIXED "Microsoft">
合法的 XML:
<sendercompany="Microsoft" />
非法的 XML:
<sendercompany="W3School" />
如果您希望属性拥有固定的值,并不允许作者改变这个值,请使用 #FIXED 关键词。如果作者使用了不同的值,XML 解析器会返回错误


DTD实体

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

实体引用是对实体的引用。

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

内部实体声明的语法:

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

DTD例子:

<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">

XML例子:

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

注释:一个实体由三部分构成:前面的一个和号 (&),一个实体名称,以及后面的一个分号 (;)

实体引用

字符

&lt;

<

&gt;

>

&amp;

&

&quot;

"

&apos;

一个外部实体声明

使用System关键字"URI/URL"

DTD 例子:
<!ENTITYwriter SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
XML 例子:
<author>&writer;©right;</author>


命名空间


解决名称冲突问题, w3cXML指定了命名空间的标准


前缀标识发

在元素和属性增加一个标识,区分那个DTD


以上是DTD的基本使用,不足之处还请谅解

原文链接:https://www.f2er.com/xml/300210.html

猜你在找的XML相关文章