`

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>

分享到:
评论

相关推荐

    w3school 5.0 w3school 5.0

    XML(Extensible Markup Language)是用于存储和传输数据的标记语言,w3school会讲解其基本语法、DTD(Document Type Definition)和XSD(XML Schema)验证,以及XPath和XSLT的使用。SQL(Structured Query Language...

    w3school HTML XML Javascript 全部内容

    4. XML基础:理解XML语法,了解命名空间、DTD(Document Type Definition)或XML Schema的使用,以及XML数据的解析。 5. XML进阶:XPath用于在XML文档中查找信息,XSLT用于转换XML文档结构。 6. JavaScript基础:...

    xml与DTD,xml与DTD

    在这里,“`-//W3C//DTD XML 1.0//EN`”是公有标识符,用于唯一标识DTD文档。 综上所述,XML与DTD在实际应用中有着不可替代的地位。通过使用XML来存储数据,结合DTD定义数据结构,可以有效地保证数据的一致性和完整...

    w3school xml学习资料

    这个“w3school xml学习资料”压缩包文件包含了一个名为“xml.chm”的帮助文档,很可能是W3School关于XML的教程集合。 XML的设计目标是提高数据的可移植性和互操作性,使得不同系统间的数据交换变得简单。XML文档由...

    w3school xml 教程

    W3School 提供的 XML 教程是学习这项技术的重要资源,尤其适合初学者。这个教程可能涵盖了XML的基础概念、语法规范、文档类型定义(DTD)、XML Schema、命名空间、XSLT转换、XPath表达式以及DOM解析等核心内容。 ...

    W3School全套教程

    W3School 的XML教程讲解了XML的基本结构、命名空间、DTD与XSD验证、XPath与XSLT转换等,帮助开发者理解如何使用XML处理数据。 **SQL教程** SQL(结构化查询语言)是数据库管理的语言。W3School 的SQL教程覆盖了数据...

    W3School离线手册中文版(web前端)

    W3School是全球知名的在线Web技术教程平台,其内容权威且全面,深受开发者喜爱。这份离线手册包含了从基础到高级的全方位Web前端知识,对于初学者和经验丰富的开发者来说都是宝贵的资源。 **一、HTML(超文本标记...

    w3school在线教程

    w3school的XML教程将引导你了解XML的基本结构,如声明、元素、属性和文本内容。还会介绍命名空间、处理指令和实体引用。同时,教程还会涉及XML Schema和DTD(文档类型定义),它们是验证XML文档结构的重要工具。XML...

    W3School离线手册

    W3School的XML教程会讲解XML的基本结构、命名空间、DTD(文档类型定义)和XSLT(XML转换语言)。 5. **SQL(Structured Query Language)**:SQL是数据库管理语言,用于查询、更新和操作数据库。W3School的SQL教程...

    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) 浏览器信息 网站品质 ...

    W3C school XML schema中文教程

    W3C School提供的XML Schema中文教程是学习这一规范的重要资源,旨在帮助用户理解并掌握XML Schema的基本概念、元素、属性以及数据类型等核心内容。 XML Schema替代了早期的DTD(文档类型定义),提供了更强大、更...

    w3school网站资源

    w3school的XML教程可能包括: 1. XML基础:解释XML的用途,以及XML文档的基本结构。 2. XML元素和属性:与HTML类似,但XML元素更注重结构和语义。 3. XML命名空间:用于解决元素和属性名的冲突问题。 4. DTD(文档...

    w3school web编程教程

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

    w3school各种标准语言的介绍

    W3School的XML教程解释了XML的基本结构、命名空间、DTD和XSLT转换等,这对于数据交换和程序间通信至关重要。 在学习这些标准语言时,W3School提供了丰富的实例、练习和工具,以帮助学习者更好地理解和应用所学知识...

    W3school完整中文版.chm

    在W3school中,你可以学习XML的基本结构、命名空间、DTD(文档类型定义)和XSLT(XML样式表转换)等相关知识。 5. **SQL(Structured Query Language)**:SQL是用于管理和处理关系数据库的标准语言。教程会教授...

    W3SCHOOL中文离线版教程

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

    W3School离线手册.rar

    《W3School离线手册.rar》是一个非常实用的资源,其中包含了全面的Web开发教程,特别是对于初学者和需要快速查阅技术细节的开发者而言。这个压缩包中的核心文件是"W3School全套 教程.CHM",这是一款帮助文件,通常以...

    w3school网页设计教程

    w3school的XML教程将教你如何创建XML文档,理解命名空间和DTD(Document Type Definition),以及如何使用XPath和XSLT进行数据操作。 SQL(Structured Query Language)是用于管理关系数据库的标准语言。在这个教程...

    w3school离线文档

    W3School的教程将解释XML的语法、命名空间、DTD(文档类型定义)和XSD(XML Schema)验证,以及如何使用XPath和XSLT来处理XML文档。 **SQL (结构化查询语言)** SQL是用于管理和处理关系数据库的标准语言。离线文档...

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

    XML DTD(文档类型定义)是较早出现的规范,而XML Schema则在2001年成为W3C的正式推荐标准,旨在提供更强大和灵活的XML文档验证功能。 首先,XML Schema在格式上与XML保持一致,这意味着XML Schema本身就是XML文档...

Global site tag (gtag.js) - Google Analytics