tidy-html5/README/ELEMENTS.md

2 KiB

Tidy HTML Elements

This is about adding a new html element, or tag.

Tidy tries to support all elements supported by the W3C. To add a new supported element, the defintion begins in tidyenum.h, to give it a value. Then it is added to the tag_defs[] table in tags.c, where it is given a unique string, supported html versions, attributes support, and a bit type.

Note, there are a group of configuration options to add elements not yet approved by the W3C. These are new-blocklevel-tags, new-empty-tags, new-inline-tags. and new-pre-tags. This provides a way to extend the tag_defs[] table just for that tidy session.

So, to add a new html element, consists of the following simple steps -

  1. tidyenum.h - Give the element an internal name, like TidyTag_XXXX, and thus a value. While there were some initial steps to keep this TidyTagId enumeration alphabetic, now just add the new TidyTag_XXXX just before the last entry 'N_TIDY_TAGS'.

  2. tags.c - Add a line to the tag_defs[] table. This assigns the unique string value of the element. Then the html versions that support the element, a pointer to the attributes supported by that elelment, and a bit field of the elements characteristics, inline, block, etc.

So, just changing 2 files, tidyenum.h and tags.c, and libTidy will now support that element, tag, as W3C approved. Simple... And at times, there is some case for adding element that are still in the Working Draft stage, especially when there has bee wide spread support in the community, even before it reaches REC stage.

Now, one could argue that this is not the best way to verify every attribute and value, for every tag, but that is a mute point - that is how tidy does it!

; eof 20170205