`

W3school 之 XML DTD 内容摘录

    博客分类:
  • xml
阅读更多

虽然DTD 将被schema取代,但目前在一些应用上还是有DTD来定义的XML,只为了解一点。

内容原址http://w3school.com.cn/

 

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。

它使用一系列的合法元素来定义文档结构。可被成行地声明于 XML 文档中,也可作为一个外部引用。

1.假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:

<!DOCTYPE 根元素 [元素声明]>
如:
<?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>

2.假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

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

//////////////////////////////////////////////////////
在 DTD 中,XML 元素通过元素声明来进行声明。
1.元素声明使用下面的语法:

<!ELEMENT 元素名称 类别>
例:<!ELEMENT to CDATA>

或者是:<!ELEMENT 元素名称 (元素内容)>
例:<!ELEMENT note (to,from,heading,body)>

2.对于空元素则通过类别关键词EMPTY进行声明:

<!ELEMENT 元素名称 EMPTY>
例:<!ELEMENT note EMPTY>

3.对于只有 PCDATA 的元素则通过圆括号中的 #PCDATA 进行声明:

<!ELEMENT 元素名称 (#PCDATA)>
例:<!ELEMENT body (#PCDATA)>

4.通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 元素名称 ANY>
例:<!ELEMENT body ANY>

5.带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
例:<!ELEMENT note (to,from,heading,body)>
当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。

6.声明只出现一次的元素。
<!ELEMENT 元素名称 (子元素名称)>
例:<!ELEMENT note (body)>
说明:子元素必须出现一次,并且必须只在 "note" 元素中出现一次。

7.声明最少出现一次的元素
<!ELEMENT 元素名称 (子元素名称+)>
例:<!ELEMENT note (body+)>
加号声明了:子元素必须在 "note" 元素内出现至少一次。
问:如果出现了多次怎么处理?

8.声明出现零次或多次的元素
<!ELEMENT 元素名称 (子元素名称*)>
例:<!ELEMENT note (body*)>
子元素 message 可在 "note" 元素内出现零次或多次。
问:如果出现了多次怎么处理?

9.声明出现零次或一次的元素
<!ELEMENT 元素名称 (子元素名称?)>
例:<!ELEMENT note (body?)>
问号声明了:子元素可在 "note" 元素内出现零次或一次。

10.声明“非.../既...”类型的内容
<!ELEMENT note (to,from,header,(message|body))>
上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

11.声明混合型的内容
<!ELEMENT note (#PCDATA|to|from|header|message)*>
上面的例子声明了:"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

//////////////////////////////////////////////////

DTD属性声明使用下列语法:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>

DTD 实例:
<!ATTLIST payment type CDATA "check">

XML 实例:
<payment type="check" />

属性类型:
已知的属性类型有11种。常用的有CDATA,(en1|en2|...),ID,ENTITY...等。

属性的默认值4种形式:
1.值 属性的默认值

DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
合法的 XML:
<square width="100" />
在上面的例子中,"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。

2.#REQUIRED 属性值是必需的

<!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED>
DTD:
<!ATTLIST person number CDATA #REQUIRED>
合法的 XML:
<person number="5677" />
非法的 XML:
<person />
假如您没有默认值选项,但是仍然希望强制作者提交属性的话,请使用关键词 #REQUIRED

3.#IMPLIED 属性不是必需的

<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
合法的 XML:
<contact fax="555-667788" />
合法的 XML:
<contact />
假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词 #IMPLIED。

4.#FIXED value 属性值是固定的

<!ATTLIST 元素名称 属性名称 属性类型 #FIXED "value">
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
合法的 XML:
<sender company="Microsoft" />
非法的 XML:
<sender company="W3School" />
如果您希望属性拥有固定的值,并不允许作者改变这个值,请使用 #FIXED 关键词。
如果作者使用了不同的值,XML 解析器会返回错误。

5.枚举值

<!ATTLIST 元素名称 属性名称 (en1|en2|..) 默认值>
DTD 例子:
<!ATTLIST payment type (check|cash) "cash">
XML 例子:
<payment type="check" />
或者
<payment type="cash" />
如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。

6.多个属性的声明,如:

<!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS
FINISH (Metal|Polished|Matte) "Matte"
ADAPTER (Included|Optional|NotApplicable) "Included"
CASE (HardShell|Soft|NotApplicable) "HardShell">

<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST PRICE
MSRP CDATA #IMPLIED
WHOLESALE CDATA #IMPLIED
STREET CDATA #IMPLIED
SHIPPING CDATA #IMPLIED>

////////////////////////////////////////////////////////

DTD实体

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

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

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

实体内部声明:
语法:
<!ENTITY 实体名称 "实体的值">

DTD 例子:
<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">
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>

分享到:
评论

相关推荐

    xml与DTD,xml与DTD

    xml与DTD,xml与DTD,xml与DTD,xml与DTD

    w3school 教程(离线中文版)

    XML教程:XML DTD XML DOM XSL XSLT XSL-FO XPath XQuery XLink XPointer Schema XForms SOAP WSDL RDF RSS WAP Web Services 多媒体:Media SMIL SVG 建站手册:网站构建 万维网联盟 (W3C) 浏览器信息 网站品质 ...

    w3school web编程教程

    在w3school,你可以找到你所需要的所有的网站建设教程。 从基础的HTML到XHTML,乃至进阶的XML、SQL、数据库、多媒体和WAP。 HTML教程 HTML XHTML CSS TCP/IP XML教程 XML DTD XML DOM XSL XSLT XSL-FO ...

    w3school chm

    哟两个w3school chm,一个版本比较新,一个是旧版,可以结合使用 HTML教程 HTML XHTML CSS TCP/IP XML教程 XML XSL XSLT XSL-FO XPath XQuery XLink XPointer DTD Schema XML DOM ...

    使用DTD验证XML文档

    二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义规则。 三、 DTD的作用: a) DTD使每个XML文件可以携带一个自身格式的描述。 b) DTD使不同组织的人可以使用一个通用DTD用来...

    XML-DTD实例讲解

    XML入门精解之DTD 文件格式定义(XML DTD)  DTD实际上可以看作一个或多个XML文件的模板,这些XML文件中的元素、元素的属性、元素的排列方式/顺序、元素能够包含的内容等,都必须符合DTD中的定义。XML文件中的元素,...

    XML DTD XSL XLD DOM

    XML例子 DTD例子 XSL例子 XLD例子 DOM解析

    W3schoolXML教程

    W3school的XML教程(中文),其中含DTD、Schema、XSLT、XPath、XLink、XQuery、SOAP、WSDL。

    w3school 教程CHM,把学校搬回家

    XML教程:XML DTD XML DOM XSL XSLT XSL-FO XPath XQuery XLink XPointer Schema XForms SOAP WSDL RDF RSS WAP Web Services 多媒体:Media SMIL SVG 建站手册:网站构建 万维网联盟 (W3C) 浏览器信息 网站品质 ...

    w3school.com.cn整站下载 领先的 Web 技术教程 离线学习

    领先的 Web 技术教程,在w3school,你可以找到你所需要的所有的网站建设教程。 从基础的HTML到XHTML,乃至进阶的XML、SQL、数据库、多媒体和WAP。 完整的网站技术参考手册 我们的参考手册涵盖了网站技术的方方面面。...

    W3SCHOOL中文离线版教程

    领先的 Web 技术教程 - 全部免费,在 w3school,你可以找到你所需要的所有的网站建设教程。 从基础的 HTML 到 CSS,乃至进阶的XML、SQL、JS、PHP 和 ASP.NET。 包含HTML教程、浏览器脚本、服务器脚本、XML教程、Web ...

    XML、DTD、Schema

    XML、DTD、Schema笔记、使用方法、注意事项,尤其是对XML和DTD比较详细

    xml dtd html 源程序

    xml dtd html 源程序 数据与模版 生成 html

    w3school网站打包成chm编程手册大全

    我花时间用软件将w3school网站的学习手册内容打包成一个cmh文件,从些查询任何编程资料,只要有他就可以 HTML教程 HTML XHTML CSS TCP/IP XML教程 XML DTD XML DOM XSL XSLT XSL-FO XPath XQuery XLink ...

    W3school.chm

    W3School将为您回答这个问题,在您成为专业Web开发者的路上助一臂之力,从而更好地应对未来的挑战。 如果您是初学者,请您阅读《网站构建初级教程》。 如果您是开发者,请您阅读《网站构建高级教程》。 W3School ...

    XML Schema 与 XML DTD的技术比较与分析

    XML Schema 与 XML DTD的技术比较与分析XML Schema 与 XML DTD的技术比较与分析

    XML DTD简单设计

    关于XML中DTD的简单写法,包括引用外部DTD之类的典型说明

    w3school 5.0.CHM

    很全的教程,包括:HTML ,XHTML ,CSS ,TCP/IP ,XML ,DTD ,XML DOM ,XSL ,XSLT ,XSL-FO ,XPath ,XQuery ,XLink ,XPointer ,Schema ,XForms ,SOAP ,WSDL ,RDF ,RSS ,WAP ,Web Services ,JavaScript ,HTML DOM ,DHTML ,...

    xml与dtd调用相关实例

    与xml相关内部dtd与外部dtd实例,内部dtd调用与外部dtd调用实例!

    XML的DTD教程

    关于XML的DTD教程,关于XML的DTD教程,关于XML的DTD教程

Global site tag (gtag.js) - Google Analytics