[libxml2] Allow HTML serializer to output HTML5 DOCTYPE



commit 7607d9dd450275911eec5fcb66b69aacd13a4cc8
Author: Shaun McCance <shaunm gnome org>
Date:   Fri Apr 3 22:52:36 2015 +0800

    Allow HTML serializer to output HTML5 DOCTYPE
    
    For https://bugzilla.gnome.org/show_bug.cgi?id=747301
    
    Use simple HTML5 DOCTYPE for about:legacy-compat
    
    HTML5 uses a DOCTYPE without a PUBLIC or SYSTEM identifier. It looks
    like this:
    
    <!DOCTYPE html>
    
    I can't use XSLT to output this, because to get a DOCTYPE I have to
    provide a PUBLIC or SYSTEM identifier. Luckily, the standards folks
    recognized this and provided this semantically equivalent form for the
    HTML DOCTYPE:
    
    <!DOCTYPE html SYSTEM "about:legacy-compat">
    
    But people don't like seeing the "legacy" identifier in their output.
    They'd rather see the shiny new DOCTYPE. Since we know that
    about:legacy-compat is defined by the W3C to be semantically equivalent
    to the sans-SYSTEM DOCTYPE, we could just special-case it in the HTML
    serializer in libxml2. So if you set the SYSTEM identifier to
    "about:legacy-compat", you get an HTML5 short-form DOCTYPE.

 HTMLtree.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
---
diff --git a/HTMLtree.c b/HTMLtree.c
index 5c57fc5..2fd0c9c 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -668,7 +668,8 @@ htmlDtdDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc,
            xmlOutputBufferWriteString(buf, " ");
            xmlBufWriteQuotedString(buf->buffer, cur->SystemID);
        }
-    }  else if (cur->SystemID != NULL) {
+    } else if (cur->SystemID != NULL &&
+              xmlStrcmp(cur->SystemID, BAD_CAST "about:legacy-compat")) {
        xmlOutputBufferWriteString(buf, " SYSTEM ");
        xmlBufWriteQuotedString(buf->buffer, cur->SystemID);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]