定义entites 和 notation
<!ENTITY entity_name "entity_content">
<!ELEMENT contact (#PCDATA)>
<!ENTITY irv "Trving Archibite (415) 555-3278">
<contact>&irv;</contrct>
Internal parameter <!--变量用于dtd文件内-->
<!ENTITY % pc "(#PCDATA)">
<!ELEMENT size %pc;>
Internal general <!--变量用于xml文件内-->
<!ENTITY wm "wire man">
External parameter <!--变量用于dtd文件内-->
<!ENTITY % purp SYSTEM "purp.dtd">
External general <!--变量用于xml文件内-->
<!ENTITY wm SYSTEM "wm.txt">
External general例子
//xml file:
- <order>
&shirts;
<mugs>90</mugs>
</order>
//dtd file:
<!ELEMENT order (shirt_list?, mugs?)>
<!ELEMENT shirt_list (shirt*)>
<!ELEMENT shirt (size, color)>
<!ATTLIST shirt product_code ID #REQUIRED>
<!ELEMENT size (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT mugs (#PCDATA)>
<!ENTITY shirts SYSTEM "entity3-7.txt">
//entity3-7.txt file:
<shirt_list>
<shirt product_code="sh_2398">
<size>XXL</size>
<color>purple</color>
</shirt>
<shirt product_code="sh_2402">
<size>XXL</size>
<color>purple</color>
</shirt>
</shirt_list>
External parameter例子
<!ELEMENT order (shirt_list?, mugs?, image*)>
<!ELEMENT shirt_list (shirt*)>
<!ELEMENT shirt (size, color)>
<!ATTLIST shirt product_code ID #REQUIRED>
<!ELEMENT size (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT mugs (#PCDATA)>
<!ENTITY % img SYSTEM "example3-8_2.dtd">
%img;
NOTATION类型
NOTATION类型允许属性值为一个Dtd中声明的符号,这个类型对于使用非XML格式的数据非常有用。
现实世界中存在着很多无法或不易用XML格式组织的数据,例如图象、声音、影象等等。对于这些数据,XML应用程序常常并不提供直接的应用支持。通过为它们设定 NOTATION类型的属性,可以向应用程序指定一个外部的处理程序。例如,当你想要为一个给定的文件类型指定一个演示设备时,可以用NOTATION类型的属性作为触发。
要使用NOTATION类型作为属性的类型,首先要在Dtd中为可选用的记号作出定义。定义的方式有两种,一种是使用MIME类型,形式是:
<!NOTATION 记号名 SYSTEM "MIME类型">
再有一种是使用一个URL路径,指定一个处理程序的路径。
<!NOTATION 记号名 SYSTEM "URL路径名">
在下面这个例子中,为"电影"元素指定了两种可选设备:一种是movPlayer.exe,用来播映.mov文件,另一种则用来绘制GIF图象。
<?xml version = "1.0"
encoding="Gb2312"
standalone = "yes"?>
<!DOCTYPE 文件[
<!ELEMENT 文件 ANY>
<!ELEMENT 电影 EMPTY>
<!ATTLIST 电影 演示设备 NOTATION ( mp | gif ) #REQUIRED>
<!NOTATION mp SYSTEM "movPlayer.exe">
<!NOTATION gif SYSTEM "Image/gif">
]>
<文件>
<电影 演示设备 = "mp"/>
</文件>
|