1 Introduction

In creating an interoperable implementation, it may be helpful to understand specific implementation choices made by other products implementing the same standard. For example, portions of the standard may provide only general guidance, leaving specific implementation choices up to the application implementer; in some circumstances, it may be helpful for other implementers to understand those choices. In addition, products often vary from or extend standards either because of application deviations or to allow for use scenarios not originally envisioned by the specifications. Documentation of those variations and/or extensions may also be helpful to other implementers.

The implementer notes contained in this document provide information about how Office implements ECMA-376 Office Open XML File Formats [ECMA-376], including areas where additional detail may be of benefit to other implementers and areas where the product is known to vary from or extend the specification.

The ECMA-376 standard does not conform to RFC 2119 with respect to consistent usage of MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY. Section 2 of ECMA-376 directs that the user of the word “shall” indicates required behavior.  The standard also uses “should”, “must”, “might”, and “may” as normative verbs.

In evaluating Microsoft’s implementation of ECMA-376, the following definitions were applied:

MUST, SHALL

Indicates required behavior.  All deviations from this required behavior are documented in implementer notes.

MUST NOT, SHALL NOT, MAY NOT

Indicates a prohibited behavior.  All deviations from this prohibition are documented in implementer notes.

SHOULD

Indicates recommended, but not required, behavior.  Deviations from the suggested behavior are documented in implementer notes on a case-by-case basis.

SHOULD NOT

Indicates that the behavior is not recommended, but is not prohibited.  Deviations from the suggested behavior are documented in implementer notes on a case-by-case basis.

MIGHT, MAY, MIGHT NOT

Indicates truly optional behavior.  Deviations from the optional behavior are not documented in implementer notes. Note: MIGHT was not taken as a prohibition for an implementer note.  An implementer note is still written if it is necessary for interoperability.

This is not an exhaustive list of the criteria used in creating implementer notes.  For deviations from MUST, MUST NOT, and MAY NOT behaviors, an implementer note was always created.  All other situations, as noted, were considered on a case-by-case basis.