Sustainability of Digital Formats: Planning for Library of Congress Collections |
|
![]() |
|
Introduction | Sustainability Factors | Content Categories | Format Descriptions | Contact |
Full name | Markup Compatibility and Extensibility (MCE), ISO 29500-3:2008-2015, also ECMA-376, Editions 1-5. |
---|---|
Description |
MCE, Markup Compatibility and Extensibility defines a set of conventions for forward compatibility of markup specifications, applicable not only to the Open Office XML (OOXML) specifications defined in ISO/IEC 29500, but also to other markup specifications based on XML. These conventions allow XML documents created by later versions of applications to be handled by earlier versions. Files in any of the primary OOXML file formats, .docx,. pptx, or .xslx, may include MCE constructs, for example, so that Office 2007 can read files created in later versions of Office that use text styles or slide transitions not defined in ISO/IEC 29500. MCE is also employed in ECMA-388: Open XML Paper Specification (OpenXPS), a standard used for print drivers. In OpenXPS, MCE may be used by different printer manufacturers to support tailored printer characteristics. This description is based on the MCE format as specified in part 3 of ISO/IEC 29500:2012, Information technology -- Document description and processing languages -- Office Open XML File Formats (OOXML). However, since the specification has very few changes since first standardized as ECMA-376, Part 3 in 2006, this description can be read as applying to all versions published by Ecma International and by ISO/IEC through 2015. See Notes below for more detail on the chronological versions and minor differences. In this format description, the names MCE and MCE/OOXML_2012 should be considered equivalent. ISO/IEC 29500-3:2015 is a complete rewrite of the document but the only changes to the specification were small corrections and the removal of some functionality that had not been used by Microsoft or any other implementers. The MCE specification defines a small set of XML elements and attributes, in the MCE namespace (identified by http://schemas.openxmlformats.org/markup-compatibility/2006). Applications producing documents can use these elements and attributes to guide applications consuming the documents as to how best to handle elements and attributes those applications might not understand. MCE elements and attributes let producing applications use features added in new versions or extensions of a markup specification for new documents, in a way that remains interoperable with consuming applications that do not understand these features. Use of MCE typically involves pre-processing documents containing MCE elements and attributes to produce a document that will be understood by the consuming application. MCE elements and attributes support several compatibility and extension constructs, as summarized below:
In 2016 some guidelines for the use of MCE were published in ISO/IEC TR 30114-1:2016 Information technology -- Extensions of Office Open XML file formats -- Part 1: Guidelines. |
Production phase | MCE encoding can be used in any production phase. Original use was for Office Open XML office documents, which are certainly created (initial state), exchanged for editing and review (middle-state) and may be published (final-state) as files that employ elements and attributes from the Markup Compatibility and Extensibility namespace. |
Relationship to other formats | |
Subtype of | OOXML Family, OOXML (ISO/IEC 29500) Format Family |
Used by | Application-specific formats in the OOXML Format Family, including those listed below. See also OPC/OOXML_2012. |
Used by | DOCX/OOXML_2012, DOCX Transitional (Office Open XML), ISO 29500:2008-2012, ECMA-376. Uses WordprocessingML in an OPC/OOXML_2012 package. |
Used by | XLSX/OOXML_2012, XLSX Transitional (Office Open XML), ISO 29500:2008-2012, ECMA-376. Uses SpreadsheetML in an OPC/OOXML_2012 package. |
Used by | PPTX/OOXML_2012, PPTX Transitional (Office Open XML), ISO 29500:2008-2012, ECMA-376. Uses PresentationML in an OPC/OOXML_2012 package. |
Used by | OpenXPS, ECMA-388: Open XML Paper Specification . OpenXPS specifically uses ECMA-376, 1st edition as a normative reference. |
Used by | MS-XPS, Microsoft XML Paper Specification. MS-XPS specifically uses ECMA-376, 1st edition as a normative reference. |
Defined via | XML, Extensible Markup Language (XML). The MCE specification defines a namespace and its elements and attributes. These constructs are designed for embedding in XML documents. |
LC experience or existing holdings | Many documents generated by Library of Congress staff or acquired for the collections, particularly in collections of personal or organizational papers that include digital content, will have documents in OOXML subtypes that incorporate MCE markup. |
---|---|
LC preference | Preferences for formats in the Recommended Formats Statement are expressed at the level of file formats, often by file extension. See, for example, Textual Works - Digital. |
Disclosure | International open standard. Maintained by ISO/IEC JTC1 SC34/WG4. Originated by Microsoft Corporation and first standardized through ECMA International in 2006. Approval as part 3 of ISO/IEC 29500 was in 2008. |
---|---|
Documentation |
ISO/IEC 29500-3, Information technology -- Document description and processing languages -- Office Open XML File Formats -- Part 3: Markup Compatibility and Extensibility. Latest version (2015 as of March 2020) is available from ISO/IEC Publicly Available Standards. All editions of the OOXML standards as published by ECMA are available from ECMA-376: Office Open XML File Formats. See Notes below for version chronology. |
Adoption |
MCE/OOXML_2012 was originally developed by Microsoft as a mechanism for implementing backwards and forwards compatibility among versions of its Office products. Files in the .docx, .xslx, and .pptx format created in versions of Office since Office 2010 may incorporate MCE constructs to handle new features introduced in versions after Office 2007. ECMA 388: Open XML Paper Specification (OpenXPS), another format originating with Microsoft and a significant component of Windows 8, allows for MCE constructs to be incorporated, based on the ECMA-376, 1st edition text. The OpenXPS format is used in printer drivers; individual printer manufacturers may introduce new features through use of MCE. Comments welcome Generating appropriate MCE correctly is a complex task requiring understanding of features supported by different versions of different applications as well as the formats. The compilers of this resource are not aware of non-Microsoft applications that routinely generate documents incorporating MCE constructs. There have been very occasional suggestions that MCE might be useful with other XML-based file formats, e.g., 2009 blog posting at oreilly.com and 2013 email message on ODF committee list. Comments welcome. The libOPC software toolkit (originally maintained at codeplex, now archived at codeplex libOPC archive (link via Internet Archive) and available at github libOPC repository) has code for processing MCE constructs encountered on input and for controlling the writing of MCE constructs for output of files using the Open Packaging Conventions format (OPC/OOXML_2012). Applications and software libraries that can import .docx/.xslx/.pptx files should be able to process MCE constructs but the compilers of this resource are not aware of the reliability of such processing, except when using the Open XML SDK (available at https://github.com/OfficeDev/Open-XML-SDK). Comments welcome. |
Licensing and patents |
The specification originated from Microsoft Corporation. MCE/OOXML_2012 and future versions of ISO/IEC 29500-3 and ECMA-376 are covered by Microsoft's Open Specification Promise, whereby Microsoft "irrevocably promises" not to assert any claims against those making, using, and selling implementations of any specification covered by the promise (so long as those accepting the promise refrain from suing Microsoft for patent infringement in relation to Microsoft's implementation of the covered specification). Features introduced into markup specifications through the MCE mechanism may be subject to patent protection. However, Microsoft's interoperability principles indicate "Microsoft will also make available a list of any of its patents that cover any extensions, and will make available patent licenses on reasonable and non-discriminatory terms." |
Transparency |
Since MCE defines a namespace that comprises a small collection of elements and attributes and is designed for use in XML documents, its use within XML files can be detected and interpreted by a human through a text editor as well as easily recognized and parsed by automated systems. |
Self-documentation |
Not applicable. |
External dependencies | Effective application of the compatibility constructs requires MCE processor software that recognizes MCE constructs and uses them to prepare a document for use in conjunction with a set of names of namespaces understood by a consuming application. Such software may be integrated into the file import modules of applications, as it is in Microsoft Office since 2007. |
Technical protection considerations |
Not applicable. |
Other | |
---|---|
Extensibility | No quality or functionality factors have been developed for mechanisms designed to permit extensibility of digital formats. |
Tag | Value | Note |
---|---|---|
Filename extension | See note. | MCE is used within files marked up in other XML specifications. Filename extensions are determined by the containing file. |
XML namespace declaration | http://schemas.openxmlformats.org/markup-compatibility/2006 |
Files may contain a namespace declaration that links this namespace identifier to a prefix even if they do not incorporate any elements and attributes that are not defined by Parts 1, 2, and 4 of the ISO 29500 standard. The prefixes "mc:" and "mce:" are both found in documentation and sample files, but, as in all XML, any prefix may be associated with any namespace through an xmlns declaration. |
Pronom PUID | See note. | Not applicable but see OOXML Format Family for subtypes. |
Wikidata Title ID | See note. | Not applicable but see OOXML Format Family for subtypes. |
General |
The prefix used for the MCE namespace http://schemas.openxmlformats.org/markup-compatibility/2006 is typically mc: or mce:. In XML, any prefix may be associated with any namespace through an xmlns declaration and so, other prefixes may be used. Documents created by Microsoft Office applications may declare the MCE namespace and list namespaces used for new features in recent Office versions as ignorable, whether or not the new features and MCE elements or attributes are used in the document. Here is a simple example, adapted from a blog post that demonstrates use of MCE to use a decorative font style not defined in ISO/IEC 29500, of declaring a namespace as ignorable, with mce: used as prefix for MCE namespace:
Features introduced through use of MCE are more likely to lead to interoperability problems than features supported by the underlying markup specification. Following its declared interoperability principles, Microsoft documents, and makes available license-free, extensions made using MCE in high-volume products such as applications in the Office suite, through documents such as those listed below:
|
---|---|
History |
Between the time the original MCE specification was published as ECMA-376, Part 3 in 2006 and 2015, there was no significant change in the MCE format. Editions of ISO/IEC 29500-3 and ECMA 376 through 2012 define the same namespace, elements, and attributes; changes to the MCE specification were limited to clarifications and corrections. The chronology of editions specifying MCE is:
The primary intent of the 2015 edition of the MCE specification was to improve the explanation and to emphasize the applicability of MCE beyond OOXML to support interoperability. This edition does not introduce new features but does remove some flexibility that had not been exploited in practice and was deemed unnecessary. In particular, an appropriate process for handling MCE on file import is described in more detail. |
|