( ! ) Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in D:\www\up\xml\xml_dtd.php on line 14
Call Stack
#TimeMemoryFunctionLocation
10.0156359688{main}( )...\xml_dtd.php:0

( ! ) Warning: include(http://pub.houheaven.com/Nav02/Nav_deep2.htm): failed to open stream: no suitable wrapper could be found in D:\www\up\xml\xml_dtd.php on line 14
Call Stack
#TimeMemoryFunctionLocation
10.0156359688{main}( )...\xml_dtd.php:0

( ! ) Warning: include(): Failed opening 'http://pub.houheaven.com/Nav02/Nav_deep2.htm' for inclusion (include_path='.;C:\php\pear') in D:\www\up\xml\xml_dtd.php on line 14
Call Stack
#TimeMemoryFunctionLocation
10.0156359688{main}( )...\xml_dtd.php:0

DTD(Document Type Definition),文档类型定义,是一套关于标记符的语法规则,它是对 XML 制定的一种规范和验证机制,保证文档的格式是正确的,XML 文档的标签书写必须符合 DTD 的要求才能正确显示。


使用方法

DTD 定义格式:<!DOCTYPE 根元素 [元素声明]>

DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用(使用方式类似于CSS)。


内部定义打开

<?xml version="1.0" encoding="utf-8"?>

<!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>

外部定义打开
note.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE note SYSTEM "note.dtd">

<note>

<to>George</to>

<from>John</from>

<heading>Reminder</heading>

<body>Don't forget the meeting!</body>

</note>

note.dtd

<!DOCTYPE note [

<!ELEMENT note (to,from,heading,body)>

<!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)>

<!ELEMENT heading (#PCDATA)>

<!ELEMENT body (#PCDATA)>

]>


定义内容

构建模块说明
元素与 HTML 中的元素意思相同
属性与 HTML 中的属性意思相同
实体可以理解为常量,系统只预定义了五个,用户可以自己定义
PCDATA可以被解析的字符数据(parsed character data),标签、实体可以使用。
CDATA无法被解析的字符数据(character data),标签、实体都会失效。

①. 声明元素

声明格式1:<!ELEMENT 元素名称 元素类型>

声明格式2:<!ELEMENT 元素名称 (元素内容)>

声明说明
声明空元素<!ELEMENT 元素名称 EMPTY>
声明带有任何内容的元素<!ELEMENT 元素名称 ANY>
声明内容只能是#PCDATA的元素<!ELEMENT 元素名称 (#PCDATA)>
声明只出现一次的元素<!ELEMENT 元素名称 (tag)>
声明最少出现一次的元素<!ELEMENT 元素名称 (tag+)>
声明出现零次或多次的元素<!ELEMENT 元素名称 (tag*)>
声明出现零次或一次的元素<!ELEMENT 元素名称 (tag?)>
声明多选一的元素<!ELEMENT 元素名称 (tag1|tag2|tag3)>
声明混合类型的元素<!ELEMENT 元素名称 (#PCDATA|tag1|tag2)*>

②. 声明属性

声明格式:<!ATTLIST 元素名称 属性名称 属性类型 默认值>

属性类型:CDATA(字符数据)、ID(值为唯一)、枚举指定数据(v1|v2|……)、……(所有类型

默认值参数:值、#REQUIRED(必须)、#IMPLIED(可选)、#FIXED value(固定值)

声明说明实例
规定属性值为默认<!ATTLIST 元素名称 属性名称 属性类型 默认值>

实例

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

实例

      DTD:
      <!ELEMENT square EMPTY>
      <!ATTLIST contact fax CDATA #IMPLIED>
      
      合法的XML
      <contact fax="555-667788" />
      <contact />
        
规定属性值为必填<!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED>

实例

      DTD:
      <!ELEMENT square EMPTY>
      <!ATTLIST person number CDATA #REQUIRED>
      
      合法的XML
      <person number="5677" />
      
      非法的XML
      <person />
        
规定属性值为固定<!ATTLIST 元素名称 属性名称 属性类型 #FIXED "……">

实例

      DTD:
      <!ELEMENT square EMPTY>
      <ATTLIST sender company CDATA #FIXED "Microsoft">
      
      合法的XML
      <sender company="Microsoft" />
      
      非法的XML
      <sender company="W3School" />
        

③. 声明实体

声明格式:<!ENTITY 实体名称 "实体的值">


DTD:

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

XML:

<author>&writer;&copyright;</author>
显示框架
top