diff --git a/xml.cc b/xml.cc index d391171c2..84c51cfbb 100644 --- a/xml.cc +++ b/xml.cc @@ -124,12 +124,13 @@ This is a simple library for writing XML. It handles two main things: keeping track of the element stack, and escaping text where necessary. If you wanted to write this XML: - + + these are the functions you would call. Each one is followed by the text it prints enclosed in ||. -xml_start_document() || +xml_start_document("elem") |\n| xml_newline(); |\n| xml_open_start_tag("elem"); |. +xml_start_document Writes \n. xml_depth Returns the size of the element stack. The library makes it harder but not impossible to make non-well-formed @@ -308,7 +309,7 @@ int xml_write_escaped_v(const char *fmt, va_list va) { return 0; } -/* Write the XML declaration: +/* Write the XML declaration: * and the DOCTYPE declaration: */ int xml_start_document(const char *rootnode) { @@ -316,6 +317,15 @@ int xml_start_document(const char *rootnode) { return -1; if (xml_attribute("version", "1.0") < 0) return -1; + /* Practically, Nmap only uses ASCII, but UTF-8 encompasses ASCII and allows + * for future expansion */ + if (xml_attribute("encoding", "UTF-8") < 0) + return -1; + /* This indicates that parsers don't have to go elsewhere for entity + * declarations and so forth. We had trouble with this when we defined a + * PUBLIC doctype. */ + if (xml_attribute("standalone", "yes") < 0) + return -1; if (xml_close_pi() < 0) return -1; if (xml_newline() < 0)