- From: SVG Working Group repository <cam@mcc.id.au>
- Date: Mon, 20 Aug 2012 19:26:04 -0700
- To: public-svg-wg@w3.org
details: https://svgwg.org/hg/svg2-tools/rev/fc11ef98626e
branches:
changeset: 57:fc11ef98626e
user: Cameron McCormack <cam@mcc.id.au>
date: Tue Aug 21 12:26:32 2012 +1000
description:
Fixes for validation and to output XHTML5.
diffstat:
publish/definitions.js | 2 +-
publish/processing.js | 45 ++++++++++++++++++++++++++++++++++++---------
2 files changed, 37 insertions(+), 10 deletions(-)
diffs (208 lines):
diff --git a/publish/definitions.js b/publish/definitions.js
--- a/publish/definitions.js
+++ b/publish/definitions.js
@@ -413,17 +413,17 @@ function loadInto(filename, base, defs)
forEachChild(doc.documentElement, 'term', function(t) {
var term = new Term({
name: t.getAttribute('name'),
href: utils.resolveURL(base, t.getAttribute('href')),
});
if (t.firstChild) {
- term.markup = t;
+ term.markup = utils.cloneChildren(t);
}
defs.terms[normalizeTermName(term.name)] = term;
});
}
function resolve(defs) {
for (var name in defs.elements) {
diff --git a/publish/processing.js b/publish/processing.js
--- a/publish/processing.js
+++ b/publish/processing.js
@@ -171,17 +171,17 @@ function hasElementSummaryTables(n) {
return false;
}
exports.addExpanderScript = function(conf, page, doc) {
if (!hasElementSummaryTables(doc)) {
return;
}
- doc.body.appendChild(utils.parse('<script src="style/expanders.js"></script>'));
+ doc.body.appendChild(utils.parse('<script src="style/expanders.js" type="text/javascript"></script>'));
}
// -- Add chapter number to <h1> and Table of Contents below it ---------------
function generateTOC(conf, page, className) {
function newTOCUL() {
return utils.parse('<ul class="{{class}}"></ul>', { class: className });
@@ -199,17 +199,19 @@ function generateTOC(conf, page, classNa
a.appendChild(utils.parse('<span class="secno">{{number}}{{section}}.</span> ',
{ number: conf.isSingleChapter ? '' : conf.pages[page].formattedNumber + '.',
section: item.section.number }));
}
a.appendChild(item.section.title.cloneNode(true));
if (item.children) {
var childUL = newTOCUL();
generate(childUL, item.children);
- li.appendChild(childUL);
+ if (childUL.firstChild) {
+ li.appendChild(childUL);
+ }
}
ul.appendChild(li);
}
}
var ul = newTOCUL();
var sectionHierarchy = conf.getSectionHierarchy(page);
if (sectionHierarchy && sectionHierarchy.children) {
@@ -335,17 +337,20 @@ function doFullTOC(conf, page, n) {
li.firstChild);
} else if (pageType == 'appendix') {
li.firstChild.insertBefore(utils.parse('Appendix {{number}}: ',
{ number: conf.pages[pageName].formattedNumber }),
li.firstChild.firstChild);
}
if (pageType != 'page') {
- li.appendChild(generateTOC(conf, pageName, 'toc'));
+ var pageTOC = generateTOC(conf, pageName, 'toc');
+ if (pageTOC.firstChild) {
+ li.appendChild(pageTOC);
+ }
}
ul.appendChild(li);
}
}
utils.replace(n, ul);
}
@@ -470,17 +475,18 @@ function formatElementAttributes(conf, e
});
return ul;
}
function formatElementInterfaces(conf, element, n) {
var ul = utils.parse('<ul class="no-bullets"></ul>');
element.interfaces.forEach(function(name) {
- ul.appendChild(conf.definitions.formatInterfaceLink(name, n));
+ ul.appendChild(utils.parse('<li>{{interface}}</li>',
+ { interface: conf.definitions.formatInterfaceLink(name, n) }));
});
return ul;
}
function doElementSummary(conf, page, n) {
var name = n.getAttribute('name');
var element = conf.definitions.elements[name];
var e = utils.parse('<div class="element-summary"><div class="element-summary-name"><span class="element-name">‘{{name}}’</span></div><dl>' +
@@ -534,29 +540,29 @@ function doIncludeLatestEditorsDraft(con
{ href: conf.versions.cvs }));
}
function doPreviousVersion(conf, page, n) {
replaceWithURLLink(n, conf.versions.previous);
}
function doCopyright(conf, page, n) {
- utils.replace(n, utils.parse('<p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © {{year}} <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.eu/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p>',
+ utils.replace(n, utils.parse('<p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © {{year}} <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p>',
{ year: conf.publicationYear }));
}
function doLocalLink(conf, page, n) {
var href = utils.resolveURL(conf.thisVersion, n.getAttribute('href'));
utils.replace(n, utils.parse('<a href="{{href}}">{{content}}</a>',
{ href: href,
content: n.firstChild ? utils.cloneChildren(n) : href }));
}
function doAttributeTable(conf, page, n) {
- var table = utils.parse('<table class="proptable attrtable" summary="Alphabetic list of attributes"><thead><tr><th>Attribute</th><th>Elements on which the attribute may be specified</th><th title="Animatable"><a href="animate.html#Animatable">Anim.</a></th></tr></thead><tbody></tbody></table>');
+ var table = utils.parse('<table class="proptable attrtable"><thead><tr><th>Attribute</th><th>Elements on which the attribute may be specified</th><th title="Animatable"><a href="animate.html#Animatable">Anim.</a></th></tr></thead><tbody></tbody></table>');
var attributes = [];
utils.values(conf.definitions.elements).forEach(function(e) {
e.specificAttributes.forEach(function(a) {
attributes.push([[a.name, e.name].toString(), a.formatLink(true), [e.formatLink(true)], a.animatable]);
});
});
utils.values(conf.definitions.attributeCategories).forEach(function(cat) {
var elements =
@@ -595,17 +601,17 @@ function doAttributeTable(conf, page, n)
elements: utils.fragment(a[2], ', '),
animatable: a[3] ? '✓' : '' }));
});
utils.replace(n, table);
}
function doElementIndex(conf, page, n) {
var elements = Object.keys(conf.definitions.elements).sort().map(function(name) { return conf.definitions.formatElementLink(name) });
- var index = utils.parse('<ul class="element-index" summary="Alphabetic list of elements">{{elements}}</ul>',
+ var index = utils.parse('<ul class="element-index">{{elements}}</ul>',
{ elements: elements.map(function(e) { return utils.parse('<li>{{link}}</li>', { link: e }) }) });
utils.replace(n, index);
}
function doElementCategory(conf, page, n) {
var cat = conf.definitions.elementCategories[n.getAttribute('name')];
var elts = cat.elements.concat().sort();
utils.replace(n, utils.englishList(elts.map(function(e) { return conf.definitions.formatElementLink(e) })));
@@ -712,26 +718,47 @@ exports.formatMarkup = function(conf, pa
n.parentNode.insertBefore(a[i], n);
}
n.parentNode.removeChild(n);
return a;
} else {
n.parentNode.removeChild(n);
}
}
+ n.removeAttribute("edit:toc");
}
});
// Remove the XML declaration "processing instruction".
if (doc.firstChild.nodeType == doc.PROCESSING_INSTRUCTION_NODE) {
doc.removeChild(doc.firstChild);
}
- // Add a DOCTYPE.
- doc.insertBefore(doc.implementation.createDocumentType("html", "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"), doc.firstChild);
+ // Remove any unnecessary xmlns="" attributes.
+ utils.forEachNode(doc.documentElement, function(n) {
+ if (n.nodeType == n.ELEMENT_NODE) {
+ if (n.parentNode.nodeType == n.ELEMENT_NODE &&
+ n.parentNode.namespaceURI == n.getAttribute("xmlns")) {
+ n.removeAttribute("xmlns");
+ }
+ n.removeAttribute("xmlns:edit");
+ }
+ });
+
+ // Replace any HTML4-style <meta http-equiv="Content-Type"> element with
+ // an HTML5-style <meta charset>.
+ var head = utils.child(doc.documentElement, 'head');
+ var meta = utils.child(head, 'meta');
+ if (meta) {
+ head.removeChild(meta);
+ }
+ head.insertBefore(utils.parse('<meta charset="UTF-8"/>'), head.firstChild);
+
+ // Add an HTML5 DOCTYPE.
+ doc.insertBefore(doc.implementation.createDocumentType("html", "", ""), doc.firstChild);
};
// -- Handle automatic linking with <a>. --------------------------------------
exports.processLinks = function(conf, page, doc) {
function shouldOmitQuotes(n) {
if (n.parentNode.localName != 'th') {
Received on Tuesday, 21 August 2012 02:27:09 UTC