DTD-总结
?
DTD(文档类型定义)
? ? ? ? 每一个 XML 文件均可携带一个有关其自身格式的描述。
? ? ? ? 可一致地使用某个标准的 DTD 来交换数据。
? ? ? ? struts.xml,hibernate.xml,ibatis.xml等apache组织下的用DTD描述限制xml文件
文档构建模块
? ? ? ? 所有的 XML,HTML 文档均由以下简单的构建模块构成:
? ? ? ? ? ? ? ? 元素?
? ? ? ? ? ? ? ? 属性?
? ? ? ? ? ? ? ? 实体 :专业字符
? ? ? ? ? ? ? ? PCDATA :被解析的字符数据(parsed character data)。
? ? ? ? ? ? ? ? CDATA ? ? ? ? :不被解析的字符数据(character data)。像文本值一样,不会被解析<![CDATA["..."]]>。
?
DTD - 元素
? ? ? ? 声明元素的语法:
? ? ? ? ? ? ? ? <!ELEMENT 元素名称 类别> ? ? ? ?或 ? ? ? ?<!ELEMENT 元素名称 (元素内容)>
? ? ? ? <!ELEMENT note (to,from,heading,body)> ? ? ? ?//带有子元素(序列)的元素<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
? ? ? ? <!ELEMENT to ? ? ?(#PCDATA)> ? ? ? ?//只有 PCDATA 的元素
? ? ? ? <!ELEMENT from ? ?(#PCDATA)>
? ? ? ? <!ELEMENT heading (#PCDATA)>
? ? ? ? <!ELEMENT body ? ?(#PCDATA)> ? ? ? ? ? ? ? ?
?
DTD - 属性
? ? ? ? 声明属性使用下列语法:
? ? ? ? ? ? ? ? <!ATTLIST 元素名称 属性名称 属性类型 默认值> ? ? ? ?
? ? ? ? DTD:
? ? ? ? ? ? ? ? <!ELEMENT square EMPTY>
? ? ? ? ? ? ? ? <!ATTLIST square width CDATA "0">
? ? ? ? 合法的 XML:
? ? ? ? ? ? ? ? <square width="100" />
? ? ? ? ? ? ? ? //"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。
?
DTD - 实体---(类似静态变量,可以直接用的固定值)
? ? ? ? 声明实体的语法:
? ? ? ? ? ? ? ? <!ENTITY 实体名称 "实体的值">
? ? ? ? DTD :
? ? ? ? ? ? ? ? <!ENTITY writer "Bill Gates">
? ? ? ? ? ? ? ? <!ENTITY copyright "Copyright W3School.com.cn">
? ? ? ? XML 例子:
? ? ? ? <author>&writer;©right;</author>
? ? ? ? 注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。
?
?
DTD例子:struts2的http://struts.apache.org/dtds/struts-2.0.dtd
? ? ? ? <!ELEMENT struts (package|include|bean|constant)*> ? ? ? ?//声明可以出现*次子元素的元素
? ? ? ? <!ELEMENT bean (#PCDATA)> ? ? ? ?//声明只有 PCDATA 的元素
? ? ? ? <!ATTLIST bean
? ? ? ? ? ? type CDATA #IMPLIED ? ? ? ?//CDATA 值为字符数据 (character data) ? ? ? ? #IMPLIED可选的
? ? ? ? ? ? name CDATA #IMPLIED
? ? ? ? ? ? class CDATA #REQUIRED
? ? ? ? ? ? scope CDATA #IMPLIED
? ? ? ? ? ? static CDATA #IMPLIED
? ? ? ? ? ? optional CDATA #IMPLIED
? ? ? ? >
?
DOCTYPE 声明
? ? ? ? 内部的 DOCTYPE 声明
? ? ? ? ? ? ? ? <!DOCTYPE 根元素 [元素声明]>
? ? ? ? XML例子:
? ? ? ? ? ? ? ? <?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>
?
? ? ? ? 外部文档声明
? ? ? ? ? ? ? ? <!DOCTYPE 根元素 SYSTEM "文件名"> ? ? ? ?//SYSTEM ? ? ? ?PUBLIC
? ? ? ? XML例子:
? ? ? ? ? ? ? ? <?xml version="1.0"?>
? ? ? ? ? ? ? ? <!DOCTYPE note SYSTEM "note.dtd"> ? ? ? ?
? ? ? ? ? ? ? ? <note>
? ? ? ? ? ? ? ? ? ? ? ? <to>George</to>
? ? ? ? ? ? ? ? ? ? ? ? <from>John</from>
? ? ? ? ? ? ? ? ? ? ? ? <heading>Reminder</heading>
? ? ? ? ? ? ? ? ? ? ? ? <body>Don't forget the meeting!</body>
? ? ? ? ? ? ? ? </note>?
? ? ? ? <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">