一个DTD可以看做是标记语言的语法文件,它是一套定义XML标记如何使用的规则。DTD定义了元素、元素的属性和取值,以及哪个元素可以被包含在另一个元素中的说明。DTD还可以用于定义实体。 请看一看下面的例子,它是一个关于email的DTD: <!ELEMENT Mail (From, To, Cc?, Date?, Subject, Body)> <!ELEMENT From (#PCDATA) > <!ELEMENT To (#PCDATA) > <!ELEMENT Cc (#PCDATA) > <!ELEMENT Date (#PCDATA) > <!ELEMENT Subject (#PCDATA) > <!ELEMENT Body (#PCDATA | P | Br)* > <!ELEMENT P (#PCDATA | Br)* > <!ATTLIST P align (left | right | justify) "left" > <!ELEMENT Br EMPTY > 根据上面这个DTD的内容,与之符合的XML文档具备如下特征: l 有一个From、一个To、一个可选择的Cc、一个可选择的Date、一个Subject和一个body。 l From 、To、Cc、Date、Subject元素只包含文本信息。 l Body元素可以含有文本和零或者多个P和Br元素。 l P元素可以包含文本和零或者多个Br元素。 l P元素有一个align属性,它的可取值范围是left、justify 或者right,默认值是left。 l Br元素是空的。 有效XML 有效XML文档指的是那些拥有一个DTD参考文件的XML文档。一个有效XML文档至少必须首先是简化格式的XML文档。跟随这个文档的DTD文件的有效性促进了XML执行程序的运行以及文档在兼容XML浏览器中的显示。 XML文档举例 例子1 - 一个简化格式的XML文档: <?xml version="1.0" standalone="no"?> <Mail> <From>Author</From> <To>Receiver</To> <Date> Thu, 7 Oct 1999 11:15:16 -0600</Date> <Subject>XML Introduction</Subject> <body><p>Thanks for reading<Br/> this article</p> <br/> <p>Hope you enjoyed this article</p> </body> </Mail> 第1行是XML声明,其中version属性指明了XML的版本,standalone属性等于"no"表示标记声明不独立于文档内部。XML声明可以看做是"运行指令"。尽管这个声明不是必须的,但是最好包含它,这将提高文档的灵活性。 例子2 - 一个遵守mail.dtd文件的有效XML文档。Date元素被省略,因为在mail.dtd中它是可选的。 元素 P 具有justify属性。Body和P元素间是Comments文本: <?xml version="1.0" standalone="no"?> <!DOCTYPE Mail system "http://infowest.com/DTDS/mail.dtd"> <Mail> <From>Author</From> <To>Receiver</To> <Cc>Receiver2</Cc> <Subject>XML Introduction</Subject> <body>Comments:<p align="justify">Thanks for reading<Br/> this article</p> <br/> <p>Hope you enjoyed this article</p> </body> </Mail> 例子3 -一个遵守mail.dtd文件的有效XML文档,存在Date 元素和Cc 元素,P元素拥有属性right: <?xml version="1.0" standalone="no"?> <!DOCTYPE Mail system "http://infowest.com/DTDS/mail.dtd"> <Mail> <From>Author</From> <To>Receiver</To> <Cc>Receiver2</Cc> <Date> Thu, 7 Oct 1999 11:15:16 -0600</Date> <Subject>XML Introduction</Subject> <body>Comments:<p align = "right" >Thanks for reading<Br/> this article</p> <br/> <p>Hope you enjoyed this article</p> </body> </Mail>
|
|
|