]> code.delx.au - gnu-emacs-elpa/blob - packages/html5-schema/block.rnc
Add 'packages/html5-schema/' from commit '6e7c7c331e7f6692be6c7d39fb9485792f0d3513'
[gnu-emacs-elpa] / packages / html5-schema / block.rnc
1 datatypes w = "http://whattf.org/datatype-draft"
2
3 # #####################################################################
4 ## RELAX NG Schema for HTML 5: Basic Prose Markup #
5 # #####################################################################
6
7 # #####################################################################
8 ## Paragraph-Level
9
10 ## Paragraph: <p>
11
12 p.elem =
13 element p { p.inner & p.attrs }
14 p.attrs =
15 ( common.attrs
16 & common.attrs.aria?
17 )
18 p.inner =
19 ( common.inner.phrasing ) # REVISIT lists in span?
20
21 common.elem.flow |= p.elem
22
23 ## Hint Transition: <hr>
24
25 hr.elem =
26 element hr { hr.inner & hr.attrs }
27 hr.attrs =
28 ( common.attrs
29 & common.attrs.aria.role.separator?
30 )
31 hr.inner =
32 ( empty )
33
34 common.elem.flow |= hr.elem
35
36 # #####################################################################
37 ## Preformatting Blocks
38
39 ## Preformatted Text: <pre>
40
41 pre.elem =
42 element pre { pre.inner & pre.attrs }
43 pre.attrs =
44 ( common.attrs
45 & common.attrs.aria?
46 )
47 pre.inner =
48 ( common.inner.phrasing )
49
50 common.elem.flow |= pre.elem
51
52 # #####################################################################
53 ## Simple Lists
54
55 ## Unordered List: <ul>
56
57 ul.elem =
58 element ul { ul.inner & ul.attrs }
59 ul.attrs =
60 ( common.attrs
61 & ( ( common.attrs.aria.role.directory
62 | common.attrs.aria.role.group
63 | common.attrs.aria.role.list
64 | common.attrs.aria.role.listbox
65 | common.attrs.aria.role.menu
66 | common.attrs.aria.role.menubar
67 | common.attrs.aria.role.tablist
68 | common.attrs.aria.role.toolbar
69 | common.attrs.aria.role.tree
70 | common.attrs.aria.role.presentation
71 )
72 | common.attrs.aria.implicit.list
73 )?
74 )
75 ul.inner =
76 ( li.elem*
77 & common.elem.script-supporting*
78 )
79
80 common.elem.flow |= ul.elem
81
82 ## Unordered List Item: <li>
83
84 li.elem =
85 element li { li.inner & li.attrs }
86 li.attrs =
87 ( common.attrs
88 & ( common.attrs.aria.implicit.listitem
89 | common.attrs.aria.role.listitem
90 | common.attrs.aria.role.menuitem
91 | common.attrs.aria.role.menuitemcheckbox
92 | common.attrs.aria.role.menuitemradio
93 | common.attrs.aria.role.option
94 | common.attrs.aria.role.tab
95 | common.attrs.aria.role.treeitem
96 | common.attrs.aria.role.separator
97 | common.attrs.aria.role.presentation
98 )?
99 )
100 li.inner =
101 ( common.inner.flow )
102
103 ## Ordered List: <ol>
104
105 ol.elem =
106 element ol { ol.inner & ol.attrs }
107 ol.attrs =
108 ( common.attrs
109 & ol.attrs.start?
110 & ol.attrs.reversed?
111 & ol.attrs.type?
112 & ( ( common.attrs.aria.role.directory
113 | common.attrs.aria.role.group
114 | common.attrs.aria.role.list
115 | common.attrs.aria.role.listbox
116 | common.attrs.aria.role.menu
117 | common.attrs.aria.role.menubar
118 | common.attrs.aria.role.tablist
119 | common.attrs.aria.role.toolbar
120 | common.attrs.aria.role.tree
121 | common.attrs.aria.role.presentation
122 )
123 | common.attrs.aria.implicit.list
124 )?
125 )
126 ol.attrs.start =
127 attribute start {
128 common.data.integer
129 }
130 ol.attrs.reversed =
131 attribute reversed {
132 w:string "reversed" | w:string ""
133 }
134 ol.attrs.type =
135 attribute type {
136 w:string "1" | w:string "a" | w:string "A" | w:string "i" | w:string "I"
137 }
138 ol.inner =
139 ( oli.elem*
140 & common.elem.script-supporting*
141 )
142
143 common.elem.flow |= ol.elem
144
145 ## Ordered List Item: <li>
146
147 oli.elem =
148 element li { oli.inner & oli.attrs }
149 oli.attrs =
150 ( common.attrs
151 & oli.attrs.value?
152 & ( common.attrs.aria.implicit.listitem
153 | common.attrs.aria.role.listitem
154 | common.attrs.aria.role.menuitem
155 | common.attrs.aria.role.menuitemcheckbox
156 | common.attrs.aria.role.menuitemradio
157 | common.attrs.aria.role.option
158 | common.attrs.aria.role.tab
159 | common.attrs.aria.role.treeitem
160 | common.attrs.aria.role.separator
161 | common.attrs.aria.role.presentation
162 )?
163 )
164 oli.attrs.value =
165 attribute value {
166 common.data.integer
167 }
168 oli.inner =
169 ( common.inner.flow )
170
171 # #####################################################################
172 ## Definition Lists
173
174 ## Definition List: <dl>
175
176 dl.elem =
177 element dl { dl.inner & dl.attrs }
178 dl.attrs =
179 ( common.attrs
180 & ( common.attrs.aria.implicit.list
181 | common.attrs.aria.role.list
182 )?
183 )
184 dl.inner =
185 ( ( ( dt.elem
186 & common.elem.script-supporting*
187 )+
188 ,
189 ( dd.elem
190 & common.elem.script-supporting*
191 )+
192 )*
193 )
194
195 common.elem.flow |= dl.elem
196
197 ## Definition Term: <dt>
198
199 dt.elem =
200 element dt { dt.inner & dt.attrs }
201 dt.attrs =
202 ( common.attrs
203 & common.attrs.aria?
204 )
205 dt.inner =
206 ( common.inner.flow )
207
208 ## Definition Description: <dd>
209
210 dd.elem =
211 element dd { dd.inner & dd.attrs }
212 dd.elem.phrasing =
213 element dd { dd.inner.phrasing & dd.attrs }
214 dd.attrs =
215 ( common.attrs
216 & common.attrs.aria?
217 )
218 dd.inner =
219 ( common.inner.flow )
220 dd.inner.phrasing =
221 ( common.inner.phrasing )
222
223 # #####################################################################
224 ## Miscellaneous Elements
225
226 ## Generic Container: <div>
227
228 div.elem =
229 element div { div.inner & div.attrs }
230 div.attrs =
231 ( common.attrs
232 & common.attrs.aria?
233 )
234 div.inner =
235 ( common.inner.flow )
236
237 common.elem.flow |= div.elem
238
239 ## Title or Explanatory Caption: <legend>
240
241 legend.elem =
242 element legend { legend.inner & legend.attrs }
243 legend.attrs =
244 ( common.attrs
245 & ( common.attrs.aria.role.presentation
246 | common.attrs.aria.role.menuitem
247 )?
248 )
249 legend.inner =
250 ( common.inner.phrasing )