Hi everyone, In developing my take on the Org website and my coFig file, it has come to my attention that there seem to be a few W3C violations in the HTML export. I always export with these settings, which may affect some of the items below. #+begin_src emacs-lisp (setq org-html-doctype "html5" org-html-html5-fancy t) #+end_src * Error: Element p not allowed as child of element h2 in this context Org currently seems to put a p.subtitle inside the heading. This violates the "phrasing content" restriction. https://html.spec.whatwg.org/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements ** Suggestion Make the subtitle an independent element, is can still be a p.subtitle, just not /inside/ the h2 title * Warning: The type attribute is unnecessary for JavaScript resources. This seems to be from the '<script type="text/javascript">' code highlighting script. ** Suggestion Remove the ' type="text/javascript"' part of that. * Error: Attribute alt not allowed on element object at this point. This occurs when one has an svg figure, and one wishes to add alt text (good for accessibility). This is of course applied to the <object type="image/svg+xml">. What's interesting here is that the benefit of using an <object> over an <img> for SVGs seems to basically be that it allows for a raster fallback (with the downside that it is downloaded even when not needed). However... if we're using HTML5, the <picture> element exists for exactly this case, and provides a better implementation of fallbacks. Even if one is not using HTML5, I don't see any way that Org actually makes use of the potential for a raster fallback ... raising the question of why an <object> is used over <img> in the first place. It appears that browser support for SVGs in <img> tags was originally sketchy, however that issue seems to have bee long since resolved: https://caniuse.com/svg-img ** Suggestion Switch <object> to <img> for SVGs, if Org does add a mechanism for defining fallback images in the future, use <picture> with HTML5 * Error: Duplicate ID org0424ed6. Clearly, this can happen. I'm not sure how. I'd like to draw attention to this email I sent a while ago (excuse the mangled start) https://orgmode.org/list/E1jxAjq-0004Dk-LH@lists.gnu.org/ * Error: Character reference expands to a control character (U+0002). I have no idea where this is coming from, or why it's there --- but it is, and it's not alone: + Error: Character reference expands to a control character (U+001d). + Error: Character reference expands to a control character (U+001f). + Error: Character reference expands to a control character (U+0016). + Error: Character reference expands to a control character (U+000f). + Warning: Document uses the Unicode Private Use Area(s), which should not be used in publicly exchanged documents. (Charmod C073) + Error: Character reference expands to a control character (U+001b). I suspect this may be htmlize, but I'm not sure, and it's Org-related, so I'll include it. * (not an error) Difficulty in 'wrapping' sections It's quite reasonable (IMO) to want to wrap a (sub*)section in a certain element, such as a link. Indeed I've wanted to do this to create clickable 'cards' on the homepage of my org website revamp. Unfortunately there doesn't seem to be any property like :HTML_WRAP: etc. that can be applied, forcing me to try this: #+begin_src org ,** Features @@html:<a href="features.html">@@ [[file:resources/img/stars.svg]] Delve into the possibilities. @@html:</a>@@ #+end_src This produces the following errors: + Error: End tag p seen, but there were open elements. + Error: Unclosed element a. + Error: End tag a violates nesting rules. + Fatal Error: Cannot recover after last error. Any further errors will be ignored. It would be good to have a way to do this that doesn't cause W3C issues. That's all that I could see on a first glance. I'm hoping that documenting these issues here will be the first step to solving them. To identify these issues, I applied https://validator.w3.org/ to https://orgmode.tecosaur.com/ and https://tecosaur.github.io/emacs-config/config.html All the best, Timothy.
Hi Timothy, TEC <tecosaur@gmail.com> writes: > In developing my take on the Org website and my coFig file, it has > come to my attention that there seem to be a few W3C violations in > the HTML export. thanks for the careful tests and for reporting this. > I always export with these settings, > which may affect some of the items below. > > #+begin_src emacs-lisp > (setq org-html-doctype "html5" > org-html-html5-fancy t) > #+end_src I suggest we first try to fix HTML errors that we have with the default settings, then errors with fancy ones. > That's all that I could see on a first glance. I'm hoping that > documenting these issues here will be the first step to solving > them. It surely does. Can you provide a patch for each issue, opening a new thread so that we can discuss the solution? Thanks! -- Bastien
I don't think this should be forgotten about, so I'm adding it to https://updates.orgmode.org/#help for now.
Hi Timothy, TEC <tecosaur@gmail.com> writes: > I don't think this should be forgotten about, so I'm adding it to > https://updates.orgmode.org/#help for now. Thanks - a tip: you can use a summary like this one with Woof: X-Woof-Help: Fix W3C violations in Org's HTML export See https://github.com/bzg/woof#annotations-for-bugs-and-help-requests Also, feel free to submit patches for these issues, ideally by discussing them in separate threads. -- Bastien
Hi Timothy, TEC <tecosaur@gmail.com> writes: > * Error: Element p not allowed as child of element h2 in this > context > Org currently seems to put a p.subtitle inside the heading. > This violates the "phrasing content" restriction. > https://html.spec.whatwg.org/multipage/sections.html#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements > > ** Suggestion > Make the subtitle an independent element, is can still be a > p.subtitle, just not /inside/ the h2 title Agreed, can you provide a patch for this? > * Warning: The type attribute is unnecessary for JavaScript > resources. > This seems to be from the '<script type="text/javascript">' code > highlighting script. > > ** Suggestion > Remove the ' type="text/javascript"' part of that. Done. > * Error: Attribute alt not allowed on element object at this > point. > This occurs when one has an svg figure, and one wishes to add > alt text > (good for accessibility). This is of course applied to the > <object > type="image/svg+xml">. > > What's interesting here is that the benefit of using an <object> > over > an <img> for SVGs seems to basically be that it allows for a > raster > fallback (with the downside that it is downloaded even when not > needed). However... if we're using HTML5, the <picture> element > exists > for exactly this case, and provides a better implementation of > fallbacks. Even if one is not using HTML5, I don't see any way > that > Org actually makes use of the potential for a raster fallback > ... > raising the question of why an <object> is used over <img> in > the > first place. It appears that browser support for SVGs in <img> > tags > was originally sketchy, however that issue seems to have bee > long > since resolved: https://caniuse.com/svg-img > > ** Suggestion > Switch <object> to <img> for SVGs, if Org does add a mechanism > for > defining fallback images in the future, use <picture> with > HTML5 Can you confirm the two issues above are already fixed? > * Error: Duplicate ID org0424ed6. > Clearly, this can happen. I'm not sure how. > I'd like to draw attention to this email I sent a while ago > (excuse > the mangled start) > https://orgmode.org/list/E1jxAjq-0004Dk-LH@lists.gnu.org/ I cannot reproduce this. > * Error: Character reference expands to a control character > (U+0002). > I have no idea where this is coming from, or why it's there --- > but it > is, and it's not alone: > + Error: Character reference expands to a control character > (U+001d). > + Error: Character reference expands to a control character > (U+001f). > + Error: Character reference expands to a control character > (U+0016). > + Error: Character reference expands to a control character > (U+000f). > + Warning: Document uses the Unicode Private Use Area(s), which > should > not be used in publicly exchanged documents. (Charmod C073) > + Error: Character reference expands to a control character > (U+001b). > > I suspect this may be htmlize, but I'm not sure, and it's > Org-related, > so I'll include it. I don't observe this, a reproducible recipe is welcome. > * (not an error) Difficulty in 'wrapping' sections > It's quite reasonable (IMO) to want to wrap a (sub*)section in a > certain element, such as a link. Indeed I've wanted to do this > to > create clickable 'cards' on the homepage of my org website > revamp. > Unfortunately there doesn't seem to be any property like > :HTML_WRAP: > etc. that can be applied, forcing me to try this: > > #+begin_src org > ,** Features > @@html:<a href="features.html">@@ > [[file:resources/img/stars.svg]] > > Delve into the possibilities. > @@html:</a>@@ > #+end_src > > This produces the following errors: > + Error: End tag p seen, but there were open elements. > + Error: Unclosed element a. > + Error: End tag a violates nesting rules. > + Fatal Error: Cannot recover after last error. Any further > errors > will be ignored. > > It would be good to have a way to do this that doesn't cause W3C > issues. Once all issues listed here are handles, please close the call for help with "X-Woof-Help: close" as a header. Please open a separate proposal for this. Thanks, -- Bastien
Bastien <bzg@gnu.org> writes: >> ** Suggestion >> Make the subtitle an independent element, is can still be a >> p.subtitle, just not /inside/ the h2 title > > Agreed, can you provide a patch for this? I'll add that to my todo list. >> ** Suggestion >> Remove the ' type="text/javascript"' part of that. > > Done. Nice. >> [SVGs] > Can you confirm the two issues above are already fixed? As of d96e897579 I'm not seeing any more W3C complaints :) >> * Error: Duplicate ID org0424ed6. >> Clearly, this can happen. I'm not sure how. >> I'd like to draw attention to this email I sent a while ago >> (excuse >> the mangled start) >> https://orgmode.org/list/E1jxAjq-0004Dk-LH@lists.gnu.org/ > > I cannot reproduce this. This may have been a low-chance once off / short-lived strange bug. If nobody else has seen this happen, I'd be inclined to dismiss this. >> * Error: Character reference expands to a control character >> (U+0002). >> >> I suspect this may be htmlize, but I'm not sure, and it's >> Org-related, >> so I'll include it. > > I don't observe this, a reproducible recipe is welcome. I'll come back to this if I can find out more. >> * (not an error) Difficulty in 'wrapping' sections >> It's quite reasonable (IMO) to want to wrap a (sub*)section in a >> certain element, such as a link. Indeed I've wanted to do this >> to create clickable 'cards' on the homepage of my org website >> revamp. Unfortunately there doesn't seem to be any property like >> :HTML_WRAP: etc. that can be applied, forcing me to try this: >> [...] > > Please open a separate proposal for this. Will do once I've thought a bit about what would be a good interface/implementation for this. > Once all issues listed here are handles, please close the call for > help with "X-Woof-Help: close" as a header. Will do 👍 Thanks for reminding me about this, Timothy.
On Fri, Oct 23, 2020 at 3:46 PM TEC <tecosaur@gmail.com> wrote: > ** Suggestion > Make the subtitle an independent element, is can still be a > p.subtitle, just not /inside/ the h2 title Have you seen this? Suggests wrapping title h* and p within a header. https://www.w3.org/TR/html52/common-idioms-without-dedicated-elements.html#subheadings-subtitles-alternative-titles-and-taglines Bruce