﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
9301	Complete DTD for HTML5	Piotrek Koszuliński	Garry Yao	"=== Intro ===

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.

=== Subject of this task ===

We need to update our pseudo-DTD with HTML5's new stuff. See e.g. https://github.com/ckeditor/ckeditor-dev/pull/6

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.

I see two main problems:

1. Transparent elements (http://dev.w3.org/html5/markup/terminology.html#transparent)
  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.
2. Nesting rules dependent on attributes/sth else.
  E.g. if {{{<audio>}}} doesn't have {{{src}}} attr it may contain {{{<source>}}} elements. Otherwise it may not.

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.

=== Few interesting links ===

* http://dev.w3.org/html5/markup/elements.html#elements
* http://stackoverflow.com/questions/432933/will-html-5-validation-be-worth-the-candle
* http://stackoverflow.com/questions/4055206/yet-another-question-regarding-the-html5-dtd-schema
* http://about.validator.nu/"	Bug	closed	Normal	CKEditor 4.0	Core : DTD	4.0	fixed		
