]> code.delx.au - gnu-emacs-elpa/blob - packages/html5-schema/phrase.rnc
Merge commit '0cda39255827f283e7578cd469ae42daad9556a2' from js2-mode
[gnu-emacs-elpa] / packages / html5-schema / phrase.rnc
1 datatypes w = "http://whattf.org/datatype-draft"
2
3 # #####################################################################
4 ## RELAX NG Schema for HTML 5: Phrase Markup #
5 # #####################################################################
6
7 ## Contextual Hyperlink: <a>
8
9 a.elem.phrasing =
10 element a { a.inner.phrasing & a.attrs }
11 a.elem.flow =
12 element a { a.inner.flow & a.attrs }
13 a.attrs =
14 ( common.attrs.basic
15 & common.attrs.i18n
16 & common.attrs.present
17 & common.attrs.other
18 & a.attrs.name?
19 & shared-hyperlink.attrs.download?
20 & shared-hyperlink.attrs.href?
21 & shared-hyperlink.attrs.target?
22 & shared-hyperlink.attrs.rel?
23 & shared-hyperlink.attrs.hreflang?
24 & shared-hyperlink.attrs.type?
25 & shared-hyperlink.attrs.ping?
26 & ( common.attrs.aria.implicit.link
27 | common.attrs.aria.role.button
28 | common.attrs.aria.role.checkbox
29 | common.attrs.aria.role.link
30 | common.attrs.aria.role.menuitem
31 | common.attrs.aria.role.menuitemcheckbox
32 | common.attrs.aria.role.menuitemradio
33 | common.attrs.aria.role.switch
34 | common.attrs.aria.role.tab
35 | common.attrs.aria.role.treeitem
36 )?
37 )
38 a.attrs.name =
39 attribute name {
40 common.data.id # XXX not what the spec says
41 }
42 a.inner.phrasing =
43 ( common.inner.phrasing )
44 a.inner.flow =
45 ( common.inner.transparent.flow )
46
47 common.elem.phrasing |= a.elem.phrasing
48 common.elem.flow |= a.elem.flow
49
50 ## Shared hyperlink attributes
51
52 shared-hyperlink.attrs.download =
53 attribute download {
54 string
55 }
56 shared-hyperlink.attrs.href =
57 attribute href {
58 common.data.uri
59 }
60 shared-hyperlink.attrs.target =
61 attribute target {
62 common.data.browsing-context-or-keyword
63 }
64 shared-hyperlink.attrs.rel =
65 attribute rel {
66 w:a-rel
67 }
68 shared-hyperlink.attrs.hreflang =
69 attribute hreflang {
70 common.data.langcode
71 }
72 shared-hyperlink.attrs.media =
73 attribute media {
74 common.data.mediaquery
75 }
76 shared-hyperlink.attrs.type =
77 attribute type {
78 common.data.mimetype
79 }
80 shared-hyperlink.attrs.ping =
81 attribute ping {
82 common.data.uris
83 } & v5only
84
85 ## Emphatic Stress: <em>
86
87 em.elem =
88 element em { em.inner & em.attrs }
89 em.attrs =
90 ( common.attrs
91 & common.attrs.aria?
92 )
93 em.inner =
94 ( common.inner.phrasing )
95
96 common.elem.phrasing |= em.elem
97
98 ## Strong Importance: <strong>
99
100 strong.elem =
101 element strong { strong.inner & strong.attrs }
102 strong.attrs =
103 ( common.attrs
104 & common.attrs.aria?
105 )
106 strong.inner =
107 ( common.inner.phrasing )
108
109 common.elem.phrasing |= strong.elem
110
111 ## Small Print and Side Comments: <small>
112
113 small.elem =
114 element small { small.inner & small.attrs }
115 small.attrs =
116 ( common.attrs
117 & common.attrs.aria?
118 )
119 small.inner =
120 ( common.inner.phrasing )
121
122 common.elem.phrasing |= small.elem
123
124 ## Marked (Highlighted) Text: <mark>
125
126 mark.elem =
127 element mark { mark.inner & mark.attrs }
128 & v5only
129 mark.attrs =
130 ( common.attrs
131 & ( common.attrs.aria.role.presentation
132 | common.attrs.aria.role.menuitem
133 )?
134 )
135 mark.inner =
136 ( common.inner.phrasing )
137
138 common.elem.phrasing |= mark.elem
139
140 ## Abbreviation: <abbr>
141
142 abbr.elem =
143 element abbr { abbr.inner & abbr.attrs }
144 abbr.attrs =
145 ( common.attrs
146 # abbr.attrs.title included in common.attrs
147 & common.attrs.aria?
148 )
149 abbr.inner =
150 ( common.inner.phrasing )
151
152 common.elem.phrasing |= abbr.elem
153
154 ## Defining Instance: <dfn>
155
156 dfn.elem =
157 element dfn { dfn.inner & dfn.attrs }
158 dfn.attrs =
159 ( common.attrs
160 # dfn.attrs.title included in common.attrs
161 & common.attrs.aria?
162 )
163 dfn.inner =
164 ( common.inner.phrasing )
165
166 common.elem.phrasing |= dfn.elem
167
168 ## Italic: <i>
169
170 i.elem =
171 element i { i.inner & i.attrs }
172 i.attrs =
173 ( common.attrs
174 & common.attrs.aria?
175 )
176 i.inner =
177 ( common.inner.phrasing )
178
179 common.elem.phrasing |= i.elem
180
181 ## Bold: <b>
182
183 b.elem =
184 element b { b.inner & b.attrs }
185 b.attrs =
186 ( common.attrs
187 & common.attrs.aria?
188 )
189 b.inner =
190 ( common.inner.phrasing )
191
192 common.elem.phrasing |= b.elem
193
194 ## Struck Text: <s>
195
196 s.elem =
197 element s { s.inner & s.attrs }
198 s.attrs =
199 ( common.attrs
200 & common.attrs.aria?
201 )
202 s.inner =
203 ( common.inner.phrasing )
204
205 common.elem.phrasing |= s.elem
206
207 ## Underline: <u>
208
209 u.elem =
210 element u { u.inner & u.attrs }
211 u.attrs =
212 ( common.attrs
213 & common.attrs.aria?
214 )
215 u.inner =
216 ( common.inner.phrasing )
217
218 common.elem.phrasing |= u.elem
219
220 ## Code Fragment: <code>
221
222 code.elem =
223 element code { code.inner & code.attrs }
224 code.attrs =
225 ( common.attrs
226 & common.attrs.aria?
227 )
228 code.inner =
229 ( common.inner.phrasing )
230
231 common.elem.phrasing |= code.elem
232
233 ## Variable or Placeholder: <var>
234
235 var.elem =
236 element var { var.inner & var.attrs }
237 var.attrs =
238 ( common.attrs
239 & common.attrs.aria?
240 )
241 var.inner =
242 ( common.inner.phrasing )
243
244 common.elem.phrasing |= var.elem
245
246 ## (Sample) Output: <samp>
247
248 samp.elem =
249 element samp { samp.inner & samp.attrs }
250 samp.attrs =
251 ( common.attrs
252 & common.attrs.aria?
253 )
254 samp.inner =
255 ( common.inner.phrasing )
256
257 common.elem.phrasing |= samp.elem
258
259 ## User Input: <kbd>
260
261 kbd.elem =
262 element kbd { kbd.inner & kbd.attrs }
263 kbd.attrs =
264 ( common.attrs
265 & common.attrs.aria?
266 )
267 kbd.inner =
268 ( common.inner.phrasing )
269
270 common.elem.phrasing |= kbd.elem
271
272 ## Superscript: <sup>
273
274 sup.elem =
275 element sup { sup.inner & sup.attrs }
276 sup.attrs =
277 ( common.attrs
278 & common.attrs.aria?
279 )
280 sup.inner =
281 ( common.inner.phrasing )
282
283 common.elem.phrasing |= sup.elem
284
285 ## Subscript: <sub>
286
287 sub.elem =
288 element sub { sub.inner & sub.attrs }
289 sub.attrs =
290 ( common.attrs
291 & common.attrs.aria?
292 )
293 sub.inner =
294 ( common.inner.phrasing )
295
296 common.elem.phrasing |= sub.elem
297
298 ## Quotation: <q>
299
300 q.elem =
301 element q { q.inner & q.attrs }
302 q.attrs =
303 ( common.attrs
304 & q.attrs.cite?
305 & common.attrs.aria?
306 )
307 q.attrs.cite =
308 attribute cite {
309 common.data.uri
310 }
311 q.inner =
312 ( common.inner.phrasing )
313
314 common.elem.phrasing |= q.elem
315
316 ## Title of Work: <cite>
317
318 cite.elem =
319 element cite { cite.inner & cite.attrs }
320 cite.attrs =
321 ( common.attrs
322 & common.attrs.aria?
323 )
324 cite.inner =
325 ( common.inner.phrasing )
326
327 common.elem.phrasing |= cite.elem
328
329 ## Generic Span: <span>
330
331 span.elem =
332 element span { span.inner & span.attrs }
333 span.attrs =
334 ( common.attrs
335 & common.attrs.aria?
336 )
337 span.inner =
338 ( common.inner.phrasing ) # REVISIT allow ol and ul?
339
340 common.elem.phrasing |= span.elem
341
342 ## Bidirectional Override: <bdo>
343
344 bdo.elem =
345 element bdo { bdo.inner & bdo.attrs }
346 bdo.attrs =
347 ( common.attrs # dir required in Schematron
348 & ( common.attrs.aria.role.presentation
349 | common.attrs.aria.role.menuitem
350 )?
351 )
352 bdo.inner =
353 ( common.inner.phrasing )
354
355 common.elem.phrasing |= bdo.elem
356
357 ## Bidirectional Isolate: <bdi>
358
359 bdi.elem =
360 element bdi { bdi.inner & bdi.attrs }
361 bdi.attrs =
362 ( common.attrs
363 & ( common.attrs.aria.role.presentation
364 | common.attrs.aria.role.menuitem
365 )?
366 )
367 bdi.inner =
368 ( common.inner.phrasing )
369
370 common.elem.phrasing |= bdi.elem
371
372 ## Line Break: <br>
373
374 br.elem =
375 element br { br.inner & br.attrs }
376 br.attrs =
377 ( common.attrs
378 & ( common.attrs.aria.role.presentation
379 | common.attrs.aria.role.menuitem
380 )?
381 )
382 br.inner =
383 ( empty )
384
385 common.elem.phrasing |= br.elem
386
387 ## Line-break opportunity: <wbr>
388
389 wbr.elem =
390 element wbr { wbr.inner & wbr.attrs }
391 wbr.attrs =
392 ( common.attrs
393 & ( common.attrs.aria.role.presentation
394 | common.attrs.aria.role.menuitem
395 )?
396 )
397 wbr.inner =
398 ( empty )
399
400 common.elem.phrasing |= wbr.elem