Created Debian package
[xmldoc.git] / xsl.dtd
1 <!ENTITY % result-elements "
2      | html
3 ">
4
5 <!ENTITY % char-instructions "
6      | xsl:apply-templates
7      | xsl:call-template
8      | xsl:apply-imports
9      | xsl:for-each
10      | xsl:value-of
11      | xsl:copy-of
12      | xsl:number
13      | xsl:choose
14      | xsl:if
15      | xsl:text
16      | xsl:copy
17      | xsl:variable
18      | xsl:message
19      | xsl:fallback
20 ">
21
22 <!ENTITY % instructions "
23      %char-instructions;
24      | xsl:processing-instruction
25      | xsl:comment
26      | xsl:element
27      | xsl:attribute
28 ">
29
30 <!ENTITY % char-template "
31      (#PCDATA
32       %char-instructions;)*
33 ">
34
35 <!ENTITY % template "
36      (#PCDATA
37       %instructions;
38       %result-elements;)*
39 ">
40 <!-- Used for the type of an attribute value that is a URI reference.-->
41 <!ENTITY % URI "CDATA">
42
43 <!-- Used for the type of an attribute value that is a pattern.-->
44 <!ENTITY % pattern "CDATA">
45
46 <!-- Used for the type of an attribute value that is an
47      attribute value template.-->
48 <!ENTITY % avt "CDATA">
49
50 <!-- Used for the type of an attribute value that is a QName; the prefix
51      gets expanded by the XSLT processor. -->
52 <!ENTITY % qname "NMTOKEN">
53
54 <!-- Like qname but a whitespace-separated list of QNames. -->
55 <!ENTITY % qnames "NMTOKENS">
56
57 <!-- Used for the type of an attribute value that is an expression.-->
58 <!ENTITY % expr "CDATA">
59
60 <!-- Used for the type of an attribute value that consists
61      of a single character.-->
62 <!ENTITY % char "CDATA">
63
64 <!-- Used for the type of an attribute value that is a priority. -->
65 <!ENTITY % priority "NMTOKEN">
66
67 <!ENTITY % space-att "xml:space (default|preserve) #IMPLIED">
68
69 <!-- This may be overridden to customize the set of elements allowed
70      at the top-level. -->
71
72 <!ENTITY % non-xsl-top-level "">
73 <!ENTITY % top-level "
74      (xsl:import*,
75      (xsl:include
76       | xsl:strip-space
77       | xsl:preserve-space
78       | xsl:output
79       | xsl:key
80       | xsl:decimal-format
81       | xsl:attribute-set
82       | xsl:variable
83       | xsl:param
84       | xsl:template
85       | xsl:namespace-alias
86       %non-xsl-top-level;)*)
87 ">
88
89 <!ENTITY % top-level-atts '
90      extension-element-prefixes CDATA #IMPLIED
91      exclude-result-prefixes CDATA #IMPLIED
92      id ID #IMPLIED
93      version NMTOKEN #REQUIRED
94      xmlns:xsl CDATA #FIXED "http://www.w3.org/1999/XSL/Transform"
95      %space-att;
96 '>
97
98 <!-- This entity is defined for use in the ATTLIST declaration
99      for result elements. -->
100
101 <!ENTITY % result-element-atts '
102      xsl:extension-element-prefixes CDATA #IMPLIED
103      xsl:exclude-result-prefixes CDATA #IMPLIED
104      xsl:use-attribute-sets %qnames; #IMPLIED
105      xsl:version NMTOKEN #IMPLIED
106 '>
107
108 <!ELEMENT xsl:stylesheet %top-level;>
109 <!ATTLIST xsl:stylesheet %top-level-atts;>
110
111 <!ELEMENT xsl:transform %top-level;>
112 <!ATTLIST xsl:transform %top-level-atts;>
113
114 <!ELEMENT xsl:import EMPTY>
115 <!ATTLIST xsl:import href %URI; #REQUIRED>
116
117 <!ELEMENT xsl:include EMPTY>
118 <!ATTLIST xsl:include href %URI; #REQUIRED>
119
120 <!ELEMENT xsl:strip-space EMPTY>
121 <!ATTLIST xsl:strip-space elements CDATA #REQUIRED>
122
123 <!ELEMENT xsl:preserve-space EMPTY>
124 <!ATTLIST xsl:preserve-space elements CDATA #REQUIRED>
125 <!ELEMENT xsl:output EMPTY>
126 <!ATTLIST xsl:output
127      method %qname; #IMPLIED
128      version NMTOKEN #IMPLIED
129      encoding CDATA #IMPLIED
130      omit-xml-declaration (yes|no) #IMPLIED
131      standalone (yes|no) #IMPLIED
132      doctype-public CDATA #IMPLIED
133      doctype-system CDATA #IMPLIED
134      cdata-section-elements %qnames; #IMPLIED
135      indent (yes|no) #IMPLIED
136      media-type CDATA #IMPLIED
137 >
138
139 <!ELEMENT xsl:key EMPTY>
140 <!ATTLIST xsl:key
141      name %qname; #REQUIRED
142      match %pattern; #REQUIRED
143      use %expr; #REQUIRED
144 >
145
146 <!ELEMENT xsl:decimal-format EMPTY>
147 <!ATTLIST xsl:decimal-format
148      name %qname; #IMPLIED
149      decimal-separator %char; "."
150      grouping-separator %char; ","
151      infinity CDATA "Infinity"
152      minus-sign %char; "-"
153      NaN CDATA "NaN"
154      percent %char; "%"
155      per-mille %char; "&#x2030;"
156      zero-digit %char; "0"
157      digit %char; "#"
158      pattern-separator %char; ";"
159 >
160 <!ELEMENT xsl:namespace-alias EMPTY>
161 <!ATTLIST xsl:namespace-alias
162      stylesheet-prefix CDATA #REQUIRED
163      result-prefix CDATA #REQUIRED
164 >
165
166 <!ELEMENT xsl:template
167      (#PCDATA
168      %instructions;
169      %result-elements;
170      | xsl:param)*
171 >
172
173 <!ATTLIST xsl:template
174      match %pattern; #IMPLIED
175      name %qname; #IMPLIED
176      priority %priority; #IMPLIED
177      mode %qname; #IMPLIED
178      %space-att;
179 >
180
181 <!ELEMENT xsl:value-of EMPTY>
182 <!ATTLIST xsl:value-of
183      select %expr; #REQUIRED
184      disable-output-escaping (yes|no) "no"
185 >
186
187 <!ELEMENT xsl:copy-of EMPTY>
188 <!ATTLIST xsl:copy-of select %expr; #REQUIRED>
189 <!ELEMENT xsl:number EMPTY>
190 <!ATTLIST xsl:number
191      level (single|multiple|any) "single"
192      count %pattern; #IMPLIED
193      from %pattern; #IMPLIED
194      value %expr; #IMPLIED
195      format %avt; '1'
196      lang %avt; #IMPLIED
197      letter-value %avt; #IMPLIED
198      grouping-separator %avt; #IMPLIED
199      grouping-size %avt; #IMPLIED
200 >
201
202 <!ELEMENT xsl:apply-templates (xsl:sort|xsl:with-param)*>
203 <!ATTLIST xsl:apply-templates
204      select %expr; "node()"
205      mode %qname; #IMPLIED
206 >
207
208 <!ELEMENT xsl:apply-imports EMPTY>
209
210 <!-- xsl:sort cannot occur after any other elements or
211      any non-whitespace character -->
212
213 <!ELEMENT xsl:for-each
214      (#PCDATA
215      %instructions;
216      %result-elements;
217      | xsl:sort)*
218               >
219 <!ATTLIST xsl:for-each
220      select %expr; #REQUIRED
221      %space-att;
222 >
223
224 <!ELEMENT xsl:sort EMPTY>
225 <!ATTLIST xsl:sort
226      select %expr; "."
227      lang %avt; #IMPLIED
228      data-type %avt; "text"
229      order %avt; "ascending"
230      case-order %avt; #IMPLIED
231 >
232
233 <!ELEMENT xsl:if %template;>
234 <!ATTLIST xsl:if
235      test %expr; #REQUIRED
236      %space-att;
237 >
238
239 <!ELEMENT xsl:choose (xsl:when+, xsl:otherwise?)>
240 <!ATTLIST xsl:choose %space-att;>
241
242 <!ELEMENT xsl:when %template;>
243 <!ATTLIST xsl:when
244      test %expr; #REQUIRED
245      %space-att;
246 >
247
248 <!ELEMENT xsl:otherwise %template;>
249 <!ATTLIST xsl:otherwise %space-att;>
250 <!ELEMENT xsl:attribute-set (xsl:attribute)*>
251 <!ATTLIST xsl:attribute-set
252      name %qname; #REQUIRED
253      use-attribute-sets %qnames; #IMPLIED
254 >
255
256 <!ELEMENT xsl:call-template (xsl:with-param)*>
257 <!ATTLIST xsl:call-template
258      name %qname; #REQUIRED
259 >
260
261 <!ELEMENT xsl:with-param %template;>
262 <!ATTLIST xsl:with-param
263      name %qname; #REQUIRED
264      select %expr; #IMPLIED
265 >
266
267 <!ELEMENT xsl:variable %template;>
268 <!ATTLIST xsl:variable 
269      name %qname; #REQUIRED
270      select %expr; #IMPLIED
271 >
272
273 <!ELEMENT xsl:param %template;>
274 <!ATTLIST xsl:param 
275      name %qname; #REQUIRED
276      select %expr; #IMPLIED
277 >
278
279 <!ELEMENT xsl:text (#PCDATA)>
280 <!ATTLIST xsl:text
281      disable-output-escaping (yes|no) "no"
282 >
283 <!ELEMENT xsl:processing-instruction %char-template;>
284 <!ATTLIST xsl:processing-instruction 
285      name %avt; #REQUIRED
286      %space-att;
287 >
288
289 <!ELEMENT xsl:element %template;>
290 <!ATTLIST xsl:element 
291      name %avt; #REQUIRED
292      namespace %avt; #IMPLIED
293      use-attribute-sets %qnames; #IMPLIED
294      %space-att;
295 >
296
297 <!ELEMENT xsl:attribute %char-template;>
298 <!ATTLIST xsl:attribute 
299      name %avt; #REQUIRED
300      namespace %avt; #IMPLIED
301      %space-att;
302 >
303
304 <!ELEMENT xsl:comment %char-template;>
305 <!ATTLIST xsl:comment %space-att;>
306
307 <!ELEMENT xsl:copy %template;>
308 <!ATTLIST xsl:copy
309      %space-att;
310      use-attribute-sets %qnames; #IMPLIED
311 >
312 <!ELEMENT xsl:message %template;>
313 <!ATTLIST xsl:message
314      %space-att;
315      terminate (yes|no) "no"
316 >
317
318 <!ELEMENT xsl:fallback %template;>
319 <!ATTLIST xsl:fallback %space-att;>
320
321 <!--   This is the included XTHML DTD   -->
322
323 <!--
324    Extensible HTML version 1.0 Strict DTD
325
326    This is the same as HTML 4.0 Strict except for
327    changes due to the differences between XML and SGML.
328
329    Namespace = http://www.w3.org/1999/xhtml
330
331    For further information, see: http://www.w3.org/TR/xhtml1
332
333    Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
334    All Rights Reserved. 
335
336    This DTD module is identified by the PUBLIC and SYSTEM identifiers:
337
338    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
339    SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
340
341    $Revision: 1.1 $
342    $Date: 2002-08-28 14:50:50 $
343
344 -->
345
346 <!--================ Character mnemonic entities =========================-->
347
348
349 <!--================== Imported Names ====================================-->
350
351 <!ENTITY % ContentType "CDATA">
352     <!-- media type, as per [RFC2045] -->
353
354 <!ENTITY % ContentTypes "CDATA">
355     <!-- comma-separated list of media types, as per [RFC2045] -->
356
357 <!ENTITY % Charset "CDATA">
358     <!-- a character encoding, as per [RFC2045] -->
359
360 <!ENTITY % Charsets "CDATA">
361     <!-- a space separated list of character encodings, as per [RFC2045] -->
362
363 <!ENTITY % LanguageCode "NMTOKEN">
364     <!-- a language code, as per [RFC1766] -->
365
366 <!ENTITY % Character "CDATA">
367     <!-- a single character from [ISO10646] -->
368
369 <!ENTITY % Number "CDATA">
370     <!-- one or more digits -->
371
372 <!ENTITY % LinkTypes "CDATA">
373     <!-- space-separated list of link types -->
374
375 <!ENTITY % MediaDesc "CDATA">
376     <!-- single or comma-separated list of media descriptors -->
377
378 <!ENTITY % URI "CDATA">
379     <!-- a Uniform Resource Identifier, see [RFC2396] -->
380
381 <!ENTITY % UriList "CDATA">
382     <!-- a space separated list of Uniform Resource Identifiers -->
383
384 <!ENTITY % Datetime "CDATA">
385     <!-- date and time information. ISO date format -->
386
387 <!ENTITY % Script "CDATA">
388     <!-- script expression -->
389
390 <!ENTITY % StyleSheet "CDATA">
391     <!-- style sheet data -->
392
393 <!ENTITY % Text "CDATA">
394     <!-- used for titles etc. -->
395
396 <!ENTITY % FrameTarget "NMTOKEN">
397     <!-- render in this frame -->
398
399 <!ENTITY % Length "CDATA">
400     <!-- nn for pixels or nn% for percentage length -->
401
402 <!ENTITY % MultiLength "CDATA">
403     <!-- pixel, percentage, or relative -->
404
405 <!ENTITY % MultiLengths "CDATA">
406     <!-- comma-separated list of MultiLength -->
407
408 <!ENTITY % Pixels "CDATA">
409     <!-- integer representing length in pixels -->
410
411 <!-- these are used for image maps -->
412
413 <!ENTITY % Shape "(rect|circle|poly|default)">
414
415 <!ENTITY % Coords "CDATA">
416     <!-- comma separated list of lengths -->
417
418 <!--=================== Generic Attributes ===============================-->
419
420 <!-- core attributes common to most elements
421   id       document-wide unique id
422   class    space separated list of classes
423   style    associated style info
424   title    advisory title/amplification
425 -->
426 <!ENTITY % coreattrs
427  "id          ID             #IMPLIED
428   class       CDATA          #IMPLIED
429   style       %StyleSheet;   #IMPLIED
430   title       %Text;         #IMPLIED"
431   >
432
433 <!-- internationalization attributes
434   lang        language code (backwards compatible)
435   xml:lang    language code (as per XML 1.0 spec)
436   dir         direction for weak/neutral text
437 -->
438 <!ENTITY % i18n
439  "lang        %LanguageCode; #IMPLIED
440   xml:lang    %LanguageCode; #IMPLIED
441   dir         (ltr|rtl)      #IMPLIED"
442   >
443
444 <!-- attributes for common UI events
445   onclick     a pointer button was clicked
446   ondblclick  a pointer button was double clicked
447   onmousedown a pointer button was pressed down
448   onmouseup   a pointer button was released
449   onmousemove a pointer was moved onto the element
450   onmouseout  a pointer was moved away from the element
451   onkeypress  a key was pressed and released
452   onkeydown   a key was pressed down
453   onkeyup     a key was released
454 -->
455 <!ENTITY % events
456  "onclick     %Script;       #IMPLIED
457   ondblclick  %Script;       #IMPLIED
458   onmousedown %Script;       #IMPLIED
459   onmouseup   %Script;       #IMPLIED
460   onmouseover %Script;       #IMPLIED
461   onmousemove %Script;       #IMPLIED
462   onmouseout  %Script;       #IMPLIED
463   onkeypress  %Script;       #IMPLIED
464   onkeydown   %Script;       #IMPLIED
465   onkeyup     %Script;       #IMPLIED"
466   >
467
468 <!-- attributes for elements that can get the focus
469   accesskey   accessibility key character
470   tabindex    position in tabbing order
471   onfocus     the element got the focus
472   onblur      the element lost the focus
473 -->
474 <!ENTITY % focus
475  "accesskey   %Character;    #IMPLIED
476   tabindex    %Number;       #IMPLIED
477   onfocus     %Script;       #IMPLIED
478   onblur      %Script;       #IMPLIED"
479   >
480
481 <!ENTITY % attrs "%coreattrs; %i18n; %events;">
482
483 <!--=================== Text Elements ====================================-->
484
485 <!ENTITY % special
486    "br | span | bdo | object | img | map">
487
488 <!ENTITY % fontstyle "tt | i | b | big | small">
489
490 <!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
491                    samp | kbd | var | cite | abbr | acronym">
492
493 <!ENTITY % inline.forms "input | select | textarea | label | button">
494
495 <!-- these can occur at block or inline level -->
496 <!ENTITY % misc "ins | del | script | noscript">
497
498 <!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
499
500 <!-- %Inline; covers inline or "text-level" elements -->
501 <!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
502
503 <!--================== Block level elements ==============================-->
504
505 <!ENTITY % heading "h1|h2|h3|h4|h5|h6">
506 <!ENTITY % lists "ul | ol | dl">
507 <!ENTITY % blocktext "pre | hr | blockquote | address">
508
509 <!ENTITY % block
510      "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
511
512 <!ENTITY % Block "(%block; | form | %misc;)*">
513
514 <!-- %Flow; mixes Block and Inline and is used for list items etc. -->
515 <!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
516
517 <!--================== Content models for exclusions =====================-->
518
519 <!-- a elements use %Inline; excluding a -->
520
521 <!ENTITY % a.content
522    "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
523
524 <!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
525
526 <!ENTITY % pre.content
527    "(#PCDATA | a | br | span | bdo | map | tt | i | b |
528       %phrase; | %inline.forms;)*">
529
530 <!-- form uses %Block; excluding form -->
531
532 <!ENTITY % form.content "(%block; | %misc;)*">
533
534 <!-- button uses %Flow; but excludes a, form and form controls -->
535
536 <!ENTITY % button.content
537    "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
538     table | %special; | %fontstyle; | %phrase; | %misc;)*">
539
540 <!--================ Document Structure ==================================-->
541
542 <!-- the namespace URI designates the document profile -->
543
544 <!ELEMENT html (head, body)>
545 <!ATTLIST html
546   %i18n;
547   xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
548   >
549
550 <!--================ Document Head =======================================-->
551
552 <!ENTITY % head.misc "(script|style|meta|link|object)*">
553
554 <!-- content model is %head.misc; combined with a single
555      title and an optional base element in any order -->
556
557 <!ELEMENT head (%head.misc;,
558      ((title, %head.misc;, (base, %head.misc;)?) |
559       (base, %head.misc;, (title, %head.misc;))))>
560
561 <!ATTLIST head
562   %i18n;
563   profile     %URI;          #IMPLIED
564   >
565
566 <!-- The title element is not considered part of the flow of text.
567        It should be displayed, for example as the page header or
568        window title. Exactly one title is required per document.
569     -->
570 <!ELEMENT title (#PCDATA)>
571 <!ATTLIST title %i18n;>
572
573 <!-- document base URI -->
574
575 <!ELEMENT base EMPTY>
576 <!ATTLIST base
577   href        %URI;          #IMPLIED
578   >
579
580 <!-- generic metainformation -->
581 <!ELEMENT meta EMPTY>
582 <!ATTLIST meta
583   %i18n;
584   http-equiv  CDATA          #IMPLIED
585   name        CDATA          #IMPLIED
586   content     CDATA          #REQUIRED
587   scheme      CDATA          #IMPLIED
588   >
589
590 <!--
591   Relationship values can be used in principle:
592
593    a) for document specific toolbars/menus when used
594       with the link element in document head e.g.
595         start, contents, previous, next, index, end, help
596    b) to link to a separate style sheet (rel="stylesheet")
597    c) to make a link to a script (rel="script")
598    d) by stylesheets to control how collections of
599       html nodes are rendered into printed documents
600    e) to make a link to a printable version of this document
601       e.g. a PostScript or PDF version (rel="alternate" media="print")
602 -->
603
604 <!ELEMENT link EMPTY>
605 <!ATTLIST link
606   %attrs;
607   charset     %Charset;      #IMPLIED
608   href        %URI;          #IMPLIED
609   hreflang    %LanguageCode; #IMPLIED
610   type        %ContentType;  #IMPLIED
611   rel         %LinkTypes;    #IMPLIED
612   rev         %LinkTypes;    #IMPLIED
613   media       %MediaDesc;    #IMPLIED
614   >
615
616 <!-- style info, which may include CDATA sections -->
617 <!ELEMENT style (#PCDATA)>
618 <!ATTLIST style
619   %i18n;
620   type        %ContentType;  #REQUIRED
621   media       %MediaDesc;    #IMPLIED
622   title       %Text;         #IMPLIED
623   xml:space   (preserve)     #FIXED 'preserve'
624   >
625
626 <!-- script statements, which may include CDATA sections -->
627 <!ELEMENT script (#PCDATA)>
628 <!ATTLIST script
629   charset     %Charset;      #IMPLIED
630   type        %ContentType;  #REQUIRED
631   src         %URI;          #IMPLIED
632   defer       (defer)        #IMPLIED
633   xml:space   (preserve)     #FIXED 'preserve'
634   >
635
636 <!-- alternate content container for non script-based rendering -->
637
638 <!ELEMENT noscript %Block;>
639 <!ATTLIST noscript
640   %attrs;
641   >
642
643 <!--=================== Document Body ====================================-->
644
645 <!ELEMENT body %Block;>
646 <!ATTLIST body
647   %attrs;
648   onload          %Script;   #IMPLIED
649   onunload        %Script;   #IMPLIED
650   >
651
652 <!ELEMENT div %Flow;>  <!-- generic language/style container -->
653 <!ATTLIST div
654   %attrs;
655   >
656
657 <!--=================== Paragraphs =======================================-->
658
659 <!ELEMENT p %Inline;>
660 <!ATTLIST p
661   %attrs;
662   >
663
664 <!--=================== Headings =========================================-->
665
666 <!--
667   There are six levels of headings from h1 (the most important)
668   to h6 (the least important).
669 -->
670
671 <!ELEMENT h1  %Inline;>
672 <!ATTLIST h1
673    %attrs;
674    >
675
676 <!ELEMENT h2 %Inline;>
677 <!ATTLIST h2
678    %attrs;
679    >
680
681 <!ELEMENT h3 %Inline;>
682 <!ATTLIST h3
683    %attrs;
684    >
685
686 <!ELEMENT h4 %Inline;>
687 <!ATTLIST h4
688    %attrs;
689    >
690
691 <!ELEMENT h5 %Inline;>
692 <!ATTLIST h5
693    %attrs;
694    >
695
696 <!ELEMENT h6 %Inline;>
697 <!ATTLIST h6
698    %attrs;
699    >
700
701 <!--=================== Lists ============================================-->
702
703 <!-- Unordered list -->
704
705 <!ELEMENT ul (li)+>
706 <!ATTLIST ul
707   %attrs;
708   >
709
710 <!-- Ordered (numbered) list -->
711
712 <!ELEMENT ol (li)+>
713 <!ATTLIST ol
714   %attrs;
715   >
716
717 <!-- list item -->
718
719 <!ELEMENT li %Flow;>
720 <!ATTLIST li
721   %attrs;
722   >
723
724 <!-- definition lists - dt for term, dd for its definition -->
725
726 <!ELEMENT dl (dt|dd)+>
727 <!ATTLIST dl
728   %attrs;
729   >
730
731 <!ELEMENT dt %Inline;>
732 <!ATTLIST dt
733   %attrs;
734   >
735
736 <!ELEMENT dd %Flow;>
737 <!ATTLIST dd
738   %attrs;
739   >
740
741 <!--=================== Address ==========================================-->
742
743 <!-- information on author -->
744
745 <!ELEMENT address %Inline;>
746 <!ATTLIST address
747   %attrs;
748   >
749
750 <!--=================== Horizontal Rule ==================================-->
751
752 <!ELEMENT hr EMPTY>
753 <!ATTLIST hr
754   %attrs;
755   >
756
757 <!--=================== Preformatted Text ================================-->
758
759 <!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
760
761 <!ELEMENT pre %pre.content;>
762 <!ATTLIST pre
763   %attrs;
764   xml:space (preserve) #FIXED 'preserve'
765   >
766
767 <!--=================== Block-like Quotes ================================-->
768
769 <!ELEMENT blockquote %Block;>
770 <!ATTLIST blockquote
771   %attrs;
772   cite        %URI;          #IMPLIED
773   >
774
775 <!--=================== Inserted/Deleted Text ============================-->
776
777 <!--
778   ins/del are allowed in block and inline content, but its
779   inappropriate to include block content within an ins element
780   occurring in inline content.
781 -->
782 <!ELEMENT ins %Flow;>
783 <!ATTLIST ins
784   %attrs;
785   cite        %URI;          #IMPLIED
786   datetime    %Datetime;     #IMPLIED
787   >
788
789 <!ELEMENT del %Flow;>
790 <!ATTLIST del
791   %attrs;
792   cite        %URI;          #IMPLIED
793   datetime    %Datetime;     #IMPLIED
794   >
795
796 <!--================== The Anchor Element ================================-->
797
798 <!-- content is %Inline; except that anchors shouldn't be nested -->
799
800 <!ELEMENT a %a.content;>
801 <!ATTLIST a
802   %attrs;
803   charset     %Charset;      #IMPLIED
804   type        %ContentType;  #IMPLIED
805   name        NMTOKEN        #IMPLIED
806   href        %URI;          #IMPLIED
807   hreflang    %LanguageCode; #IMPLIED
808   rel         %LinkTypes;    #IMPLIED
809   rev         %LinkTypes;    #IMPLIED
810   accesskey   %Character;    #IMPLIED
811   shape       %Shape;        "rect"
812   coords      %Coords;       #IMPLIED
813   tabindex    %Number;       #IMPLIED
814   onfocus     %Script;       #IMPLIED
815   onblur      %Script;       #IMPLIED
816   >
817
818 <!--===================== Inline Elements ================================-->
819
820 <!ELEMENT span %Inline;> <!-- generic language/style container -->
821 <!ATTLIST span
822   %attrs;
823   >
824
825 <!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
826 <!ATTLIST bdo
827   %coreattrs;
828   %events;
829   lang        %LanguageCode; #IMPLIED
830   xml:lang    %LanguageCode; #IMPLIED
831   dir         (ltr|rtl)      #REQUIRED
832   >
833
834 <!ELEMENT br EMPTY>   <!-- forced line break -->
835 <!ATTLIST br
836   %coreattrs;
837   >
838
839 <!ELEMENT em %Inline;>   <!-- emphasis -->
840 <!ATTLIST em %attrs;>
841
842 <!ELEMENT strong %Inline;>   <!-- strong emphasis -->
843 <!ATTLIST strong %attrs;>
844
845 <!ELEMENT dfn %Inline;>   <!-- definitional -->
846 <!ATTLIST dfn %attrs;>
847
848 <!ELEMENT code %Inline;>   <!-- program code -->
849 <!ATTLIST code %attrs;>
850
851 <!ELEMENT samp %Inline;>   <!-- sample -->
852 <!ATTLIST samp %attrs;>
853
854 <!ELEMENT kbd %Inline;>  <!-- something user would type -->
855 <!ATTLIST kbd %attrs;>
856
857 <!ELEMENT var %Inline;>   <!-- variable -->
858 <!ATTLIST var %attrs;>
859
860 <!ELEMENT cite %Inline;>   <!-- citation -->
861 <!ATTLIST cite %attrs;>
862
863 <!ELEMENT abbr %Inline;>   <!-- abbreviation -->
864 <!ATTLIST abbr %attrs;>
865
866 <!ELEMENT acronym %Inline;>   <!-- acronym -->
867 <!ATTLIST acronym %attrs;>
868
869 <!ELEMENT q %Inline;>   <!-- inlined quote -->
870 <!ATTLIST q
871   %attrs;
872   cite        %URI;          #IMPLIED
873   >
874
875 <!ELEMENT sub %Inline;> <!-- subscript -->
876 <!ATTLIST sub %attrs;>
877
878 <!ELEMENT sup %Inline;> <!-- superscript -->
879 <!ATTLIST sup %attrs;>
880
881 <!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
882 <!ATTLIST tt %attrs;>
883
884 <!ELEMENT i %Inline;>   <!-- italic font -->
885 <!ATTLIST i %attrs;>
886
887 <!ELEMENT b %Inline;>   <!-- bold font -->
888 <!ATTLIST b %attrs;>
889
890 <!ELEMENT big %Inline;>   <!-- bigger font -->
891 <!ATTLIST big %attrs;>
892
893 <!ELEMENT small %Inline;>   <!-- smaller font -->
894 <!ATTLIST small %attrs;>
895
896 <!--==================== Object ======================================-->
897 <!--
898   object is used to embed objects as part of HTML pages.
899   param elements should precede other content. Parameters
900   can also be expressed as attribute/value pairs on the
901   object element itself when brevity is desired.
902 -->
903
904 <!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
905 <!ATTLIST object
906   %attrs;
907   declare     (declare)      #IMPLIED
908   classid     %URI;          #IMPLIED
909   codebase    %URI;          #IMPLIED
910   data        %URI;          #IMPLIED
911   type        %ContentType;  #IMPLIED
912   codetype    %ContentType;  #IMPLIED
913   archive     %UriList;      #IMPLIED
914   standby     %Text;         #IMPLIED
915   height      %Length;       #IMPLIED
916   width       %Length;       #IMPLIED
917   usemap      %URI;          #IMPLIED
918   name        NMTOKEN        #IMPLIED
919   tabindex    %Number;       #IMPLIED
920   >
921
922 <!--
923   param is used to supply a named property value.
924   In XML it would seem natural to follow RDF and support an
925   abbreviated syntax where the param elements are replaced
926   by attribute value pairs on the object start tag.
927 -->
928 <!ELEMENT param EMPTY>
929 <!ATTLIST param
930   id          ID             #IMPLIED
931   name        CDATA          #IMPLIED
932   value       CDATA          #IMPLIED
933   valuetype   (data|ref|object) "data"
934   type        %ContentType;  #IMPLIED
935   >
936
937 <!--=================== Images ===========================================-->
938
939 <!--
940    To avoid accessibility problems for people who aren't
941    able to see the image, you should provide a text
942    description using the alt and longdesc attributes.
943    In addition, avoid the use of server-side image maps.
944    Note that in this DTD there is no name attribute. That
945    is only available in the transitional and frameset DTD.
946 -->
947
948 <!ELEMENT img EMPTY>
949 <!ATTLIST img
950   %attrs;
951   src         %URI;          #REQUIRED
952   alt         %Text;         #REQUIRED
953   longdesc    %URI;          #IMPLIED
954   height      %Length;       #IMPLIED
955   width       %Length;       #IMPLIED
956   usemap      %URI;          #IMPLIED
957   ismap       (ismap)        #IMPLIED
958   >
959
960 <!-- usemap points to a map element which may be in this document
961   or an external document, although the latter is not widely supported -->
962
963 <!--================== Client-side image maps ============================-->
964
965 <!-- These can be placed in the same document or grouped in a
966      separate document although this isn't yet widely supported -->
967
968 <!ELEMENT map ((%block; | form | %misc;)+ | area+)>
969 <!ATTLIST map
970   %i18n;
971   %events;
972   id          ID             #REQUIRED
973   class       CDATA          #IMPLIED
974   style       %StyleSheet;   #IMPLIED
975   title       %Text;         #IMPLIED
976   name        NMTOKEN        #IMPLIED
977   >
978
979 <!ELEMENT area EMPTY>
980 <!ATTLIST area
981   %attrs;
982   shape       %Shape;        "rect"
983   coords      %Coords;       #IMPLIED
984   href        %URI;          #IMPLIED
985   nohref      (nohref)       #IMPLIED
986   alt         %Text;         #REQUIRED
987   tabindex    %Number;       #IMPLIED
988   accesskey   %Character;    #IMPLIED
989   onfocus     %Script;       #IMPLIED
990   onblur      %Script;       #IMPLIED
991   >
992
993 <!--================ Forms ===============================================-->
994 <!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
995
996 <!ATTLIST form
997   %attrs;
998   action      %URI;          #REQUIRED
999   method      (get|post)     "get"
1000   enctype     %ContentType;  "application/x-www-form-urlencoded"
1001   onsubmit    %Script;       #IMPLIED
1002   onreset     %Script;       #IMPLIED
1003   accept      %ContentTypes; #IMPLIED
1004   accept-charset %Charsets;  #IMPLIED
1005   >
1006
1007 <!--
1008   Each label must not contain more than ONE field
1009   Label elements shouldn't be nested.
1010 -->
1011 <!ELEMENT label %Inline;>
1012 <!ATTLIST label
1013   %attrs;
1014   for         IDREF          #IMPLIED
1015   accesskey   %Character;    #IMPLIED
1016   onfocus     %Script;       #IMPLIED
1017   onblur      %Script;       #IMPLIED
1018   >
1019
1020 <!ENTITY % InputType
1021   "(text | password | checkbox |
1022     radio | submit | reset |
1023     file | hidden | image | button)"
1024    >
1025
1026 <!-- the name attribute is required for all but submit & reset -->
1027
1028 <!ELEMENT input EMPTY>     <!-- form control -->
1029 <!ATTLIST input
1030   %attrs;
1031   type        %InputType;    "text"
1032   name        CDATA          #IMPLIED
1033   value       CDATA          #IMPLIED
1034   checked     (checked)      #IMPLIED
1035   disabled    (disabled)     #IMPLIED
1036   readonly    (readonly)     #IMPLIED
1037   size        CDATA          #IMPLIED
1038   maxlength   %Number;       #IMPLIED
1039   src         %URI;          #IMPLIED
1040   alt         CDATA          #IMPLIED
1041   usemap      %URI;          #IMPLIED
1042   tabindex    %Number;       #IMPLIED
1043   accesskey   %Character;    #IMPLIED
1044   onfocus     %Script;       #IMPLIED
1045   onblur      %Script;       #IMPLIED
1046   onselect    %Script;       #IMPLIED
1047   onchange    %Script;       #IMPLIED
1048   accept      %ContentTypes; #IMPLIED
1049   >
1050
1051 <!ELEMENT select (optgroup|option)+>  <!-- option selector -->
1052 <!ATTLIST select
1053   %attrs;
1054   name        CDATA          #IMPLIED
1055   size        %Number;       #IMPLIED
1056   multiple    (multiple)     #IMPLIED
1057   disabled    (disabled)     #IMPLIED
1058   tabindex    %Number;       #IMPLIED
1059   onfocus     %Script;       #IMPLIED
1060   onblur      %Script;       #IMPLIED
1061   onchange    %Script;       #IMPLIED
1062   >
1063
1064 <!ELEMENT optgroup (option)+>   <!-- option group -->
1065 <!ATTLIST optgroup
1066   %attrs;
1067   disabled    (disabled)     #IMPLIED
1068   label       %Text;         #REQUIRED
1069   >
1070
1071 <!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
1072 <!ATTLIST option
1073   %attrs;
1074   selected    (selected)     #IMPLIED
1075   disabled    (disabled)     #IMPLIED
1076   label       %Text;         #IMPLIED
1077   value       CDATA          #IMPLIED
1078   >
1079
1080 <!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
1081 <!ATTLIST textarea
1082   %attrs;
1083   name        CDATA          #IMPLIED
1084   rows        %Number;       #REQUIRED
1085   cols        %Number;       #REQUIRED
1086   disabled    (disabled)     #IMPLIED
1087   readonly    (readonly)     #IMPLIED
1088   tabindex    %Number;       #IMPLIED
1089   accesskey   %Character;    #IMPLIED
1090   onfocus     %Script;       #IMPLIED
1091   onblur      %Script;       #IMPLIED
1092   onselect    %Script;       #IMPLIED
1093   onchange    %Script;       #IMPLIED
1094   >
1095
1096 <!--
1097   The fieldset element is used to group form fields.
1098   Only one legend element should occur in the content
1099   and if present should only be preceded by whitespace.
1100 -->
1101 <!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
1102 <!ATTLIST fieldset
1103   %attrs;
1104   >
1105
1106 <!ELEMENT legend %Inline;>     <!-- fieldset label -->
1107 <!ATTLIST legend
1108   %attrs;
1109   accesskey   %Character;    #IMPLIED
1110   >
1111
1112 <!--
1113  Content is %Flow; excluding a, form and form controls
1114 --> 
1115 <!ELEMENT button %button.content;>  <!-- push button -->
1116 <!ATTLIST button
1117   %attrs;
1118   name        CDATA          #IMPLIED
1119   value       CDATA          #IMPLIED
1120   type        (button|submit|reset) "submit"
1121   disabled    (disabled)     #IMPLIED
1122   tabindex    %Number;       #IMPLIED
1123   accesskey   %Character;    #IMPLIED
1124   onfocus     %Script;       #IMPLIED
1125   onblur      %Script;       #IMPLIED
1126   >
1127
1128 <!--======================= Tables =======================================-->
1129
1130 <!-- Derived from IETF HTML table standard, see [RFC1942] -->
1131
1132 <!--
1133  The border attribute sets the thickness of the frame around the
1134  table. The default units are screen pixels.
1135
1136  The frame attribute specifies which parts of the frame around
1137  the table should be rendered. The values are not the same as
1138  CALS to avoid a name clash with the valign attribute.
1139 -->
1140 <!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
1141
1142 <!--
1143  The rules attribute defines which rules to draw between cells:
1144
1145  If rules is absent then assume:
1146      "none" if border is absent or border="0" otherwise "all"
1147 -->
1148
1149 <!ENTITY % TRules "(none | groups | rows | cols | all)">
1150   
1151 <!-- horizontal placement of table relative to document -->
1152 <!ENTITY % TAlign "(left|center|right)">
1153
1154 <!-- horizontal alignment attributes for cell contents
1155
1156   char        alignment char, e.g. char=':'
1157   charoff     offset for alignment char
1158 -->
1159 <!ENTITY % cellhalign
1160   "align      (left|center|right|justify|char) #IMPLIED
1161    char       %Character;    #IMPLIED
1162    charoff    %Length;       #IMPLIED"
1163   >
1164
1165 <!-- vertical alignment attributes for cell contents -->
1166 <!ENTITY % cellvalign
1167   "valign     (top|middle|bottom|baseline) #IMPLIED"
1168   >
1169
1170 <!ELEMENT table
1171      (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
1172 <!ELEMENT caption  %Inline;>
1173 <!ELEMENT thead    (tr)+>
1174 <!ELEMENT tfoot    (tr)+>
1175 <!ELEMENT tbody    (tr)+>
1176 <!ELEMENT colgroup (col)*>
1177 <!ELEMENT col      EMPTY>
1178 <!ELEMENT tr       (th|td)+>
1179 <!ELEMENT th       %Flow;>
1180 <!ELEMENT td       %Flow;>
1181
1182 <!ATTLIST table
1183   %attrs;
1184   summary     %Text;         #IMPLIED
1185   width       %Length;       #IMPLIED
1186   border      %Pixels;       #IMPLIED
1187   frame       %TFrame;       #IMPLIED
1188   rules       %TRules;       #IMPLIED
1189   cellspacing %Length;       #IMPLIED
1190   cellpadding %Length;       #IMPLIED
1191   >
1192
1193 <!ENTITY % CAlign "(top|bottom|left|right)">
1194
1195 <!ATTLIST caption
1196   %attrs;
1197   >
1198
1199 <!--
1200 colgroup groups a set of col elements. It allows you to group
1201 several semantically related columns together.
1202 -->
1203 <!ATTLIST colgroup
1204   %attrs;
1205   span        %Number;       "1"
1206   width       %MultiLength;  #IMPLIED
1207   %cellhalign;
1208   %cellvalign;
1209   >
1210
1211 <!--
1212  col elements define the alignment properties for cells in
1213  one or more columns.
1214
1215  The width attribute specifies the width of the columns, e.g.
1216
1217      width=64        width in screen pixels
1218      width=0.5*      relative width of 0.5
1219
1220  The span attribute causes the attributes of one
1221  col element to apply to more than one column.
1222 -->
1223 <!ATTLIST col
1224   %attrs;
1225   span        %Number;       "1"
1226   width       %MultiLength;  #IMPLIED
1227   %cellhalign;
1228   %cellvalign;
1229   >
1230
1231 <!--
1232     Use thead to duplicate headers when breaking table
1233     across page boundaries, or for static headers when
1234     tbody sections are rendered in scrolling panel.
1235
1236     Use tfoot to duplicate footers when breaking table
1237     across page boundaries, or for static footers when
1238     tbody sections are rendered in scrolling panel.
1239
1240     Use multiple tbody sections when rules are needed
1241     between groups of table rows.
1242 -->
1243 <!ATTLIST thead
1244   %attrs;
1245   %cellhalign;
1246   %cellvalign;
1247   >
1248
1249 <!ATTLIST tfoot
1250   %attrs;
1251   %cellhalign;
1252   %cellvalign;
1253   >
1254
1255 <!ATTLIST tbody
1256   %attrs;
1257   %cellhalign;
1258   %cellvalign;
1259   >
1260
1261 <!ATTLIST tr
1262   %attrs;
1263   %cellhalign;
1264   %cellvalign;
1265   >
1266
1267
1268 <!-- Scope is simpler than headers attribute for common tables -->
1269 <!ENTITY % Scope "(row|col|rowgroup|colgroup)">
1270
1271 <!-- th is for headers, td for data and for cells acting as both -->
1272
1273 <!ATTLIST th
1274   %attrs;
1275   abbr        %Text;         #IMPLIED
1276   axis        CDATA          #IMPLIED
1277   headers     IDREFS         #IMPLIED
1278   scope       %Scope;        #IMPLIED
1279   rowspan     %Number;       "1"
1280   colspan     %Number;       "1"
1281   %cellhalign;
1282   %cellvalign;
1283   >
1284
1285 <!ATTLIST td
1286   %attrs;
1287   abbr        %Text;         #IMPLIED
1288   axis        CDATA          #IMPLIED
1289   headers     IDREFS         #IMPLIED
1290   scope       %Scope;        #IMPLIED
1291   rowspan     %Number;       "1"
1292   colspan     %Number;       "1"
1293   %cellhalign;
1294   %cellvalign;
1295   >
1296