题外话:-):尽管都Schema了,了解下DTD还是有好处的.就好比拿asp的站,得至少对asp使用有个大体了解吧
做个笔记:
1.DTD注释同xml:
1 <!-- 2 Extensible HTML version 1.0 Transitional DTD 3 4 This is the same as HTML 4 Transitional except for 5 changes due to the differences between XML and SGML. 6 7 Namespace = http://www.w3.org/1999/xhtml 8 9 For further information, see: http://www.w3.org/TR/xhtml1 10 11 Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio), 12 All Rights Reserved. 13 14 This DTD module is identified by the PUBLIC and SYSTEM identifiers: 15 16 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 17 SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 18 19 $Revision: 1.2 $ 20 $Date: 2002/08/01 18:37:55 $ 21 22 -->
3.参数实体定义
1 <!ENTITY % Script "CDATA">
1 <!-- a color using sRGB: #RRGGBB as Hex values --> 2 <!ENTITY % Color "CDATA">
1 <!-- used for object, applet, img, input and iframe --> 2 <!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
1 <!ENTITY % StyleSheet "CDATA"> 2 <!-- style sheet data -->
1 <!ENTITY % coreattrs 2 "id ID #IMPLIED 3 class CDATA #IMPLIED 4 style %StyleSheet; #IMPLIED 5 title %Text; #IMPLIED" 6 >
1 <!ENTITY % i18n 2 "lang %LanguageCode; #IMPLIED 3 xml:lang %LanguageCode; #IMPLIED 4 dir (ltr|rtl) #IMPLIED" 5 >
1 <!ENTITY % events 2 "onclick %Script; #IMPLIED 3 ondblclick %Script; #IMPLIED 4 onmousedown %Script; #IMPLIED 5 onmouseup %Script; #IMPLIED 6 onmouseover %Script; #IMPLIED 7 onmousemove %Script; #IMPLIED 8 onmouseout %Script; #IMPLIED 9 onkeypress %Script; #IMPLIED 10 onkeydown %Script; #IMPLIED 11 onkeyup %Script; #IMPLIED" 12 >
使用:
1 <!ATTLIST title 2 %i18n; 3 id ID #IMPLIED 4 >
1 <!ELEMENT div %Flow;> <!-- generic language/style container --> 2 <!ATTLIST div 3 %attrs; 4 %TextAlign; 5 >
其实就是类似宏替换。
1 <!ENTITY % fontstyle.extra "big | small | font | basefont"> 2 3 <!ENTITY % fontstyle.basic "tt | i | b | u 4 | s | strike "> 5 6 <!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
fontstyle.extra这种命名管理方式不错,嘻嘻
4.属性定义
实体:
1 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
1 <!ELEMENT dd %Flow;> 2 <!ATTLIST dd 3 %attrs; 4 >
ATTLIST,所以一个声明中可以定义多个属性:
<!ATTLIST User
Id ID #REQUIRED
Name NMTOKEN #REQUIRED
>
2.元素的定义
1 <!ELEMENT html (head, body)>
1 <!ELEMENT title (#PCDATA)>
1 <!ELEMENT base EMPTY>
1 <!ELEMENT ul (li)+>
1 <!-- %Inline; covers inline or "text-level" elements --> 2 <!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*"> 3 <!ELEMENT u %Inline;> <!-- underline -->