You are here: Foswiki>Tasks Web>Item11102 (06 Jan 2015, GeorgeClark)Edit Attach

Item11102: Conditionally render html as html5

Priority: Enhancement
Current State: Proposal Required
Released In: n/a
Target Release: minor
Applies To: Engine
Component: FoswikiRender
Reported By: ArthurClemens
Waiting For:
Last Change By: GeorgeClark
Quite some html markup that is emitted by core code is invalid in html5. For instance, anchor links do not have a name attribute, list items do not have a type attribute.

We cannot change this because we will support html 4 for a very long time. A rendering setting can be used to conditionally emit different markup.

Proposal: new "Miscellaneous" setting {RenderedHtmlVersion} with the options 4 (default) and 5.

Core code then renders different html if {RenderedHtmlVersion} is 5.

For instance, will have 2 ways to render an anchor link:
if ( $Foswiki::cfg{RenderedHtmlVersion} == 5 ) {
   # some code
} else {
        # other code

But it would be better if we had a HtmlRenderer class that took care of writing html. This class could have subclasses for html4 and html5.

So we could write: Foswiki::renderer->anchor($name)

-- ArthurClemens - 02 Sep 2011

Absolutely. I have some ideas for this (build a WikiText DOM compatible with CPAN:XML::XPathEngine, but who knows if this will be faster/slower than our existing regex spaghetti), but it requires drastically overhauling Foswiki::Render and Foswiki::Form.

So perhaps it would be worthwhile, as a first step, to make Foswiki::Render pluggable.

-- PaulHarvey - 04 Sep 2011

Having said that, would be nice if we could work towoards polyglot output (both XHTML and HTML5 valid).

-- PaulHarvey - 04 Sep 2011

Actually, named anchors are not a good example because the substitute with element IDs are already supported cross browser. Update: and implemented in Item11389.

Another candidate is meta data, currently in meta tags. In html5 this is no longer allowed: the meta fields are restricted. With a custom tag, the validator will give an error like:
Bad value foswiki.WIKIUSERNAME for attribute name on element meta: Keyword foswiki.wikiusername is not registered.

Is meta data used outside of javascript? Otherwise we could as well write it to head in a script tag using JSON.

-- ArthurClemens - 25 Dec 2011

can't we use the template system to do this? hardcoded or code based html generation is a problem pretty much everywhere frown, sad smile

-- SvenDowideit - 26 Dec 2011

ItemTemplate edit

Summary Conditionally render html as html5
ReportedBy ArthurClemens
Codebase trunk
SVN Range
AppliesTo Engine
Component FoswikiRender
Priority Enhancement
CurrentState Proposal Required
TargetRelease minor
ReleasedIn n/a
Topic revision: r8 - 06 Jan 2015, GeorgeClark
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy