 | Level: Introductory Uche Ogbuji (uche@ogbuji.net), Principal Consultant, Fourthought, Inc.
17 Feb 2004 The world of XML is vast and growing, with a huge variety of standards and technologies that interact in complex ways. It can be difficult for beginners to navigate the most important aspects of XML, and for users to keep track of new entries and changes in the space. XML is a basic syntax upon which you develop local and global vocabularies. The key to its success is that several very important data formats are defined as XML vocabularies. In this article, Uche Ogbuji presents the most important of these.
XML started strong and has grown quite rapidly. It has proven itself a very valuable technology, but it can be an intimidating one, when one considers all the moving parts that fall under the term "XML". In this series of articles, I provide a summary of what I see as the most important XML technologies, and discuss how they each fit into the greater scope of things in the XML world. I also recommend tutorials and other useful resources for evaluating and learning to use each technology.
All the technologies I present here are standards, although that word is itself a bit slippery. Standards come in all forms, and multiple standards often compete in the same space. I follow the practical approach of defining a standard as any specification that is significantly adopted by a diversity of vendors, or is recommended by a respectable, vendor-neutral organization.
In the first article in this series, I focused on core XML technologies. (See the sidebar in that article for an overview of the various standards development bodies and how specifications are categorized.)
In my second article, I covered standards relating to XML processing by developers. In this one, I present a selection of the most important XML applications (less precisely known as vocabularies). Like SGML before it, XML is a meta-language: It is a syntactic basis for defining further languages. Those languages (such as HTML in the case of SGML, and XHTML in the case of XML) are the applications -- not to be confused with applications of programmer code (software applications), such as IBM DB2.
In Part 4, I'll collate all the information I've presented so far into a convenient cross-reference.
XHTML
XHTML 1.0 [W3C Recommendation] is mostly HTML 4 recast as well-formed XML. HTML is an SGML application, and when XML was developed as a simplification and specialization of SGML for the Web, HTML (itself the lingua franca of the Web) became the chief candidate for adoption to XML. The result is a variation named XHTML. The goal of the XHTML work is an HTML language for which parsing is simpler (because of XML's stricter syntax). XHTML is easily processed using off-the-shelf XML tools, and strives to better separate content from presentation. XHTML is one of the oldest XML applications and has a huge number of contributing interests, resulting in many parts and versions. I'll do my best to summarize the lot.
XHTML 1.0 defines distinct DTDs and namespaces to correspond to the three HTML 4 DTDs -- Strict, Transitional, and Frameset. Modularization of XHTML [W3C Recommendation] provides a framework for breaking down XHTML into separate modules defined as distinct DTDs. For example, all element and attribute types used for defining lists would be in one module, and element types geared toward presentation would be in another module. In this way, XHTML can be developed and refined by adding, subtracting, and updating generally independent modules. The first step along these lines was XHTML Basic [W3C Recommendation] which defines the minimum set of XHTML modules required for any language that counts as XHTML. XHTML Basic in itself could be used as the content language for Web clients such as mobile phones, PDAs, pagers, and set-top boxes. XHTML 1.1 [W3C Recommendation] is basically the XHTML 1.0 Strict DTD broken down using the module framework.
XHTML 2.0 [in development] is a rewrite of XHTML without considerations of backwards compatibility with HTML. The idea is pretty much to start from scratch in developing a content language for the Web, learning from the past without being enslaved to the past. Examples of big changes include:
- Eliminating
<br/>, <img/>, and other elements considered excessively presentation-oriented
- Eliminating HTML-style forms in favor of XForms (previously covered in this series)
- Eliminating HTML-style linking elements in favor of HLink (previously covered in this series)
- Replacement of many JavaScript-driven dynamic tasks with XML Events
- Replacement of HTML-style frames with XFrames
More importantly, XHTML 2.0 makes many additions that improve the ability of authors to express content structure and meaning. Breaking backwards compatibility has been controversial. Some commentators say that maintaining the (X)HTML name and bumping the revision number will lead to confusion. Others say that the changes are much needed and that XHTML really still is an Extensible Hypertext Markup Language, so the name remains appropriate.
XHTML is often used with other embedded formats, such as MathML, RDF, SVG, SMIL, and VoiceXML (all covered below). Such combination documents are called multi-modal or non-monolithic. The W3C, ISO, and other organizations are putting a good deal of effort into encouraging strong support for such documents.
Recommended introductions and tutorials
References and other resources
Docbook
Docbook was originally a popular SGML format for authoring books and documentation, especially of a more technical nature. An XML version was added and DocBook XML V4.2 [OASIS Committee Specification] is the latest incarnation. Docbook is very popular and has impressive support in tools, many of which are quite mature. It is well respected for being a good example of how to avoid mixing presentation considerations into content formats. Recently, some developers have grumbled about how much baggage it still carries from all its older versions, and there has been a good deal of talk (even by Norm Walsh, one of its key developers) about starting afresh with a new, non-backwards compatible version of the format.
Even older than Docbook is Text Encoding Initiative (TEI), a document format somewhat similar in scope to Docbook, but differentiated in that it generally addresses humanities rather than technical texts. TEI itself is not an SGML or XML application, but rather a set of guidelines from which languages (DTDs) can be constructed. The most commonly used TEI variant is TEI Lite [Community standard]. TEI has a reputation for complexity that has somewhat dampened its mainstream adoption, but it is very well maintained and quite enthusiastically used in some communities.
Recommended introductions and tutorials
References and other resources
- DocBook.org is primarily a site covering DocBook: The Definitive Guide by Norman Walsh (O'Reilly & Associates, 1999). It hosts the entire book's contents online and is well hyperlinked -- an excellent, detailed reference to all of Docbook.
- The DocBook Wiki is a collaborative space for information and discussion of the language.
XSL-FO
Extensible Stylesheet Language Formatting Objects (XSL-FO) [W3C Recommendation] is a presentation language defined in XML. (Note: The title of the linked specification is "Extensible Stylesheet Language (XSL)", but the content is actually just the formatting objects aspects of XSL.) XSL-FO is an XML format that can be used by any user agent to render content to the precise specifications given by the developer. Its role is similar to that of XHTML in Web user interfaces, but it is more complex and allows for the expression of formatting details suitable for print publication. These details are not unlike those specified in Cascading Style Sheets (CSS -- covered earlier in this series), but in XSL-FO the details make up the substance of the markup language itself rather than instructions for rendering separate markup.
XSL-FO is often used as an output format from XSLT (covered earlier in this series). In fact, originally XSLT and XSL-FO were to be a single system called XSL, but the working group wisely split the two parts into two separate specifications. A variety of open source and commercial tools can translate XSL-FO to TeX, Adobe's PDF, and other (non-XML) output formats suitable for print and typesetting. XSL-FO has become very popular because of this usage pattern, but XSL-FO has always aimed to work as a native rendering format for WYSIWYG tools and the like, and it is beginning to gain traction in such usage. XSL-FO 1.1 [in development] is an update to the language that adds features such as change annotations, indexes, bookmarks, and enhancements to handling of graphics.
Recommended introductions and tutorials
- Doug Tidwell's tutorial "XSL Formatting Objects (XSL-FO) basics" (developerWorks, February 2003) is a friendly starting point. His follow-up, "XSL-FO advanced techniques" (developerWorks, February 2003) shows you how to work with XSL-FO to perform more complex tasks like formatting data, creating complex documents, and converting HTML elements to formatting objects and thence to PDF documents. Finally, his "HTML to FO conversion guide" (developerWorks, February 2003) demonstrates how to use XSLT templates to convert commonly used HTML elements to formatting objects for easy transformation to PDF.
- "Using XSL-FO to create printable documents" by Rodolfo M. Raya (developerWorks, November 2001) focuses on the use of XSL-FO for printable database reports.
- "Using XSL Formatting Objects" by J. David Eisenberg is a brief introduction that highlights the strong internationalization of XSL-FO.
References and other resources
- ZVON offers an XSL FO reference that maps out some relationships of elements but does not go into much depth on each element's semantics.
- Dave Pawson's XSL FAQ covers XSL-FO as well as XSLT and XPath.
SVG
Scalable Vector Graphics (SVG) 1.1 [W3C Recommendation] is a language for describing two-dimensional graphics. It is primarily a vector graphics language, though some raster graphics features are available. SVG has the remarkable ambition of providing a practical and flexible graphics format that's represented in the notoriously verbose XML, and it has been quite successful in this. SVG's feature set includes nested transformations, clipping paths, alpha masks, raster filter effects, template objects, and of course extensibility. SVG also supports animation, zooming and panning views, a wide variety of graphic primitives, grouping, scripting, hyperlinks, structured metadata, CSS, a specialized DOM superset (DOM and CSS were covered previously), and easy embedding in other XML documents. Some of the design choices in SVG have been mildly controversial, including the fact that vector paths are expressed as a space-delimited lists of numbers within individual attributes, but in the main SVG has been one of the most widely and warmly embraced XML applications. The specification has been translated to several languages.
SVG 1.1 is an update to SVG 1.0 [W3C Recommendation] that adds a few features and incorporates many corrections. The big difference is that SVG 1.1 is modularized in a similar fashion to XHTML 1.1+. This modularization allows for extension of SVG, and even reduction of SVG, as practiced in Mobile SVG Profiles: SVG Tiny and SVG Basic [W3C Recommendation] which define reduced sets of SVG modules that are suitable for mobile phones and PDAs. SVG 1.2 [in development] looks to add a whole spectrum of new tools that would make SVG a full-blown application platform in addition to a graphics format.
Recommended introductions and tutorials
References and other resources
- The SVG Wiki, a collaborative resource index and discussion page, is a public clearinghouse for all manner of information on the language.
- ZVON's SVG Reference serves as a map of element relationships, with some examples.
VoiceXML
Voice Extensible Markup Language (VoiceXML) Version 2.0 [W3C Recommendation] is a language for creating audio, speech, and telephony applications. It includes audio dialogs that feature synthesized speech, digitized audio, recognition of spoken and telephone tone dialing input, and recording of spoken input. It seeks to bring the advantages of Web-based development and content delivery to interactive voice response applications. VoiceXML is part of the W3C Speech Interface Framework [in development], which also includes other specifications that I don't mention because they are rather obscure outside of the telephony industries. VoiceXML 2.0 marks the move of VoiceXML standardization to the W3C from the VoiceXML Forum, which still works to promote the technology. Numerous patent claims have been made relating to VoiceXML, several of which imply that VoiceXML users may face royalties and licensing fees.
Recommended introductions and tutorials
References and other resources
MathML
Mathematical Markup Language (MathML) 2.0 [W3C Recommendation] is an XML language whose intent, quoting from the specification, is "to facilitate the use and re-use of mathematical and scientific content on the Web, and for other applications such as computer algebra systems, print typesetting, and voice synthesis. MathML can be used to encode both the presentation of mathematical notation for high-quality visual display, and mathematical content, for applications where the semantics plays more of a key role such as scientific software or voice synthesis." MathML is often used to represent equations, formulae, and the like in education, scientific discourse, industrial specifications, regulatory content, and more. This version adds relatively few features to MathML 1.01 [W3C Recommendation]. MathML is often used with XHTML, SVG, and other applications.
Recommended introductions and tutorials
References and other resources
- ZVON's MathML 2 reference is more of an index that maps the relationships between elements.
Synchronized Multimedia Integration Language (SMIL)
SMIL 2.0 [W3C Recommendation], in the words of the W3C, "enables simple authoring of interactive [audio/visual] presentations. SMIL is typically used for ['rich media' or multimedia] presentations which integrate streaming audio and video with images, text or any other media type. SMIL is an easy-to-learn HTML-like language, and many SMIL presentations are written using a simple [text editor]." SMIL is a product of the W3C Synchronized Multimedia activity, and is an update to SMIL 1.0 [W3C Recommendation] that adds features relating to animation, metadata, content control, linking, timing and synchronization, time manipulations, transition effects, and more.
Recommended introductions and tutorials
RDF
For almost as long as the W3C has worked toward next-generation markup technology in the form of XML, it has also worked towards next-generation technology for formal description of Web resources. Resource Description Framework (RDF) [W3C Recommendation] is a model for describing collections of statements about a Web resource. These statements are conceptualized as triples each of which has a subject, which is a URI (covered earlier in this series), a predicate, which is also a URI, and an object, which is a URI or literal data value. To get the flavor of such statements, think of an HTML meta tag that gives the description of a Web page. If recast as RDF, the subject would be the URI of the Web page itself, the predicate would be a standard URI signifying a general description, and the object would be the actual text of the description. By making heavy use of URIs, RDF seeks to minimize ambiguity about the identity of components of these statements, and thus make them formal enough for machine processing. Whether RDF succeeds in this goal is controversial, but RDF is well-known for its very active community and broad range of tools.
RDF is the backbone of the W3C's Semantic Web activity; the Semantic Web is a vision of a Web not just of presentation of content, but also of annotation of content to help frame its meaning. As an example, in a Semantic Web, one can make a distinction between the concept of "python", a kind of snake, and "python", a computer programming language, while describing Web resources. RDF is standardized in a large stack of specifications, including:
Web Ontology Language (OWL) [W3C Recommendation] is an application of RDF, often encoded in RDF/XML, that adds a rich vocabulary that can be used to formally classify and reason about RDF resources.
Recommended introductions and tutorials
- My article "The Languages of the Semantic Web" discusses the motivations and basics of RDF and Semantic Web technologies primarily geared toward Web developers.
- The W3C's RDF Primer is a pretty decent starting point.
References and other resources
XML Topic Maps
Topic Maps [ISO International Standard, number 13250] provide a system for organizing information and are in some ways a competing Semantic Web technology to RDF. In particular, XML Topic Maps [Part of ISO 13250] are a Web-friendly version of Topic Maps, using XML syntax and URIs as identifiers. Topic Maps define a graph-like model similar to that of RDF, but more nuances are related to the fact that a key provision of Topic Maps is the separation of actual concepts from their computer representations. Whether the way this is done in Topic Maps is an essential facility in the Semantic Web or rather adds unnecessary complications is an endless point of debate between proponents of Topic Maps and RDF. XML Topic Maps use a very clean XML syntax that's based on XLink (covered earlier in this series).
Recommended introductions and tutorials
References and other resources
Just scratching the surface
Throughout this series of articles, I had to make hard choices on what to cover in the available space. I was simply not able to include much information, especially for this article covering XML applications. One of the benefits as well as curses of XML is that it makes it so easy for anyone to define his or her own languages. A truly overwhelming number of vocabularies that currently exist could be called standards of one form or another. I have maintained my focus on the most popular and most broadly adopted across a diversity of interests.
You can also find numerous standards for formal business document interchange, and you may want to check out the Resources I list below to get an idea of the innumerable options, both proprietary and standard. I also cover many such standards in my Thinking XML column.
In the next article, the final one in this series, I shall collate all the information and listings I've presented so far into a convenient cross-reference.
Resources - Read the first installment of this series on XML standards, which focuses on what Uche Ogbuji considers to be the core XML technologies (developerWorks, January 2004). In the second installment of this series on XML standards, the author focuses on XML processing technologies (developerWorks, February 2004). Part 4 is a detailed cross-reference of all the standards covered in this series on XML standards (developerWorks, March 2004).
- Read The XML Bible, 2nd Edition, by Elliotte Rusty Harold (John Wiley & Sons, 2001), if you need to gain as solid a foundation in XML as possible, but are only willing to buy one book. Five chapters are available freely online covering XSLT, XSL-FO, XLink, XPointer, and WXS.
- Visit the Web sites of the most significant organizations where XML standards are developed:
- Simon St. Laurent's "An Outsider's Guide to the W3C" is a FAQ that clarifies many aspects of the organization that brought you HTML and XML.
- Look up nearly any aspect of XML technology in Robin Cover's The Cover Pages, an XML resource guide of staggering comprehensiveness.
- Visit the xmlhack news site for XML developers, which Uche Ogbuji helps to edit.
- Find more XML resources on the developerWorks XML zone, including Uche Ogbuji's Thinking XML column.
- Browse for books on these and other technical topics.
- Learn how you can become an IBM Certified Developer in XML 1.1 and related technologies.
About the author  | 
|  | Uche Ogbuji is a consultant and co-founder of Fourthought Inc., a software vendor and consultancy specializing in XML solutions for enterprise knowledge management. Fourthought develops 4Suite, an open source platform for XML, RDF, and knowledge management applications. Mr. Ogbuji is also a lead developer of the Versa RDF query language. He is a computer engineer and writer born in Nigeria, living and working in Boulder, Colorado, USA. You can contact Mr. Ogbuji at uche@ogbuji.net. |
Rate this page
|  |