mathmlNamespace = + " xmlns:" + mathmlPrefix + "=\"http://www.w3.org/1998/Math/MathML\"";
}
+ // XML-compatible language code: in lib/languages, language codes are
+ // given as dictionary file names; HTML5 expects to follow BCP47. This
+ // function implements a simple heuristic that does the conversion.
+ std::string htmlCode = params().language->code();
+ std::replace(htmlCode.begin(), htmlCode.end(), '_', '-');
+
// Directly output the root tag, based on the current type of document.
- string attributes = "xml:lang=\"" + params().language->code() + '"'
+ string attributes = "xml:lang=\"" + htmlCode + '"'
+ " xmlns=\"http://docbook.org/ns/docbook\""
+ " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
+ mathmlNamespace
+ " xmlns:xi=\"http://www.w3.org/2001/XInclude\""
+ " version=\"5.2\"";
+ // Version 5.2 is required for formalgroup.
os << "<" << from_ascii(tclass.docbookroot()) << " " << from_ascii(attributes) << ">\n";
}
output == FullSource || output == OnlyBody || output == IncludedFile;
if (output_preamble) {
+ // HTML5-compatible language code: in lib/languages, language codes are
+ // given as dictionary file names; HTML5 expects to follow BCP47. This
+ // function implements a simple heuristic that does the conversion.
+ std::string htmlCode = params().language->code();
+ std::replace(htmlCode.begin(), htmlCode.end(), '_', '-');
+
os << "<!DOCTYPE html>\n"
- << "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"" << from_ascii(params().language->code()) << "\">\n"
+ << "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"" << from_ascii(htmlCode) << "\">\n"
<< "<head>\n"
- << "<meta name=\"GENERATOR\" content=\"" << PACKAGE_STRING << "\" />\n"
- << "<meta charset=\"UTF-8\" />\n"
- // FIXME Presumably need to set this right
- << "<meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\" />\n";
+ << "<meta name=\"generator\" content=\"" << PACKAGE_STRING << "\" />\n";
docstring const & doctitle = features.htmlTitle();
os << "<title>"
// we are here if the CSS is supposed to be written to the header
// or if we failed to write it to an external file.
if (!written) {
- os << "<style type='text/css'>\n"
+ os << "<style>\n"
<< dstyles
<< "\n</style>\n";
}