XML Tutorial · XML Basics · Lesson 7 of 28
XML History & Versions
Where XML came from, how it grew out of SGML into the W3C standard behind documents, configuration and enterprise integration, the versions of XML, XPath, XSLT, XQuery and XML Schema on one timeline, and which to use today.
How XML started
XML descends from SGML (Standard Generalized Markup Language, ISO 8879, 1986), a powerful but very complex standard for documents, and the parent of HTML. By the mid-1990s the web needed something in between: as extensible as SGML, as easy to parse as HTML.
In 1996 a W3C working group chaired by Jon Bosak (Sun Microsystems), with editors Tim Bray, Jean Paoli and C. M. Sperberg-McQueen, set out to define a simplified subset of SGML that any programmer could implement. XML 1.0 became a W3C Recommendation on 10 February 1998. Its design goals included "XML documents should be human-legible and reasonably clear" and "it shall be easy to write programs which process XML documents".
A family of standards followed quickly: Namespaces (1999), XPath and XSLT (1999), XML Schema (2001), then XQuery, XPath 2.0 and XSLT 2.0 (2007), and the 3.x generation (2014 to 2017).
Timeline
- XML XSLT 3.0Current
- Streaming transformations, packages, maps and arrays, JSON input and output (
json-to-xml,xml-to-json)
- Streaming transformations, packages, maps and arrays, JSON input and output (
- XML XPath / XQuery 3.1Current
- Maps and arrays, JSON support (
parse-json), the arrow operator=>
- Maps and arrays, JSON support (
- XML XPath / XQuery 3.0Published
- Higher-order functions,
letin XPath,try/catchandgroup byin XQuery
- Higher-order functions,
- XML Schema 1.1Current
- Assertions (
xs:assert), conditional type assignment, open content
- Assertions (
- XML 1.0 5th editionCurrent
- The edition in force today; broadened the characters allowed in names
- XML XPath 2.0, XSLT 2.0, XQuery 1.0Published
- Typed sequences, regular expressions, grouping (
xsl:for-each-group) and XQuery's FLWOR expressions
- Typed sequences, regular expressions, grouping (
- XML 1.1Published
- Allowed more Unicode characters in names and control characters as references; rarely used
- XML SOAP 1.2Published
- The XML messaging protocol behind classic enterprise web services
- XML Schema 1.0Published
- Data types, namespaces and reusable types; the dominant schema language
- XML XPath 1.0 and XSLT 1.0Published
- Querying and transforming XML; still built into browsers, libxml2 and the JDK
- XML Namespaces in XMLPublished
- Globally unique names with URIs and prefixes
- XML 1.0Historic
- The first W3C Recommendation: a simplified subset of SGML
- XML SGMLHistoric
- ISO 8879, XML's parent and HTML's ancestor
How XML's role changed
- The XML era (1998 to the late 2000s): XML was the default format for configuration, documents, RSS feeds, AJAX responses (the "X" in AJAX) and web services (SOAP and WSDL, 2000 onwards).
- JSON takes over web APIs: from the late 2000s, JSON's simplicity won for browser and REST APIs, and YAML became popular for configuration.
- XML today: dominant where documents, strict contracts and long-lived standards matter: Office Open XML (Word, Excel), SVG, EPUB, banking (ISO 20022), healthcare (HL7 CDA), e-invoicing (UBL, EN 16931), publishing, Android and Java build files, and enterprise integration.
- Security lessons: XML external entity (XXE) attacks became a top web risk (OWASP Top 10, 2017), so modern parsers disable external entities by default.
Version comparison
| 1.0 generation (1999-2001) | 2.0 generation (2007) | 3.x generation (2014-2017) | |
|---|---|---|---|
| XPath | Node sets, strings, numbers, booleans | Typed sequences, if, for, regular expressions |
Maps, arrays, higher-order functions, JSON |
| XSLT | Templates, keys, xsl:sort |
Grouping, multiple outputs, functions | Streaming, packages, JSON in and out |
| Where it runs | Browsers, libxml2/libxslt (lxml, PHP), the JDK | Saxon | Saxon (Java, .NET, JavaScript), BaseX, eXist-db |
Which version should you use? XML 1.0 (fifth edition) for documents. XPath and XSLT 1.0 when you rely on built-in libraries (browsers, Python lxml, PHP, the JDK); Saxon for XPath 3.1, XSLT 3.0 and XQuery 3.1. XML Schema 1.0 for interoperability, plus Schematron for business rules.
Official resources
- Extensible Markup Language (XML) 1.0, Fifth Edition
- Namespaces in XML 1.0
- XML Path Language (XPath) 3.1 and XQuery 3.1
- XSL Transformations (XSLT) 3.0
- XML Schema 1.1 Part 1: Structures
- OWASP XML External Entity Prevention Cheat Sheet
Last reviewed 21 October 2026. Release and support dates come from the official release pages linked above.