Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> In 1996, XML was invented.

XML wasn't an original invention; it is specified as a proper SGML subset. From the XML spec:

> The Extensible Markup Language (XML) is a subset of SGML that is completely described in this document.

Now I totally agree that SGML and XML aren't for service payloads and config files. The sole purpose of markup languages is representing structured text. And arguably, SGML fills this role much more adequately than XML today as it can represent (via the SHORTREF mechanism) custom Wiki syntaxes such as markdown and others, and in contrast to XML, can deal with the largest corpus of markup out there eg. can parse HTML with all its minimization features such a omitted tags, enumerated and unquoted attributes, etc. See [1] for a practical introduction (disclaimer: link to a tutorial I held last month at ACM DocEng).

[1]: http://sgmljs.net/docs/sgml-html-tutorial.html



SGML's implied close tags are a pain in the ass though. End tags in XML are overly verbose, but at least they're required.


You control whether an element requires start- and end-element tags in your element declaration via "O" (letter O as in "omissible") in the respective tag omission indicator position:

    <!ELEMENT e - -(f,g,h)    -- no tag omission -->
    <!ELEMENT f O - (#PCDATA) -- start-tag omission -->
    <!ELEMENT g - O (#PCDATA) -- end-tag omission -->
    <!ELEMENT h O O (#PCDATA) -- both start- and end-
                                 tag omission allowed-->
What's painful about end-element tag omission?


Can't find the source, but vaguely remember this line from a Usenet or mailing list post, maybe by Tim Bray:

The lack of </> in XML is a crime against humanity.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: