The World Wide Web Consortium has announced the release of XML Inclusions (XInclude) Version 1.0 as a final W3C Recommendation. Produced by members of the W3C XML Core Working Group, XInclude "provides a generic method for merging XML documents into a single composite document. Using existing XML constructs (elements, attributes and URI references), XInclude contributes to efficient content management at the enterprise level."
The W3C announcement describes XInclude 1.0 as useful "in environments without DTD (Document Type Definition) support, which are more common since the adoption of XML schemas. Unlike the mechanism used in DTDs, i.e., XML external entities, XInclude gives the content author a fallback mechanism in cases where the external document cannot be retrieved, for whatever reason. XInclude allows an application to leverage the syntax in existing XML constructs... and allows an author to choose how to include another XML document in new composite content, either as markup or text. In addition, no XML entity declarations, which were required in the older method when using DTDs, are required for XInclude."
XInclude 1.0 takes advantage of the XML Information Set (Infoset), published as a Second Edition W3C Recommendation in February 2004. Because it merges XML information sets, XInclude "can be used with any version of XML, as well as other existing XML-related specifications, such as the XML-family components XML Schema and XSLT, as well as with XML applications such as the popular Scalable Vector Graphics (SVG) and VoiceXML 2.0 specifications. XInclude 1.0 also takes advantage of the XPointer Framework and can be used to include sub-resources, such as fragments of XML documents, that are identified by a separate xpointer attribute."
XInclude "differs from the linking features described in the W3C's XML Linking Language (XLink), which "specifically links with the attribute value show='embed'. Such links provide a media-type independent syntax for indicating that a resource is to be embedded graphically within the display of the document. XLink does not specify a specific processing model, but simply facilitates the detection of links and recognition of associated metadata by a higher level application. XInclude, on the other hand, specifies a media-type specific (XML-to-XML) transformation; it defines a specific processing model for merging information sets. XInclude processing occurs at a low level, often by a generic XInclude processor which makes the resulting information set available to higher level applications."
Paul Grosso of Arbortext praised XInclude for simplifying the creation and and management of "information components, making it easier for authors and organizations to reuse information in multiple documents and document types. Enabling more frequent reuse of information helps authors work more effectively while increasing the accuracy of information that they deliver. Arbortext enthusiastically contributed to the development of this Recommendation, and earlier this year we delivered support for XInclude in the Arbortext 5 release of our Enterprise Publishing software."
Ed Julson, Engineering Director of Web Technologies at Sun Microsystems said that the W3C XInclude Recommendation "provides a critical piece of infrastructure for compound document authoring not generally available in the post-DTD world. As evidence of our commitment to XInclude and open standards, Java 5.0 ships with support for XInclude today."
Henry Thompson, Reader in Artificial Intelligence and Cognitive Science at the University of Edinburgh, identified Xinclude as one of the W3C Recommendations used in the speech and language technology work at the School of Informatics: "XInclude addresses a key aspect of our work, namely the representation in XML of linguistic annotation which is not strictly hierarchical. XInclude will allow us to make our existing widely-used approach to this problem, know as Stand-off Markup, into full compliance with W3C Recommendations."
XML Inclusions (XInclude) Version 1.0. W3C Recommendation. 20-December-2004. Edited by Jonathan Marsh (Microsoft) and David Orchard (BEA Systems). Produced by members of the XML Core Working Group. Version URL: http://www.w3.org/TR/2004/REC-xinclude-20041220/. Latest version URL: http://www.w3.org/TR/xinclude/. Previous version URL: http://www.w3.org/TR/2004/PR-xinclude-20040930/.
XML Information Set (Second Edition). Edited by John Cowan and Richard Tobin. W3C Recommendation. 4-February-2004. Version URL: http://www.w3.org/TR/2004/REC-xml-infoset-20040204. Latest version URL: http://www.w3.org/TR/xml-infoset. Previous version URL: http://www.w3.org/TR/2003/PER-xml-infoset-20031210.
From the W3C Announcement
Strengthening the XML family, the World Wide Web Consortium (W3C) has published XML Inclusions (XInclude) Version 1.0 as a W3C Recommendation. XInclude 1.0 provides a method for merging multiple XML documents into a single composite document.
Many programming languages provide an inclusion mechanism to support the use of modular content. Once an inclusion mechanism is established, programmers can then write applications that are more powerful. Markup languages, of course, often have need of such a mechanism.
XInclude 1.0 is a generic mechanism for merging XML documents. This function is important for software applications that need to easily combine XML documents.
"For most users, XInclude makes it easier to author content that supports information reuse. Reusing information contributes directly to the bottom line issues: cheaper, more timely, and more accurate results," says Paul Grosso, co-Chair of the XML Core Working Group which produced XInclude.
The W3C was created to lead the Web to its full potential by developing common protocols that promote its evolution and ensure its interoperability. It is an international industry consortium jointly run by the MIT Computer Science and Artificial Intelligence Laboratory (CSAIL) in the USA, the European Research Consortium for Informatics and Mathematics (ERCIM) headquartered in France and Keio University in Japan. Services provided by the Consortium include: a repository of information about the World Wide Web for developers and users, and various prototype and sample applications to demonstrate use of new technology. More than 350 organizations are Members of W3C... [see the complete text]
- Announcement 2004-12-20: "W3C Issues XInclude 1.0 as a W3C Recommendation. XInclude Makes It Easier to Create Reusable Content." [source]
- Testimonials for W3C's Testimonials for W3C's XML Inclusions (XInclude), Version 1.0. From Arbortext, Sun Microsystems, and University of Edinburgh.
- XML Inclusions (XInclude) Version 1.0. W3C Recommendation. 20-December-2004.
- XInclude Version 1.0. XML format (non-normative).
- XML Inclusions (XInclude) Version 1.0 Errata
- Translations of XInclude
- Mail Archives for W3C public comment list 'firstname.lastname@example.org'
- XInclude Implementation Report, XInclude test results, 16-September-2004 or later. The report is based upon implementation tests from Markup Technology, Elliotte Rusty Harold's XOM (XML object model), and libxml (XML C parser and toolkit developed for the Gnome project).
- XML Inclusions (XInclude) Conformance Test Suites. The XInclude-Test-Suite Framework consists of master XML description file associated with a DTD that was developed in coordination with the W3C XML Core Working Group.
- XInclude 1.0 Test Suite. W3C XML Core Working Group. 3-November-2004.
- XInclude Conformance Test Suites Process Document
- Earlier: "W3C Issues XML Inclusions (XInclude) Version 1.0 as a Proposed Recommendation." News story 2004-09-30.
- W3C Extensible Markup Language (XML) Activity Statement
- W3C XML Core Working Group Public Page
- W3C Extensible Markup Language (XML) home page
- Related technology: "Darwin Information Typing Architecture (DITA XML)."
- Literature on XInclude:
"Modular Information: Using XInclude to Support Re-Use for Authoring and Production." By W. Eliot Kimber (Innodata Isogen). Presented at XML Europe 2004. "The W3C's XML Inclusions (XInclude) specification provides a basic mechanism that standardizes the way that XML information components are linked in order to establish use-by-reference (re-use) relationships. This simple mechanism is relatively easy to implement using most XML processing technologies (XSLT, Java, etc.). The use of XInclude provides a standard, generic, non-proprietary facility for creating and managing compound documents. This paper first discusses the basic technical and practical aspects of XML information re-use. It then describes basic approaches for using XInclude in typical authoring support and document production systems to create and manage technical documents organized as compound documents that include re-used components..."
"Transclude with XInclude (and XPointer!)" By Bob DuCharme. From O'Reilly Developer Weblogs. May 06, 2004. "Transclusion is the inclusion of all or part of a resource within another one. The name and earliest implementations, like the name and earliest implementations of hypertext, came from Ted Nelson. XML's original way to do this, external general entities, could only transclude entire documents, and its SGML-rooted syntax scared some people off. I've written of a way to implement transclusion with XSLT, which does let you insert a subtree of another document by specifying that subtree with an XPath expression, but it's a bit kludgy. The best way to perform transclusion in XML is XInclude, for several reasons..."
"Use XInclude to synchronize WSDL with source schemata." By Uche Ogbuji. From IBM developerWorks (January 22, 2004). "In the document/literal style of Web services, the schemas of the interchange formats are often based on an existing document standard. This can cause problems synchronizing WSDL files with the standard schemata. This tip shows how to use XInclude to incorporate external schema fragments into a WSDL file. XInclude is simple and is supported by many XML tools. It is a handy tool for many situations, and can certainly help improve the maintenance of document/literal style WSDL documents... W3C XInclude specifies a processing model and syntax for expanding a reference to an external document into the actual XML in that document (or a part thereof). This process is called inclusion and is similar to, say, #include in C or C++. In technical terms, XML inclusion is accomplished by merging a number of XML information sets into a single composite Infoset. If a schema file is hosted somewhere, it can then be included in a WSDL file."
"Combining XML Documents with XInclude." By Oleg Tkachenko. From Microsoft MSDN. April 2004. 15 pages. "The spirit of modular programming dictates that you break your tasks up into small manageable chunks. This dictum is as also applicable when producing XML documents. It often makes sense to build a large document from several smaller ones. Some situations that call for this chunking include composing a single book out of multiple chapters, building a Web page out of separately maintained documents, or adding a standard footer such as a corporate disclaimer into document... This article explores the problem of how to construct a single XML document from multiple documents. It focuses on XML Inclusions (XInclude), a general-purpose mechanism for facilitating modularity in XML."