【总结篇】DTD总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun8112133/article/details/89173065

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/89173065








DTD(文档类型定义) 的作用是定义 XML文档 的合法性。是 XML文档 的一种约束。
DTD 可以在 XML文档 内部,也可在外部引用。
通过 DTD,每一个 XML 文件均可携带一个有关其自身格式的描述。
独立的团体可一致地使用某个标准的 DTD 来交换数据。
DOCTYPE 在 XML文档 中只能有一个。

英文表示:
ELEMENT:元素(element)
ATTLIST:属性(attlist)
ENTITY:实体(entity)



一、内部的DTD

包含在 XML 源文件中。

格式:

<!DOCTYPE 根元素 [element声明]>

例子:

<!DOCTYPE note [
    <!ELEMENT note (to,from)>
    <!ELEMENT to (#PCDATA)>
    <!ELEMENT from (#PCDATA)>
]>
<note>
    <to>Tove</to>
    <from>Jani</from>
</note>

解释:
!DOCTYPE note: 定义此文档是 note类型 的文档。
!ELEMENT note: 定义 note元素 里有两个元素(且保持顺序):“to、from”。
!ELEMENT to: 定义 to 元素为 “#PCDATA” 类型。
!ELEMENT from: 定义 from 元素为 “#PCDATA” 类型。
#PCDATA: parser character data 被解析的文本数据。



二、外部的DTD

格式1:

<!DOCTYPE 根元素 SYSTEM "fileName">

SYSTEM: 本地系统
fileName: 外部DTD的文件路径(相对于当前 xml文档 位置)

格式2:

<!DOCTYPE 根元素 PUBLIC "DTD名称" "fileName">

PUBLIC: 网络系统
fileName: 外部DTD的文件路径(相对于当前 xml文档 位置)

注: 外部的DTD可以包含 DTD元素 和 DTD属性,不能包含 DTD实体。在浏览器浏览时 外部DTD文件 中的 DTD属性 不会执行,因为浏览器只会解析 xml文件,不能解析 外部的DTD文件。

note.dtd 的内容:

<!ELEMENT note (to,from)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ATTLIST age
	realAge CDATA #FIXED "18"
>
<!ATTLIST address
	schoolAddress CDATA "江苏"
>


三、DTD元素(ELEMENT)

格式:

<!ELEMENT 元素名 元素类型/子元素>

元素类型/子元素:
1、(子元素1+, 子元素2…)
  +: 1次及多次
  ?: 0次或1次
  *: 0次及多次
  ,: 按照先后顺序出现…
  |: 或
2、EMPTY: 空类型,该元素内不允许出现任何子元素,或文本(包括空白)。
3、ANY: 任何类型,该元素内允许出现任意的子元素或文本(包括空白),没有任何限定。
4、(#PCDATA): 该元素中可以出现任意字符串,但是不能包括子元素(叶子)。

例子:

<!ELEMENT class (student+)>
<!ELEMENT student (name, age, address?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT age EMPTY>

注意:

<!ELEMENT employee (#PCDATA | name)*>: 混合内容必须被定义零个或多个。
<!ELEMENT ... (#PCDATA)>: 必须写,表示这是叶子。



四、DTD属性(ATTLIST)

格式:

<!ATTLIST 元素名
	属性名1  值类型  属性特点 
	属性名2  值类型  属性特点 
>

值类型:
CDATA: 任意字符
ID: 值必须唯一,必须满足 XML 命名规范
IDREFS/IDREF: 值必须是类型为 ID 的值
IDREFS: 多个,用空格隔开
枚举(男|女)

属性特点:
#REQUIRED:该属性必须出现
#IMPLIED:可以出现也可以不出现
#FIXED "值":可以出现也可以不出现,如果出现,那么值必须是指定的值。
"值":可以出现也可以不出现,如果不出现,那么采用默认值。

例子:

<!ATTLIST student 
    sid ID #REQUIRED
    refId IDREFS #REQUIRED
    gender (男|女) #IMPLIED
>
<!ATTLIST age
	realAge CDATA #FIXED "18"
>
<!ATTLIST address
	schoolAddress CDATA "江苏"
>


五、DTD实体(ENTITY)

格式:

<!DOCTYPE 根元素名称[
	<!ENTITY 实体名 实体内容>
]>

例子:

<!DOCTYPE root[
    <!ENTITY aa "这是什么">
    <!ENTITY bb "这是bb">
]>
<root>
    ...&aa....
    ......&bb.....
</root>		



猜你喜欢

转载自blog.csdn.net/sun8112133/article/details/89173065