DTD教程Word文档下载推荐.docx
- 文档编号:4222751
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:18
- 大小:21.93KB
DTD教程Word文档下载推荐.docx
《DTD教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DTD教程Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。
note>
to>
George<
/to>
from>
John<
/from>
heading>
Reminder<
/heading>
body>
Don'
tforgetthemeeting!
/body>
/note>
在您的浏览器中打开此XML文件,并选择“查看源代码”命令。
以上DTD解释如下:
DOCTYPEnote(第二行)定义此文档是note类型的文档。
ELEMENTnote(第三行)定义note元素有四个元素:
"
to、from、heading,、body"
ELEMENTto(第四行)定义to元素为"
#PCDATA"
类型
ELEMENTfrom(第五行)定义frome元素为"
ELEMENTheading(第六行)定义heading元素为"
ELEMENTbody(第七行)定义body元素为"
1.2外部文档声明
假如DTD位于XML源文件的外部,那么它应通过下面的语法被封装在一个DOCTYPE定义中:
DOCTYPE根元素SYSTEM"
文件名"
这个XML文档和上面的XML文档相同,但是拥有一个外部的DTD:
(在IE5中打开,并选择“查看源代码”命令。
)
DOCTYPEnoteSYSTEM"
note.dtd"
这是包含DTD的"
文件:
1.3为什么使用DTD?
通过DTD,您的每一个XML文件均可携带一个有关其自身格式的描述。
通过DTD,独立的团体可一致地使用某个标准的DTD来交换数据。
而您的应用程序也可使用某个标准的DTD来验证从外部接收到的数据。
您还可以使用DTD来验证您自身的数据。
2DTDXML构建模块
XML以及HTML文档的主要构建模块是类似<
....<
这样的标签。
2.1XML文档构建模块
所有的XML文档(以及HTML文档)均由以下简单的构建模块构成:
∙元素
∙属性
∙实体
∙PCDATA
∙CDATA
下面是每个构建模块的简要描述。
2.2元素
元素是XML以及HTML文档的主要构建模块。
HTML元素的例子是"
body"
和"
table"
。
XML元素的例子是"
note"
message"
。
元素可包含文本、其他元素或者是空的。
空的HTML元素的例子是"
hr"
、"
br"
以及"
img"
实例:
bodytextinbetween<
message>
somemessageinbetween<
/message>
2.3属性
属性可提供有关元素的额外信息。
属性总是被置于某元素的开始标签中。
属性总是以名称/值的形式成对出现的。
下面的"
元素拥有关于源文件的额外信息:
imgsrc="
computer.gif"
/>
元素的名称是"
属性的名称是"
src"
属性的值是"
由于元素本身为空,它被一个"
/"
关闭。
2.4实体
实体是用来定义普通文本的变量。
实体引用是对实体的引用。
大多数同学都了解这个HTML实体引用:
&
nbsp;
这个“无折行空格”实体在HTML中被用于在某个文档中插入一个额外的空格。
当文档被XML解析器解析时,实体就会被展开。
下面的实体在XML中被预定义:
实体引用
字符
lt;
gt;
amp;
quot;
apos;
'
2.5PCDATA
PCDATA的意思是被解析的字符数据(parsedcharacterdata)。
可把字符数据想象为XML元素的开始标签与结束标签之间的文本。
PCDATA是会被解析器解析的文本。
这些文本将被解析器检查实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何&
、<
或者>
字符;
需要使用&
、&
以及&
实体来分别替换它们。
2.6CDATA
CDATA的意思是字符数据(characterdata)。
CDATA是不会被解析器解析的文本。
在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
3DTD元素
在一个DTD中,元素通过元素声明来进行声明。
3.1声明一个元素
在DTD中,XML元素通过元素声明来进行声明。
元素声明使用下面的语法:
ELEMENT元素名称类别>
或者
ELEMENT元素名称(元素内容)>
3.2空元素
空元素通过类别关键词EMPTY进行声明:
ELEMENT元素名称EMPTY>
例子:
ELEMENTbrEMPTY>
XML例子:
br/>
3.3只有PCDATA的元素
只有PCDATA的元素通过圆括号中的#PCDATA进行声明:
ELEMENT元素名称(#PCDATA)>
3.4带有任何内容的元素
通过类别关键词ANY声明的元素,可包含任何可解析数据的组合:
ELEMENT元素名称ANY>
ELEMENTnoteANY>
3.5带有子元素(序列)的元素
带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:
ELEMENT元素名称(子元素名称1)>
ELEMENT元素名称(子元素名称1,子元素名称2,.....)>
当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。
在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。
元素的完整声明是:
3.6声明只出现一次的元素
ELEMENT元素名称(子元素名称)>
ELEMENTnote(message)>
上面的例子声明了:
message子元素必须出现一次,并且必须只在"
元素中出现一次。
3.7声明最少出现一次的元素
ELEMENT元素名称(子元素名称+)>
ELEMENTnote(message+)>
上面的例子中的加号声明了:
message子元素必须在"
元素内出现至少一次。
3.8声明出现零次或多次的元素
ELEMENT元素名称(子元素名称*)>
ELEMENTnote(message*)>
上面的例子中的星号声明了:
子元素message可在"
元素内出现零次或多次。
3.9声明出现零次或一次的元素
ELEMENT元素名称(子元素名称?
)>
ELEMENTnote(message?
上面的例子中的问号声明了:
元素内出现零次或一次。
3.10声明“非.../既...”类型的内容
ELEMENTnote(to,from,header,(message|body))>
元素必须包含"
to"
元素、"
from"
header"
元素,以及非"
元素既"
元素。
3.11声明混合型的内容
ELEMENTnote(#PCDATA|to|from|header|message)*>
元素可包含出现零次或多次的PCDATA、"
或者"
4DTD属性
在DTD中,属性通过ATTLIST声明来进行声明。
4.1声明属性
属性声明使用下列语法:
ATTLIST元素名称属性名称属性类型默认值>
DTD实例:
ATTLISTpaymenttypeCDATA"
check"
XML实例:
paymenttype="
以下是属性类型的选项:
类型
描述
CDATA
值为字符数据(characterdata)
(en1|en2|..)
此值是枚举列表中的一个值
ID
值为唯一的id
IDREF
值为另外一个元素的id
IDREFS
值为其他id的列表
NMTOKEN
值为合法的XML名称
NMTOKENS
值为合法的XML名称的列表
ENTITY
值是一个实体
ENTITIES
值是一个实体列表
NOTATION
此值是符号的名称
xml:
值是一个预定义的XML值
默认值参数可使用下列值:
值
解释
属性的默认值
#REQUIRED
属性值是必需的
#IMPLIED
属性不是必需的
#FIXEDvalue
属性值是固定的
4.2规定一个默认的属性值
DTD:
ELEMENTsquareEMPTY>
ATTLISTsquarewidthCDATA"
0"
合法的XML:
squarewidth="
100"
在上面的例子中,"
square"
被定义为带有CDATA类型的"
width"
属性的空元素。
如果宽度没有被设定,其默认值为0。
4.3#IMPLIED
语法
ATTLIST元素名称属性名称属性类型#IMPLIED>
例子
ATTLISTcontactfaxCDATA#IMPLIED>
contactfax="
555-667788"
contact/>
假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词#IMPLIED。
4.4#REQUIRED
ATTLIST元素名称属性名称属性类型#REQUIRED>
ATTLISTpersonnumberCDATA#REQUIRED>
personnumber="
5677"
非法的XML:
person/>
假如您没有默认值选项,但是仍然希望强制作者提交属性的话,请使用关键词#REQUIRED。
4.5#FIXED
ATTLIST元素名称属性名称属性类型#FIXED"
value"
ATTLISTsendercompanyCDATA#FIXED"
Microsoft"
sendercompany="
W3School"
如果您希望属性拥有固定的值,并不允许作者改变这个值,请使用#FIXED关键词。
如果作者使用了不同的值,XML解析器会返回错误。
4.6列举属性值
语法:
ATTLIST元素名称属性名称(en1|en2|..)默认值>
DTD例子:
ATTLISTpaymenttype(check|cash)"
cash"
XML例子:
如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。
5DTD实体
实体是用于定义引用普通文本或特殊字符的快捷方式的变量。
实体可在内部或外部进行声明。
5.1一个内部实体声明
ENTITY实体名称"
实体的值"
ENTITYwriter"
BillGates"
ENTITYcopyright"
CopyrightW3S"
author>
writer;
copyright;
/author>
注释:
一个实体由三部分构成:
一个和号(&
),一个实体名称,以及一个分号(;
)。
5.2一个外部实体声明
ENTITY实体名称SYSTEM"
URI/URL"
ENTITYwriterSYSTEM"
ENTITYcopyrightSYSTEM"
6DTD验证
InternetExplorer5.0可根据某个DTD来验证您的XML。
6.1通过XML解析器进行验证
当您试图打开某个XML文档时,XML解析器有可能会产生错误。
通过访问parseError对象,就可以取回引起错误的确切代码、文本甚至所在的行。
注释:
load()方法用于文件,而loadXML()方法用于字符串。
varxmlDoc=newActiveXObject("
Microsoft.XMLDOM"
xmlDoc.async="
false"
xmlDoc.validateOnParse="
true"
xmlDoc.load("
note_dtd_error.xml"
document.write("
br>
ErrorCode:
"
document.write(xmlDoc.parseError.errorCode)
ErrorReason:
document.write(xmlDoc.parseError.reason)
ErrorLine:
document.write(xmlDoc.parseError.line)
TryitYourself或者仅仅看一下这个XML文件。
6.2关闭验证
通过把XML解析器的validateOnParse设置为"
,就可以关闭验证。
TryitYourself
6.3通用的XML验证器
为了帮助您验证XML文件,我们创建了此链接,这样你就可以验证任何XML文件了。
parseError对象
您可以在我们的《XMLDOM教程》中阅读更多有关parseError对象的信息。
7DTD-来自网络的实例
7.1电视节目表DTD
由DavidMoisan创造。
拷贝自:
http:
//www.davidmoisan.org/
DOCTYPETVSCHEDULE[
ELEMENTTVSCHEDULE(CHANNEL+)>
ELEMENTCHANNEL(BANNER,DAY+)>
ELEMENTBANNER(#PCDATA)>
ELEMENTDAY(DATE,(HOLIDAY|PROGRAMSLOT+)+)>
ELEMENTHOLIDAY(#PCDATA)>
ELEMENTDATE(#PCDATA)>
ELEMENTPROGRAMSLOT(TIME,TITLE,DESCRIPTION?
ELEMENTTIME(#PCDATA)>
ELEMENTTITLE(#PCDATA)>
ELEMENTDESCRIPTION(#PCDATA)>
ATTLISTTVSCHEDULENAMECDATA#REQUIRED>
ATTLISTCHANNELCHANCDATA#REQUIRED>
ATTLISTPROGRAMSLOTVTRCDATA#IMPLIED>
ATTLISTTITLERATINGCDATA#IMPLIED>
ATTLISTTITLELANGUAGECDATA#IMPLIED>
7.2报纸文章DTD
DOCTYPENEWSPAPER[
ELEMENTNEWSPAPER(ARTICLE+)>
ELEMENTARTICLE(HEADLINE,BYLINE,LEAD,BODY,NOTES)>
ELEMENTHEADLINE(#PCDATA)>
ELEMENTBYLINE(#PCDATA)>
ELEMENTLEAD(#PCDATA)>
ELEMENTBODY(#PCDATA)>
ELEMENTNOTES(#PCDATA)>
ATTLISTARTICLEAUTHORCDATA#REQUIRED>
ATTLISTARTICLEEDITORCDATA#IMPLIED>
ATTLISTARTICLEDATECDATA#IMPLIED>
ATTLISTARTICLEEDITIONCDATA#IMPLIED>
ENTITYNEWSPAPER"
VervetLogicTimes"
ENTITYPUBLISHER"
VervetLogicPress"
ENTITYCOPYRIGHT"
Copyright1998VervetLogicPress"
7.3产品目录DTD
DOCTYPECATALOG[
ENTITYAUTHOR"
JohnDoe"
ENTITYCOMPANY"
JDPowerTools,Inc."
ENTITYEMAIL"
jd@jd-"
ELEMENTCATALOG(PRODUCT+)>
ELEMENTPRODUCT
(SPECIFICATIONS+,OPTIONS?
PRICE+,NOTES?
ATTLISTPRODUCT
NAMECDATA#IMPLIED
CATEGORY(HandTool|Table|Shop-Professional)"
HandTool"
PARTNUMCDATA#IMPLIED
PLANT(Pittsburgh|Milwaukee|Chicago)"
Chicago"
INVENTORY(InStock|Backordered|Discontinued)"
InStock"
ELEMENTSPECIFICATIONS(#PCDATA)>
ATTLISTSPECIFICATIONS
WEIGHTCDATA#IMPLIED
POWERCDATA#IMPLIED>
ELEMENTOPTIONS(#PCDATA)>
ATTL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DTD 教程