Hi,
XML error:
Created <time datetime="2009-03-24T18:02:14Z" pubdate class="relativedate" title="Tue, 24 Mar 2009 14:02:14 -0400">2009-03-24</time>
The pubdate REQUIRES a date, so e.g. pubdate="2009-03-24T18:02:14Z"
No,
pubdate="pubdate". It's a boolean attribute. applied && done --Joeyawesome, thanks for fixing my fix
--simonraven
This seems to be happening either still or again with version 3.20200202.3-1. I'm getting strings generated like
Posted <time datetime="2007-12-06T05:00:00Z" pubdate="pubdate">Thu 06 Dec 2007 12:00:00 AM EST</time>
which shows up as an error on https://validator.w3.org/ --Luke Schierer
My reading of Joey's response, above, was that (according to the spec at the time),
pubdate="pubdate"is what should be generated, notpubdate="timestamp", and so what you are seeing is expected. However, looking at the current Spec (linked elsewhere in this page),pubdateis not actually a valid attribute any more at all. And indeed, running my own blog through the Validator, I see:
Error: Attribute pubdate not allowed on element time at this point.— Jon, 2020-10-05I've filed a separate bug page for this, since this one is already marked done: pubdate not valid for html5. I've filed a patch. —Jon, 2020-10-06
Otherwise the XML parser chokes.
(indented exactly 4 spaces)
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 1f2ab07..6ab5b56 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1004,7 +1004,7 @@ sub displaytime ($;$$) {
my $time=formattime($_[0], $_[1]);
if ($config{html5}) {
return '<time datetime="'.date_3339($_[0]).'"'.
- ($_[2] ? ' pubdate' : '').
+ ($_[2] ? ' pubdate="'.date_3339($_[0]).'"' : '').
'>'.$time.'</time>';
}
else {
diff --git a/IkiWiki/Plugin/relativedate.pm b/IkiWiki/Plugin/relativedate.pm
index fe8ef09..8c4a1b4 100644
--- a/IkiWiki/Plugin/relativedate.pm
+++ b/IkiWiki/Plugin/relativedate.pm
@@ -59,7 +59,7 @@ sub mydisplaytime ($;$$) {
if ($config{html5}) {
return '<time datetime="'.IkiWiki::date_3339($time).'"'.
- ($pubdate ? ' pubdate' : '').$mid.'</time>';
+ ($pubdate ? ' pubdate="'.IkiWiki::date_3339($time).'"' : '').$mid.'</time>';
}
else {
return '<span'.$mid.'</span>';
--