Есть ли простой подход для добавления набора правил HTML5 для HTMLPurifier?
HP может настроить распознавание новых тегов с помощью
// setup configurable HP instance
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.DefinitionID', 'html5 draft');
$config->set('HTML.DefinitionRev', 1);
$config->set('Cache.DefinitionImpl', null); // no caching
$def = $config->getHTMLDefinition(true);
// add a new tag
$form = $def->addElement(
'article', // name
'Block', // content set
'Flow', // allowed children
'Common', // attribute collection
array( // attributes
)
);
// add a new attribute
$def->addAttribute('a', 'contextmenu', "ID");
Однако это явно немного работы. Поскольку существует множество новых тегов и атрибутов HTML5, которые необходимо было зарегистрировать. Новые глобальные атрибуты должны сочетаться даже с существующими тегами HTML 4. (Трудно судить из документов, как увеличить основные правила). Итак, существует ли более удобная структура конфигурации/структуры массива для подачи нового и обновленного атрибута tag + атрибута + контекстная конфигурация (inline/block/empty/flow/..) в HTMLPurifier?
# mostly confused about how to extend existing tags:
$def->addAttribute('input', 'type', "...|...|...");
# or how to allow data-* attributes (if I actually wanted that):
$def->addAttribute("data-*", ...
И, конечно, не все новые теги HTML5 подходят для неограниченного пособия. HTMLPurifier - это все, что касается фильтрации содержимого. Определение ограничений значения - это где. - <canvas>
, например, может быть не такой большой, если он появляется в пользовательском контенте. Потому что это бесполезно в лучшем случае без Javascript (который HP уже отфильтровывает). Но другие теги и атрибуты могут быть нежелательными; поэтому необходима гибкая структура конфигурации для включения/отключения тэгов и связанных с ними атрибутов.
(Угадайте, я должен обновить некоторые исследования...). Но по-прежнему нет практического компендиума/спецификации (нет, XML DTD - нет), который соответствует конфигурации HP.
- http://simon.html5.org/html-elements
- http://www.w3.org/TR/html5-diff/#new-elements
- http://www.w3.org/TR/html5-diff/#new-attributes
(Uh, а HTML5 больше не черновик).