From 55afc6fd496de4e75c27d725c2bf1470cc3cf5aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Tue, 1 Aug 2017 19:28:16 +0700 Subject: Add xml:space="preserve" in XML output when appropriate With current HTML escaping, sometimes we may produce an XML tag like Many XML parsers consider these spaces insignificant and strip them out but we need this. There's actually a test case like this in spec.txt (search "A code block can have all empty lines as its content:") and without proper hinting, an external xml->html converter will fail the spec. XML standard covers this case. If xml:space is "preserve", then whitespaces are significant and should be kept. Add this hint for text, code, code_block, html_inline and html_block tags. --- src/xml.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/xml.c b/src/xml.c index 4898cd2..48674cc 100644 --- a/src/xml.c +++ b/src/xml.c @@ -60,7 +60,7 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type, case CMARK_NODE_CODE: case CMARK_NODE_HTML_BLOCK: case CMARK_NODE_HTML_INLINE: - cmark_strbuf_puts(xml, ">"); + cmark_strbuf_puts(xml, " xml:space=\"preserve\">"); escape_xml(xml, node->as.literal.data, node->as.literal.len); cmark_strbuf_puts(xml, "as.code.info.data, node->as.code.info.len); cmark_strbuf_putc(xml, '"'); } - cmark_strbuf_puts(xml, ">"); + cmark_strbuf_puts(xml, " xml:space=\"preserve\">"); escape_xml(xml, node->as.code.literal.data, node->as.code.literal.len); cmark_strbuf_puts(xml, "