1 <?xml version="1.0" encoding="UTF-8"?>
5 xmlns="http://www.w3.org/1999/xhtml"
6 targetNamespace="http://www.w3.org/1999/xhtml"
7 xmlns:xs="http://www.w3.org/2001/XMLSchema"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns:ops="http://www.idpf.org/2007/ops"
10 xmlns:xml="http://www.w3.org/XML/1998/namespace"
11 elementFormDefault="qualified">
15 Open Publication Structure (OPS) 2.0.1 v1.0 in XML Schema
19 <xs:import namespace="http://www.w3.org/XML/1998/namespace"
20 schemaLocation="xml.xsd"/>
22 <xs:import namespace="http://www.idpf.org/2007/ops"
23 schemaLocation="ops_switch.xsd"/>
25 <xs:import namespace="http://www.w3.org/2000/svg"
26 schemaLocation="svg11.xsd"/>
30 ================ Character mnemonic entities =========================
32 XHTML entity sets are identified by the PUBLIC and SYSTEM identifiers:
34 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
35 SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"
37 PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
38 SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
40 PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
41 SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"
47 ================== Imported Names ====================================
51 <xs:simpleType name="ContentType">
54 media type, as per [RFC2045]
57 <xs:restriction base="xs:string"/>
60 <xs:simpleType name="ContentTypes">
63 comma-separated list of media types, as per [RFC2045]
66 <xs:restriction base="xs:string"/>
69 <xs:simpleType name="Charset">
72 a character encoding, as per [RFC2045]
75 <xs:restriction base="xs:string"/>
78 <xs:simpleType name="Charsets">
81 a space separated list of character encodings, as per [RFC2045]
84 <xs:restriction base="xs:string"/>
87 <xs:simpleType name="LanguageCode">
90 a language code, as per [RFC3066]
93 <xs:restriction base="xs:language"/>
96 <xs:simpleType name="Character">
99 a single character, as per section 2.2 of [XML]
102 <xs:restriction base="xs:string">
103 <xs:length value="1" fixed="true"/>
107 <xs:simpleType name="Number">
113 <xs:restriction base="xs:nonNegativeInteger">
114 <xs:pattern value="[0-9]+"/>
118 <xs:simpleType name="tabindexNumber">
121 tabindex attribute specifies the position of the current element
122 in the tabbing order for the current document. This value must be
123 a number between 0 and 32767. User agents should ignore leading zeros.
126 <xs:restriction base="Number">
127 <xs:minInclusive value="0"/>
128 <xs:maxInclusive value="32767"/>
132 <xs:simpleType name="LinkTypes">
135 space-separated list of link types
138 <xs:restriction base="xs:NMTOKENS"/>
141 <xs:simpleType name="MediaDesc">
144 single or comma-separated list of media descriptors
147 <xs:restriction base="xs:string">
148 <xs:pattern value="[^,]+(,\s*[^,]+)*"/>
152 <xs:simpleType name="URI">
155 a Uniform Resource Identifier, see [RFC2396]
158 <xs:restriction base="xs:anyURI"/>
161 <xs:simpleType name="UriList">
164 a space separated list of Uniform Resource Identifiers
167 <xs:restriction base="xs:string"/>
170 <xs:simpleType name="Datetime">
173 date and time information. ISO date format
176 <xs:restriction base="xs:dateTime"/>
179 <xs:simpleType name="Script">
185 <xs:restriction base="xs:string"/>
188 <xs:simpleType name="StyleSheet">
194 <xs:restriction base="xs:string"/>
197 <xs:simpleType name="Text">
203 <xs:restriction base="xs:string"/>
206 <xs:simpleType name="Length">
209 nn for pixels or nn% for percentage length
212 <xs:restriction base="xs:string">
213 <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)"/>
217 <xs:simpleType name="MultiLength">
220 pixel, percentage, or relative
223 <xs:restriction base="xs:string">
224 <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*"/>
228 <xs:simpleType name="Pixels">
231 integer representing length in pixels
234 <xs:restriction base="xs:nonNegativeInteger"/>
239 these are used for image maps
243 <xs:simpleType name="Shape">
244 <xs:restriction base="xs:token">
245 <xs:enumeration value="rect"/>
246 <xs:enumeration value="circle"/>
247 <xs:enumeration value="poly"/>
248 <xs:enumeration value="default"/>
252 <xs:simpleType name="Coords">
255 comma separated list of lengths
258 <xs:restriction base="xs:string">
260 value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*"/>
266 =================== Generic Attributes ===============================
270 <xs:attributeGroup name="coreattrs">
273 core attributes common to most elements
274 id document-wide unique id
275 class space separated list of classes
276 style associated style info
277 title advisory title/amplification
280 <xs:attribute name="id" type="xs:ID"/>
281 <xs:attribute name="class" type="xs:NMTOKENS"/>
282 <xs:attribute name="style" type="StyleSheet"/>
283 <xs:attribute name="title" type="Text"/>
286 <xs:attributeGroup name="i18n">
289 internationalization attributes
290 xml:lang language code (as per XML 1.0 spec)
291 dir direction for weak/neutral text
294 <xs:attribute ref="xml:lang"/>
295 <xs:attribute name="dir">
297 <xs:restriction base="xs:token">
298 <xs:enumeration value="ltr"/>
299 <xs:enumeration value="rtl"/>
305 <xs:attributeGroup name="events">
308 attributes for common UI events
309 onclick a pointer button was clicked
310 ondblclick a pointer button was double clicked
311 onmousedown a pointer button was pressed down
312 onmouseup a pointer button was released
313 onmousemove a pointer was moved onto the element
314 onmouseout a pointer was moved away from the element
315 onkeypress a key was pressed and released
316 onkeydown a key was pressed down
317 onkeyup a key was released
320 <xs:attribute name="onclick" type="Script"/>
321 <xs:attribute name="ondblclick" type="Script"/>
322 <xs:attribute name="onmousedown" type="Script"/>
323 <xs:attribute name="onmouseup" type="Script"/>
324 <xs:attribute name="onmouseover" type="Script"/>
325 <xs:attribute name="onmousemove" type="Script"/>
326 <xs:attribute name="onmouseout" type="Script"/>
327 <xs:attribute name="onkeypress" type="Script"/>
328 <xs:attribute name="onkeydown" type="Script"/>
329 <xs:attribute name="onkeyup" type="Script"/>
332 <xs:attributeGroup name="focus">
335 attributes for elements that can get the focus
336 accesskey accessibility key character
337 tabindex position in tabbing order
338 onfocus the element got the focus
339 onblur the element lost the focus
342 <xs:attribute name="accesskey" type="Character"/>
343 <xs:attribute name="tabindex" type="tabindexNumber"/>
344 <xs:attribute name="onfocus" type="Script"/>
345 <xs:attribute name="onblur" type="Script"/>
348 <xs:attributeGroup name="attrs">
349 <xs:attributeGroup ref="coreattrs"/>
350 <xs:attributeGroup ref="i18n"/>
351 <xs:attributeGroup ref="events"/>
356 =================== Text Elements ====================================
360 <xs:group name="special.pre">
362 <xs:element ref="br"/>
363 <xs:element ref="span"/>
364 <xs:element ref="bdo"/>
365 <xs:element ref="map"/>
369 <xs:group name="special">
371 <xs:group ref="special.pre"/>
372 <xs:element ref="object"/>
373 <xs:element ref="img"/>
374 <xs:element ref="svg:svg"/>
378 <xs:group name="fontstyle">
380 <xs:element ref="tt"/>
381 <xs:element ref="i"/>
382 <xs:element ref="b"/>
383 <xs:element ref="big"/>
384 <xs:element ref="small"/>
388 <xs:group name="phrase">
390 <xs:element ref="em"/>
391 <xs:element ref="strong"/>
392 <xs:element ref="dfn"/>
393 <xs:element ref="code"/>
394 <xs:element ref="q"/>
395 <xs:element ref="samp"/>
396 <xs:element ref="kbd"/>
397 <xs:element ref="var"/>
398 <xs:element ref="cite"/>
399 <xs:element ref="abbr"/>
400 <xs:element ref="acronym"/>
401 <xs:element ref="sub"/>
402 <xs:element ref="sup"/>
406 <xs:group name="inline.forms">
408 <xs:element ref="input"/>
409 <xs:element ref="select"/>
410 <xs:element ref="textarea"/>
411 <xs:element ref="label"/>
412 <xs:element ref="button"/>
416 <xs:group name="misc.inline">
418 <xs:element ref="ins"/>
419 <xs:element ref="del"/>
420 <xs:element ref="script"/>
424 <xs:group name="misc">
427 these can only occur at block level
431 <xs:element ref="noscript"/>
432 <xs:group ref="misc.inline"/>
436 <xs:group name="inline">
438 <xs:element ref="a"/>
439 <xs:group ref="special"/>
440 <xs:group ref="fontstyle"/>
441 <xs:group ref="phrase"/>
442 <xs:group ref="inline.forms"/>
446 <xs:complexType name="Inline" mixed="true">
449 "Inline" covers inline or "text-level" elements
452 <xs:choice minOccurs="0" maxOccurs="unbounded">
453 <xs:group ref="inline"/>
454 <xs:group ref="misc.inline"/>
460 ================== Block level elements ==============================
464 <xs:group name="heading">
466 <xs:element ref="h1"/>
467 <xs:element ref="h2"/>
468 <xs:element ref="h3"/>
469 <xs:element ref="h4"/>
470 <xs:element ref="h5"/>
471 <xs:element ref="h6"/>
475 <xs:group name="lists">
477 <xs:element ref="ul"/>
478 <xs:element ref="ol"/>
479 <xs:element ref="dl"/>
483 <xs:group name="blocktext">
485 <xs:element ref="pre"/>
486 <xs:element ref="hr"/>
487 <xs:element ref="blockquote"/>
488 <xs:element ref="address"/>
492 <xs:group name="block">
494 <xs:element ref="p"/>
495 <xs:group ref="heading"/>
496 <xs:element ref="div"/>
497 <xs:group ref="lists"/>
498 <xs:group ref="blocktext"/>
499 <xs:element ref="fieldset"/>
500 <xs:element ref="table"/>
501 <xs:element ref="ops:switch"/>
505 <xs:complexType name="Block">
506 <xs:choice minOccurs="0" maxOccurs="unbounded">
507 <xs:group ref="block"/>
508 <xs:element ref="form"/>
509 <xs:group ref="misc"/>
513 <xs:complexType name="Flow" mixed="true">
516 "Flow" mixes block and inline and is used for list items etc.
519 <xs:choice minOccurs="0" maxOccurs="unbounded">
520 <xs:group ref="block"/>
521 <xs:element ref="form"/>
522 <xs:group ref="inline"/>
523 <xs:group ref="misc"/>
529 ================== Content models for exclusions =====================
533 <xs:complexType name="a.content" mixed="true">
536 a elements use "Inline" excluding a
539 <xs:choice minOccurs="0" maxOccurs="unbounded">
540 <xs:group ref="special"/>
541 <xs:group ref="fontstyle"/>
542 <xs:group ref="phrase"/>
543 <xs:group ref="inline.forms"/>
544 <xs:group ref="misc.inline"/>
548 <xs:complexType name="pre.content" mixed="true">
551 pre uses "Inline" excluding big, small, sup or sup
554 <xs:choice minOccurs="0" maxOccurs="unbounded">
555 <xs:element ref="a"/>
556 <xs:group ref="fontstyle"/>
557 <xs:group ref="phrase"/>
558 <xs:group ref="special.pre"/>
559 <xs:group ref="misc.inline"/>
560 <xs:group ref="inline.forms"/>
564 <xs:complexType name="form.content">
567 form uses "Block" excluding form
570 <xs:choice minOccurs="0" maxOccurs="unbounded">
571 <xs:group ref="block"/>
572 <xs:group ref="misc"/>
576 <xs:complexType name="button.content" mixed="true">
579 button uses "Flow" but excludes a, form and form controls
582 <xs:choice minOccurs="0" maxOccurs="unbounded">
583 <xs:element ref="p"/>
584 <xs:group ref="heading"/>
585 <xs:element ref="div"/>
586 <xs:group ref="lists"/>
587 <xs:group ref="blocktext"/>
588 <xs:element ref="table"/>
589 <xs:group ref="special"/>
590 <xs:group ref="fontstyle"/>
591 <xs:group ref="phrase"/>
592 <xs:group ref="misc"/>
598 ================ Document Structure ==================================
602 <xs:element name="html">
605 <xs:element ref="head"/>
606 <xs:element ref="body"/>
608 <xs:attributeGroup ref="i18n"/>
609 <xs:attribute name="id" type="xs:ID"/>
615 ================ Document Head =======================================
619 <xs:group name="head.misc">
621 <xs:choice minOccurs="0" maxOccurs="unbounded">
622 <xs:element ref="script"/>
623 <xs:element ref="style"/>
624 <xs:element ref="meta"/>
625 <xs:element ref="link"/>
626 <xs:element ref="object"/>
631 <xs:element name="head">
634 content model is "head.misc" combined with a single
635 title and an optional base element in any order
640 <xs:group ref="head.misc"/>
643 <xs:element ref="title"/>
644 <xs:group ref="head.misc"/>
645 <xs:sequence minOccurs="0">
646 <xs:element ref="base"/>
647 <xs:group ref="head.misc"/>
651 <xs:element ref="base"/>
652 <xs:group ref="head.misc"/>
653 <xs:element ref="title"/>
654 <xs:group ref="head.misc"/>
658 <xs:attributeGroup ref="i18n"/>
659 <xs:attribute name="id" type="xs:ID"/>
660 <xs:attribute name="profile" type="URI"/>
664 <xs:element name="title">
667 The title element is not considered part of the flow of text.
668 It should be displayed, for example as the page header or
669 window title. Exactly one title is required per document.
672 <xs:complexType mixed="true">
673 <xs:attributeGroup ref="i18n"/>
674 <xs:attribute name="id" type="xs:ID"/>
678 <xs:element name="base">
685 <xs:attribute name="href" use="required" type="URI"/>
686 <xs:attribute name="id" type="xs:ID"/>
690 <xs:element name="meta">
693 generic metainformation
697 <xs:attributeGroup ref="i18n"/>
698 <xs:attribute name="id" type="xs:ID"/>
699 <xs:attribute name="http-equiv"/>
700 <xs:attribute name="name"/>
701 <xs:attribute name="content" use="required"/>
702 <xs:attribute name="scheme"/>
706 <xs:element name="link">
709 Relationship values can be used in principle:
711 a) for document specific toolbars/menus when used
712 with the link element in document head e.g.
713 start, contents, previous, next, index, end, help
714 b) to link to a separate style sheet (rel="stylesheet")
715 c) to make a link to a script (rel="script")
716 d) by stylesheets to control how collections of
717 html nodes are rendered into printed documents
718 e) to make a link to a printable version of this document
719 e.g. a PostScript or PDF version (rel="alternate" media="print")
723 <xs:attributeGroup ref="attrs"/>
724 <xs:attribute name="charset" type="Charset"/>
725 <xs:attribute name="href" type="URI"/>
726 <xs:attribute name="hreflang" type="LanguageCode"/>
727 <xs:attribute name="type" type="ContentType"/>
728 <xs:attribute name="rel" type="LinkTypes"/>
729 <xs:attribute name="rev" type="LinkTypes"/>
730 <xs:attribute name="media" type="MediaDesc"/>
734 <xs:element name="style">
737 style info, which may include CDATA sections
740 <xs:complexType mixed="true">
741 <xs:attributeGroup ref="i18n"/>
742 <xs:attribute name="id" type="xs:ID"/>
743 <xs:attribute name="type" use="required" type="ContentType"/>
744 <xs:attribute name="media" type="MediaDesc"/>
745 <xs:attribute name="title" type="Text"/>
746 <xs:attribute ref="xml:space" fixed="preserve"/>
750 <xs:element name="script">
753 script statements, which may include CDATA sections
756 <xs:complexType mixed="true">
757 <xs:attribute name="id" type="xs:ID"/>
758 <xs:attribute name="charset" type="Charset"/>
759 <xs:attribute name="type" use="required" type="ContentType"/>
760 <xs:attribute name="src" type="URI"/>
761 <xs:attribute name="defer">
763 <xs:restriction base="xs:token">
764 <xs:enumeration value="defer"/>
768 <xs:attribute ref="xml:space" fixed="preserve"/>
772 <xs:element name="noscript">
775 alternate content container for non script-based rendering
780 <xs:extension base="Block">
781 <xs:attributeGroup ref="attrs"/>
789 =================== Document Body ====================================
793 <xs:element name="body">
796 <xs:extension base="Block">
797 <xs:attributeGroup ref="attrs"/>
798 <xs:attribute name="onload" type="Script"/>
799 <xs:attribute name="onunload" type="Script"/>
805 <xs:element name="div">
808 generic language/style container
811 <xs:complexType mixed="true">
813 <xs:extension base="Flow">
814 <xs:attributeGroup ref="attrs"/>
822 =================== Paragraphs =======================================
826 <xs:element name="p">
827 <xs:complexType mixed="true">
829 <xs:extension base="Inline">
830 <xs:attributeGroup ref="attrs"/>
838 =================== Headings =========================================
840 There are six levels of headings from h1 (the most important)
841 to h6 (the least important).
845 <xs:element name="h1">
846 <xs:complexType mixed="true">
848 <xs:extension base="Inline">
849 <xs:attributeGroup ref="attrs"/>
855 <xs:element name="h2">
856 <xs:complexType mixed="true">
858 <xs:extension base="Inline">
859 <xs:attributeGroup ref="attrs"/>
865 <xs:element name="h3">
866 <xs:complexType mixed="true">
868 <xs:extension base="Inline">
869 <xs:attributeGroup ref="attrs"/>
875 <xs:element name="h4">
876 <xs:complexType mixed="true">
878 <xs:extension base="Inline">
879 <xs:attributeGroup ref="attrs"/>
885 <xs:element name="h5">
886 <xs:complexType mixed="true">
888 <xs:extension base="Inline">
889 <xs:attributeGroup ref="attrs"/>
895 <xs:element name="h6">
896 <xs:complexType mixed="true">
898 <xs:extension base="Inline">
899 <xs:attributeGroup ref="attrs"/>
907 =================== Lists ============================================
911 <xs:element name="ul">
919 <xs:element maxOccurs="unbounded" ref="li"/>
921 <xs:attributeGroup ref="attrs"/>
925 <xs:element name="ol">
928 Ordered (numbered) list
933 <xs:element maxOccurs="unbounded" ref="li"/>
935 <xs:attributeGroup ref="attrs"/>
939 <xs:element name="li">
945 <xs:complexType mixed="true">
947 <xs:extension base="Flow">
948 <xs:attributeGroup ref="attrs"/>
956 definition lists - dt for term, dd for its definition
960 <xs:element name="dl">
962 <xs:choice maxOccurs="unbounded">
963 <xs:element ref="dt"/>
964 <xs:element ref="dd"/>
966 <xs:attributeGroup ref="attrs"/>
970 <xs:element name="dt">
971 <xs:complexType mixed="true">
973 <xs:extension base="Inline">
974 <xs:attributeGroup ref="attrs"/>
980 <xs:element name="dd">
981 <xs:complexType mixed="true">
983 <xs:extension base="Flow">
984 <xs:attributeGroup ref="attrs"/>
992 =================== Address ==========================================
996 <xs:element name="address">
999 information on author
1002 <xs:complexType mixed="true">
1004 <xs:extension base="Inline">
1005 <xs:attributeGroup ref="attrs"/>
1007 </xs:complexContent>
1013 =================== Horizontal Rule ==================================
1017 <xs:element name="hr">
1019 <xs:attributeGroup ref="attrs"/>
1025 =================== Preformatted Text ================================
1029 <xs:element name="pre">
1032 content is "Inline" excluding "img|object|big|small|sub|sup"
1035 <xs:complexType mixed="true">
1037 <xs:extension base="pre.content">
1038 <xs:attributeGroup ref="attrs"/>
1039 <xs:attribute ref="xml:space" fixed="preserve"/>
1041 </xs:complexContent>
1047 =================== Block-like Quotes ================================
1051 <xs:element name="blockquote">
1054 <xs:extension base="Block">
1055 <xs:attributeGroup ref="attrs"/>
1056 <xs:attribute name="cite" type="URI"/>
1058 </xs:complexContent>
1064 =================== Inserted/Deleted Text ============================
1066 ins/del are allowed in block and inline content, but its
1067 inappropriate to include block content within an ins element
1068 occurring in inline content.
1072 <xs:element name="ins">
1073 <xs:complexType mixed="true">
1075 <xs:extension base="Flow">
1076 <xs:attributeGroup ref="attrs"/>
1077 <xs:attribute name="cite" type="URI"/>
1078 <xs:attribute name="datetime" type="Datetime"/>
1080 </xs:complexContent>
1084 <xs:element name="del">
1085 <xs:complexType mixed="true">
1087 <xs:extension base="Flow">
1088 <xs:attributeGroup ref="attrs"/>
1089 <xs:attribute name="cite" type="URI"/>
1090 <xs:attribute name="datetime" type="Datetime"/>
1092 </xs:complexContent>
1098 ================== The Anchor Element ================================
1102 <xs:element name="a">
1105 content is "Inline" except that anchors shouldn't be nested
1108 <xs:complexType mixed="true">
1110 <xs:extension base="a.content">
1111 <xs:attributeGroup ref="attrs"/>
1112 <xs:attributeGroup ref="focus"/>
1113 <xs:attribute name="charset" type="Charset"/>
1114 <xs:attribute name="type" type="ContentType"/>
1115 <xs:attribute name="href" type="URI"/>
1116 <xs:attribute name="hreflang" type="LanguageCode"/>
1117 <xs:attribute name="rel" type="LinkTypes"/>
1118 <xs:attribute name="rev" type="LinkTypes"/>
1119 <xs:attribute name="shape" default="rect" type="Shape"/>
1120 <xs:attribute name="coords" type="Coords"/>
1122 </xs:complexContent>
1128 ===================== Inline Elements ================================
1132 <xs:element name="span">
1135 generic language/style container
1138 <xs:complexType mixed="true">
1140 <xs:extension base="Inline">
1141 <xs:attributeGroup ref="attrs"/>
1143 </xs:complexContent>
1147 <xs:element name="bdo">
1153 <xs:complexType mixed="true">
1155 <xs:extension base="Inline">
1156 <xs:attributeGroup ref="coreattrs"/>
1157 <xs:attributeGroup ref="events"/>
1158 <xs:attribute ref="xml:lang"/>
1159 <xs:attribute name="dir" use="required">
1161 <xs:restriction base="xs:token">
1162 <xs:enumeration value="ltr"/>
1163 <xs:enumeration value="rtl"/>
1168 </xs:complexContent>
1172 <xs:element name="br">
1179 <xs:attributeGroup ref="coreattrs"/>
1183 <xs:element name="em">
1189 <xs:complexType mixed="true">
1191 <xs:extension base="Inline">
1192 <xs:attributeGroup ref="attrs"/>
1194 </xs:complexContent>
1198 <xs:element name="strong">
1204 <xs:complexType mixed="true">
1206 <xs:extension base="Inline">
1207 <xs:attributeGroup ref="attrs"/>
1209 </xs:complexContent>
1213 <xs:element name="dfn">
1219 <xs:complexType mixed="true">
1221 <xs:extension base="Inline">
1222 <xs:attributeGroup ref="attrs"/>
1224 </xs:complexContent>
1228 <xs:element name="code">
1234 <xs:complexType mixed="true">
1236 <xs:extension base="Inline">
1237 <xs:attributeGroup ref="attrs"/>
1239 </xs:complexContent>
1243 <xs:element name="samp">
1249 <xs:complexType mixed="true">
1251 <xs:extension base="Inline">
1252 <xs:attributeGroup ref="attrs"/>
1254 </xs:complexContent>
1258 <xs:element name="kbd">
1261 something user would type
1264 <xs:complexType mixed="true">
1266 <xs:extension base="Inline">
1267 <xs:attributeGroup ref="attrs"/>
1269 </xs:complexContent>
1273 <xs:element name="var">
1279 <xs:complexType mixed="true">
1281 <xs:extension base="Inline">
1282 <xs:attributeGroup ref="attrs"/>
1284 </xs:complexContent>
1288 <xs:element name="cite">
1294 <xs:complexType mixed="true">
1296 <xs:extension base="Inline">
1297 <xs:attributeGroup ref="attrs"/>
1299 </xs:complexContent>
1303 <xs:element name="abbr">
1309 <xs:complexType mixed="true">
1311 <xs:extension base="Inline">
1312 <xs:attributeGroup ref="attrs"/>
1314 </xs:complexContent>
1318 <xs:element name="acronym">
1324 <xs:complexType mixed="true">
1326 <xs:extension base="Inline">
1327 <xs:attributeGroup ref="attrs"/>
1329 </xs:complexContent>
1333 <xs:element name="q">
1339 <xs:complexType mixed="true">
1341 <xs:extension base="Inline">
1342 <xs:attributeGroup ref="attrs"/>
1343 <xs:attribute name="cite" type="URI"/>
1345 </xs:complexContent>
1349 <xs:element name="sub">
1355 <xs:complexType mixed="true">
1357 <xs:extension base="Inline">
1358 <xs:attributeGroup ref="attrs"/>
1360 </xs:complexContent>
1364 <xs:element name="sup">
1370 <xs:complexType mixed="true">
1372 <xs:extension base="Inline">
1373 <xs:attributeGroup ref="attrs"/>
1375 </xs:complexContent>
1379 <xs:element name="tt">
1385 <xs:complexType mixed="true">
1387 <xs:extension base="Inline">
1388 <xs:attributeGroup ref="attrs"/>
1390 </xs:complexContent>
1394 <xs:element name="i">
1400 <xs:complexType mixed="true">
1402 <xs:extension base="Inline">
1403 <xs:attributeGroup ref="attrs"/>
1405 </xs:complexContent>
1409 <xs:element name="b">
1415 <xs:complexType mixed="true">
1417 <xs:extension base="Inline">
1418 <xs:attributeGroup ref="attrs"/>
1420 </xs:complexContent>
1424 <xs:element name="big">
1430 <xs:complexType mixed="true">
1432 <xs:extension base="Inline">
1433 <xs:attributeGroup ref="attrs"/>
1435 </xs:complexContent>
1439 <xs:element name="small">
1445 <xs:complexType mixed="true">
1447 <xs:extension base="Inline">
1448 <xs:attributeGroup ref="attrs"/>
1450 </xs:complexContent>
1456 ==================== Object ======================================
1458 object is used to embed objects as part of HTML pages.
1459 param elements should precede other content. Parameters
1460 can also be expressed as attribute/value pairs on the
1461 object element itself when brevity is desired.
1465 <xs:element name="object">
1466 <xs:complexType mixed="true">
1467 <xs:choice minOccurs="0" maxOccurs="unbounded">
1468 <xs:element ref="param"/>
1469 <xs:group ref="block"/>
1470 <xs:element ref="form"/>
1471 <xs:group ref="inline"/>
1472 <xs:group ref="misc"/>
1474 <xs:attributeGroup ref="attrs"/>
1475 <xs:attribute name="declare">
1477 <xs:restriction base="xs:token">
1478 <xs:enumeration value="declare"/>
1482 <xs:attribute name="classid" type="URI"/>
1483 <xs:attribute name="codebase" type="URI"/>
1484 <xs:attribute name="data" type="URI"/>
1485 <xs:attribute name="type" type="ContentType"/>
1486 <xs:attribute name="codetype" type="ContentType"/>
1487 <xs:attribute name="archive" type="UriList"/>
1488 <xs:attribute name="standby" type="Text"/>
1489 <xs:attribute name="height" type="Length"/>
1490 <xs:attribute name="width" type="Length"/>
1491 <xs:attribute name="usemap" type="URI"/>
1492 <xs:attribute name="name" type="xs:NMTOKEN"/>
1493 <xs:attribute name="tabindex" type="tabindexNumber"/>
1497 <xs:element name="param">
1500 param is used to supply a named property value.
1501 In XML it would seem natural to follow RDF and support an
1502 abbreviated syntax where the param elements are replaced
1503 by attribute value pairs on the object start tag.
1507 <xs:attribute name="id" type="xs:ID"/>
1508 <xs:attribute name="name"/>
1509 <xs:attribute name="value"/>
1510 <xs:attribute name="valuetype" default="data">
1512 <xs:restriction base="xs:token">
1513 <xs:enumeration value="data"/>
1514 <xs:enumeration value="ref"/>
1515 <xs:enumeration value="object"/>
1519 <xs:attribute name="type" type="ContentType"/>
1525 =================== Images ===========================================
1527 To avoid accessibility problems for people who aren't
1528 able to see the image, you should provide a text
1529 description using the alt and longdesc attributes.
1530 In addition, avoid the use of server-side image maps.
1531 Note that in this DTD there is no name attribute. That
1532 is only available in the transitional and frameset DTD.
1536 <xs:element name="img">
1538 <xs:attributeGroup ref="attrs"/>
1539 <xs:attribute name="src" use="required" type="URI"/>
1540 <xs:attribute name="alt" use="required" type="Text"/>
1541 <xs:attribute name="longdesc" type="URI"/>
1542 <xs:attribute name="height" type="Length"/>
1543 <xs:attribute name="width" type="Length"/>
1544 <xs:attribute name="usemap" type="URI">
1547 usemap points to a map element which may be in this document
1548 or an external document, although the latter is not widely supported
1552 <xs:attribute name="ismap">
1554 <xs:restriction base="xs:token">
1555 <xs:enumeration value="ismap"/>
1564 ================== Client-side image maps ============================
1566 These can be placed in the same document or grouped in a
1567 separate document although this isn't yet widely supported
1571 <xs:element name="map">
1574 <xs:choice maxOccurs="unbounded">
1575 <xs:group ref="block"/>
1576 <xs:element ref="form"/>
1577 <xs:group ref="misc"/>
1579 <xs:element maxOccurs="unbounded" ref="area"/>
1581 <xs:attributeGroup ref="i18n"/>
1582 <xs:attributeGroup ref="events"/>
1583 <xs:attribute name="id" use="required" type="xs:ID"/>
1584 <xs:attribute name="class"/>
1585 <xs:attribute name="style" type="StyleSheet"/>
1586 <xs:attribute name="title" type="Text"/>
1590 <xs:element name="area">
1592 <xs:attributeGroup ref="attrs"/>
1593 <xs:attributeGroup ref="focus"/>
1594 <xs:attribute name="shape" default="rect" type="Shape"/>
1595 <xs:attribute name="coords" type="Coords"/>
1596 <xs:attribute name="href" type="URI"/>
1597 <xs:attribute name="nohref">
1599 <xs:restriction base="xs:token">
1600 <xs:enumeration value="nohref"/>
1604 <xs:attribute name="alt" use="required" type="Text"/>
1610 ================ Forms ===============================================
1614 <xs:element name="form">
1617 <xs:extension base="form.content">
1618 <xs:attributeGroup ref="attrs"/>
1619 <xs:attribute name="action" use="required" type="URI"/>
1620 <xs:attribute name="method" default="get">
1622 <xs:restriction base="xs:token">
1623 <xs:enumeration value="get"/>
1624 <xs:enumeration value="post"/>
1628 <xs:attribute name="enctype" type="ContentType"
1629 default="application/x-www-form-urlencoded"/>
1630 <xs:attribute name="onsubmit" type="Script"/>
1631 <xs:attribute name="onreset" type="Script"/>
1632 <xs:attribute name="accept" type="ContentTypes"/>
1633 <xs:attribute name="accept-charset" type="Charsets"/>
1635 </xs:complexContent>
1639 <xs:element name="label">
1642 Each label must not contain more than ONE field
1643 Label elements shouldn't be nested.
1646 <xs:complexType mixed="true">
1648 <xs:extension base="Inline">
1649 <xs:attributeGroup ref="attrs"/>
1650 <xs:attribute name="for" type="xs:IDREF"/>
1651 <xs:attribute name="accesskey" type="Character"/>
1652 <xs:attribute name="onfocus" type="Script"/>
1653 <xs:attribute name="onblur" type="Script"/>
1655 </xs:complexContent>
1659 <xs:simpleType name="InputType">
1660 <xs:restriction base="xs:token">
1661 <xs:enumeration value="text"/>
1662 <xs:enumeration value="password"/>
1663 <xs:enumeration value="checkbox"/>
1664 <xs:enumeration value="radio"/>
1665 <xs:enumeration value="submit"/>
1666 <xs:enumeration value="reset"/>
1667 <xs:enumeration value="file"/>
1668 <xs:enumeration value="hidden"/>
1669 <xs:enumeration value="image"/>
1670 <xs:enumeration value="button"/>
1674 <xs:element name="input">
1681 <xs:attributeGroup ref="attrs"/>
1682 <xs:attributeGroup ref="focus"/>
1683 <xs:attribute name="type" default="text" type="InputType"/>
1684 <xs:attribute name="name">
1687 the name attribute is required for all but submit & reset
1691 <xs:attribute name="value"/>
1692 <xs:attribute name="checked">
1694 <xs:restriction base="xs:token">
1695 <xs:enumeration value="checked"/>
1699 <xs:attribute name="disabled">
1701 <xs:restriction base="xs:token">
1702 <xs:enumeration value="disabled"/>
1706 <xs:attribute name="readonly">
1708 <xs:restriction base="xs:token">
1709 <xs:enumeration value="readonly"/>
1713 <xs:attribute name="size"/>
1714 <xs:attribute name="maxlength" type="Number"/>
1715 <xs:attribute name="src" type="URI"/>
1716 <xs:attribute name="alt"/>
1717 <xs:attribute name="usemap" type="URI"/>
1718 <xs:attribute name="onselect" type="Script"/>
1719 <xs:attribute name="onchange" type="Script"/>
1720 <xs:attribute name="accept" type="ContentTypes"/>
1724 <xs:element name="select">
1731 <xs:choice maxOccurs="unbounded">
1732 <xs:element ref="optgroup"/>
1733 <xs:element ref="option"/>
1735 <xs:attributeGroup ref="attrs"/>
1736 <xs:attribute name="name"/>
1737 <xs:attribute name="size" type="Number"/>
1738 <xs:attribute name="multiple">
1740 <xs:restriction base="xs:token">
1741 <xs:enumeration value="multiple"/>
1745 <xs:attribute name="disabled">
1747 <xs:restriction base="xs:token">
1748 <xs:enumeration value="disabled"/>
1752 <xs:attribute name="tabindex" type="tabindexNumber"/>
1753 <xs:attribute name="onfocus" type="Script"/>
1754 <xs:attribute name="onblur" type="Script"/>
1755 <xs:attribute name="onchange" type="Script"/>
1759 <xs:element name="optgroup">
1767 <xs:element maxOccurs="unbounded" ref="option"/>
1769 <xs:attributeGroup ref="attrs"/>
1770 <xs:attribute name="disabled">
1772 <xs:restriction base="xs:token">
1773 <xs:enumeration value="disabled"/>
1777 <xs:attribute name="label" use="required" type="Text"/>
1781 <xs:element name="option">
1787 <xs:complexType mixed="true">
1788 <xs:attributeGroup ref="attrs"/>
1789 <xs:attribute name="selected">
1791 <xs:restriction base="xs:token">
1792 <xs:enumeration value="selected"/>
1796 <xs:attribute name="disabled">
1798 <xs:restriction base="xs:token">
1799 <xs:enumeration value="disabled"/>
1803 <xs:attribute name="label" type="Text"/>
1804 <xs:attribute name="value"/>
1808 <xs:element name="textarea">
1811 multi-line text field
1814 <xs:complexType mixed="true">
1815 <xs:attributeGroup ref="attrs"/>
1816 <xs:attributeGroup ref="focus"/>
1817 <xs:attribute name="name"/>
1818 <xs:attribute name="rows" use="required" type="Number"/>
1819 <xs:attribute name="cols" use="required" type="Number"/>
1820 <xs:attribute name="disabled">
1822 <xs:restriction base="xs:token">
1823 <xs:enumeration value="disabled"/>
1827 <xs:attribute name="readonly">
1829 <xs:restriction base="xs:token">
1830 <xs:enumeration value="readonly"/>
1834 <xs:attribute name="onselect" type="Script"/>
1835 <xs:attribute name="onchange" type="Script"/>
1839 <xs:element name="fieldset">
1842 The fieldset element is used to group form fields.
1843 Only one legend element should occur in the content
1844 and if present should only be preceded by whitespace.
1846 NOTE: this content model is different from the XHTML 1.0 DTD,
1847 closer to the intended content model in HTML4 DTD
1850 <xs:complexType mixed="true">
1852 <xs:element ref="legend"/>
1853 <xs:choice minOccurs="0" maxOccurs="unbounded">
1854 <xs:group ref="block"/>
1855 <xs:element ref="form"/>
1856 <xs:group ref="inline"/>
1857 <xs:group ref="misc"/>
1860 <xs:attributeGroup ref="attrs"/>
1864 <xs:element name="legend">
1870 <xs:complexType mixed="true">
1872 <xs:extension base="Inline">
1873 <xs:attributeGroup ref="attrs"/>
1874 <xs:attribute name="accesskey" type="Character"/>
1876 </xs:complexContent>
1880 <xs:element name="button">
1883 Content is "Flow" excluding a, form and form controls
1886 <xs:complexType mixed="true">
1888 <xs:extension base="button.content">
1889 <xs:attributeGroup ref="attrs"/>
1890 <xs:attributeGroup ref="focus"/>
1891 <xs:attribute name="name"/>
1892 <xs:attribute name="value"/>
1893 <xs:attribute name="type" default="submit">
1895 <xs:restriction base="xs:token">
1896 <xs:enumeration value="button"/>
1897 <xs:enumeration value="submit"/>
1898 <xs:enumeration value="reset"/>
1902 <xs:attribute name="disabled">
1904 <xs:restriction base="xs:token">
1905 <xs:enumeration value="disabled"/>
1910 </xs:complexContent>
1916 ======================= Tables =======================================
1918 Derived from IETF HTML table standard, see [RFC1942]
1922 <xs:simpleType name="TFrame">
1925 The border attribute sets the thickness of the frame around the
1926 table. The default units are screen pixels.
1928 The frame attribute specifies which parts of the frame around
1929 the table should be rendered. The values are not the same as
1930 CALS to avoid a name clash with the valign attribute.
1933 <xs:restriction base="xs:token">
1934 <xs:enumeration value="void"/>
1935 <xs:enumeration value="above"/>
1936 <xs:enumeration value="below"/>
1937 <xs:enumeration value="hsides"/>
1938 <xs:enumeration value="lhs"/>
1939 <xs:enumeration value="rhs"/>
1940 <xs:enumeration value="vsides"/>
1941 <xs:enumeration value="box"/>
1942 <xs:enumeration value="border"/>
1946 <xs:simpleType name="TRules">
1949 The rules attribute defines which rules to draw between cells:
1951 If rules is absent then assume:
1952 "none" if border is absent or border="0" otherwise "all"
1955 <xs:restriction base="xs:token">
1956 <xs:enumeration value="none"/>
1957 <xs:enumeration value="groups"/>
1958 <xs:enumeration value="rows"/>
1959 <xs:enumeration value="cols"/>
1960 <xs:enumeration value="all"/>
1964 <xs:attributeGroup name="cellhalign">
1967 horizontal alignment attributes for cell contents
1969 char alignment char, e.g. char=':'
1970 charoff offset for alignment char
1973 <xs:attribute name="align">
1975 <xs:restriction base="xs:token">
1976 <xs:enumeration value="left"/>
1977 <xs:enumeration value="center"/>
1978 <xs:enumeration value="right"/>
1979 <xs:enumeration value="justify"/>
1980 <xs:enumeration value="char"/>
1984 <xs:attribute name="char" type="Character"/>
1985 <xs:attribute name="charoff" type="Length"/>
1986 </xs:attributeGroup>
1988 <xs:attributeGroup name="cellvalign">
1991 vertical alignment attributes for cell contents
1994 <xs:attribute name="valign">
1996 <xs:restriction base="xs:token">
1997 <xs:enumeration value="top"/>
1998 <xs:enumeration value="middle"/>
1999 <xs:enumeration value="bottom"/>
2000 <xs:enumeration value="baseline"/>
2004 </xs:attributeGroup>
2006 <xs:element name="table">
2009 <xs:element minOccurs="0" ref="caption"/>
2011 <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
2012 <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
2014 <xs:element minOccurs="0" ref="thead"/>
2015 <xs:element minOccurs="0" ref="tfoot"/>
2017 <xs:element maxOccurs="unbounded" ref="tbody"/>
2018 <xs:element maxOccurs="unbounded" ref="tr"/>
2021 <xs:attributeGroup ref="attrs"/>
2022 <xs:attribute name="summary" type="Text"/>
2023 <xs:attribute name="width" type="Length"/>
2024 <xs:attribute name="border" type="Pixels"/>
2025 <xs:attribute name="frame" type="TFrame"/>
2026 <xs:attribute name="rules" type="TRules"/>
2027 <xs:attribute name="cellspacing" type="Length"/>
2028 <xs:attribute name="cellpadding" type="Length"/>
2032 <xs:element name="caption">
2033 <xs:complexType mixed="true">
2035 <xs:extension base="Inline">
2036 <xs:attributeGroup ref="attrs"/>
2038 </xs:complexContent>
2044 Use thead to duplicate headers when breaking table
2045 across page boundaries, or for static headers when
2046 tbody sections are rendered in scrolling panel.
2048 Use tfoot to duplicate footers when breaking table
2049 across page boundaries, or for static footers when
2050 tbody sections are rendered in scrolling panel.
2052 Use multiple tbody sections when rules are needed
2053 between groups of table rows.
2057 <xs:element name="thead">
2060 <xs:element maxOccurs="unbounded" ref="tr"/>
2062 <xs:attributeGroup ref="attrs"/>
2063 <xs:attributeGroup ref="cellhalign"/>
2064 <xs:attributeGroup ref="cellvalign"/>
2068 <xs:element name="tfoot">
2071 <xs:element maxOccurs="unbounded" ref="tr"/>
2073 <xs:attributeGroup ref="attrs"/>
2074 <xs:attributeGroup ref="cellhalign"/>
2075 <xs:attributeGroup ref="cellvalign"/>
2079 <xs:element name="tbody">
2082 <xs:element maxOccurs="unbounded" ref="tr"/>
2084 <xs:attributeGroup ref="attrs"/>
2085 <xs:attributeGroup ref="cellhalign"/>
2086 <xs:attributeGroup ref="cellvalign"/>
2090 <xs:element name="colgroup">
2093 colgroup groups a set of col elements. It allows you to group
2094 several semantically related columns together.
2099 <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
2101 <xs:attributeGroup ref="attrs"/>
2102 <xs:attribute name="span" default="1" type="Number"/>
2103 <xs:attribute name="width" type="MultiLength"/>
2104 <xs:attributeGroup ref="cellhalign"/>
2105 <xs:attributeGroup ref="cellvalign"/>
2109 <xs:element name="col">
2112 col elements define the alignment properties for cells in
2113 one or more columns.
2115 The width attribute specifies the width of the columns, e.g.
2117 width=64 width in screen pixels
2118 width=0.5* relative width of 0.5
2120 The span attribute causes the attributes of one
2121 col element to apply to more than one column.
2125 <xs:attributeGroup ref="attrs"/>
2126 <xs:attribute name="span" default="1" type="Number"/>
2127 <xs:attribute name="width" type="MultiLength"/>
2128 <xs:attributeGroup ref="cellhalign"/>
2129 <xs:attributeGroup ref="cellvalign"/>
2133 <xs:element name="tr">
2135 <xs:choice maxOccurs="unbounded">
2136 <xs:element ref="th"/>
2137 <xs:element ref="td"/>
2139 <xs:attributeGroup ref="attrs"/>
2140 <xs:attributeGroup ref="cellhalign"/>
2141 <xs:attributeGroup ref="cellvalign"/>
2145 <xs:simpleType name="Scope">
2148 Scope is simpler than headers attribute for common tables
2151 <xs:restriction base="xs:token">
2152 <xs:enumeration value="row"/>
2153 <xs:enumeration value="col"/>
2154 <xs:enumeration value="rowgroup"/>
2155 <xs:enumeration value="colgroup"/>
2161 th is for headers, td for data and for cells acting as both
2165 <xs:element name="th">
2166 <xs:complexType mixed="true">
2168 <xs:extension base="Flow">
2169 <xs:attributeGroup ref="attrs"/>
2170 <xs:attribute name="abbr" type="Text"/>
2171 <xs:attribute name="axis"/>
2172 <xs:attribute name="headers" type="xs:IDREFS"/>
2173 <xs:attribute name="scope" type="Scope"/>
2174 <xs:attribute name="rowspan" default="1" type="Number"/>
2175 <xs:attribute name="colspan" default="1" type="Number"/>
2176 <xs:attributeGroup ref="cellhalign"/>
2177 <xs:attributeGroup ref="cellvalign"/>
2179 </xs:complexContent>
2183 <xs:element name="td">
2184 <xs:complexType mixed="true">
2186 <xs:extension base="Flow">
2187 <xs:attributeGroup ref="attrs"/>
2188 <xs:attribute name="abbr" type="Text"/>
2189 <xs:attribute name="axis"/>
2190 <xs:attribute name="headers" type="xs:IDREFS"/>
2191 <xs:attribute name="scope" type="Scope"/>
2192 <xs:attribute name="rowspan" default="1" type="Number"/>
2193 <xs:attribute name="colspan" default="1" type="Number"/>
2194 <xs:attributeGroup ref="cellhalign"/>
2195 <xs:attributeGroup ref="cellvalign"/>
2197 </xs:complexContent>