[疯狂xml讲义]对比xhtml1.0 DTD的笔记

题外话:-):尽管都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 -->  
原文地址:https://www.cnblogs.com/xcf007/p/2783909.html