The ancestor of both HTML and XML is the Standard Generalized Markup Language, SGML for short. This expansive language allows the creation of complex systems (or applications) of data and includes rules on how to describe and display that data. For example, HTML is an application of SGML. XML, on the other hand, is a subset of SGML, designed to provide a simple, Web-optimized way to represent data that is easier to work with than full-blown SGML.
XML was designed with the Web in mind and brings to the table some benefits not found in SGML. Browsers can use XML in combination with HTML for data display and presentation. Two related specifications have been created to support the delivery of XML over the Web.
The Extensible Linking Language (XLL) specification describes a hyperlinking scheme that not only supports basic HTML hyperlinking but also extended linking, which allows functionality such as letting a single link point to multiple resources. Although SGML would allow a hyperlinking mechanism to be defined, it does not include hyperlinking as part of its original specification.
The Extensible Stylesheet Language (XSL) specification gives support for an XML style sheet mechanism, a feature also not found in straight SGML. Style sheets allow authors to create templates of styles (such as bold, italic, and so on) or combinations of styles, and apply them to elements in an XML document when it is displayed.
Simply put, XML provides 80 percent of the features and functionality of SGML with 20 percent of its complexity. Having a simple, generic way of describing data is very useful. For example, XML can function as a centralized data interchange format, which can be accessed by many types of systems. Many old computer systems (called legacy systems) contain data in disparate formats. System converters are being written to allow many of these to both read and output XML. Thus, data in an XML file produced by one of these legacy systems could be easily entered into other legacy systems, published on the Web, or used by any XML-aware application. Using XML as an intermediary format facilitates data exchange among systems that ordinarily are incompatible.