1 | | To be written... |
| 1 | === Intro === |
| 2 | |
| 3 | Googling... googling... That's right - there's no DTD for HTML5 and there won't be any, because HTML5 cannot be defined by poor DTD. There are other schema languages like RELAX NG in which HTML5 may be defined, but AFAIK WHATWG won't create schema for HTML5. |
| 4 | |
| 5 | === Subject of this task === |
| 6 | |
| 7 | We need to update our pseudo-DTD with HTML5's new stuff. See e.g. https://github.com/ckeditor/ckeditor-dev/pull/6 |
| 8 | |
| 9 | The purpose of {{{CKEDITOR.dtd}}} is mainly to validate DOM tree structure + few more specific for editor things (like the list of editable elements). Unfortunately in current {{{CKEDITOR.dtd}}}'s format we won't be able to define HTML5's precisely. |
| 10 | |
| 11 | I see two main problems: |
| 12 | |
| 13 | 1. Transparent elements (http://dev.w3.org/html5/markup/terminology.html#transparent) |
| 14 | E.g. if {{{<a>}}} is a child of {{{<div>}}}, then {{{<a>}}} may contain block elements (in HTML5's terminology - flow elements (http://dev.w3.org/html5/markup/common-models.html#common.elem.flow)) and inline elements (phrasing elements). If {{{<a>}}} is a child of {{{<p>}}}, then it may contain phrasing elements only. |
| 15 | 2. Nesting rules dependent on attributes/sth else. |
| 16 | E.g. if {{{<audio>}}} doesn't have {{{src}}} attr it may contain {{{<source>}}} elements. Otherwise it may not. |
| 17 | |
| 18 | We are not able to handle 1. and I believe that we've got to live now with the current state of things. However, for 2., rules of our DTD should just be as tolerant as possible. That's the solution for now. |
| 19 | |
| 20 | === Few interesting links === |
| 21 | |
| 22 | * http://dev.w3.org/html5/markup/elements.html#elements |
| 23 | * http://stackoverflow.com/questions/432933/will-html-5-validation-be-worth-the-candle |
| 24 | * http://stackoverflow.com/questions/4055206/yet-another-question-regarding-the-html5-dtd-schema |
| 25 | * http://about.validator.nu/ |