Physical Packages

Table 1. H–3. Physical packages conformance requirements

ID

Rule

Reference

Package Implementer

Format Designer

Format Producer

Format Consumer

M2.1

The Content Types stream shall not be mapped to a part by the package implementer.

9.1.2.1

×A

M2.2

The package implementer shall define a physical package format with a mapping for the required components package, part name, part content type and part contents.

9.1.1

×

M2.3

The package implementer shall define a format mapping with a mechanism for associating content types with parts.

9.1.2.1

×

M2.4

The package implementer shall require that the Content Types stream contain one of the following for every part in the package:

One matching <Default> element

One matching <Override> element

Both a matching <Default> element and a matching <Override> element, in which case the <Override> element takes precedence.

9.1.2.2

×A

M2.5

The package implementer shall require that there not be more than one Default element for any given extension, and there not be more than one Override element for any given part name.

9.1.2.2

×A

M2.6

The package implementer shall require a non-empty extension in a <Default> element. The package implementer shall require a content type in a <Default> element and the format designer shall specify the content type.

9.1.2.2.2

×A

×A

M2.7

The package implementer shall require a content type and the format designer shall specify the content type in an <Override> element. The package implementer shall require a part name.

9.1.2.2.3

×A

×A

M2.8

When adding a new part to a package, the package implementer shall ensure that a content type for that part is specified in the Content Types stream; the package implementer shall perform the steps described in §9.1.2.3.

9.1.2.3

×A

M2.9

To get the content type of a part, the package implementer shall perform the steps described in §9.1.2.4.

9.1.2.4

×A

M2.10

The package implementer shall not use the versioning and extensibility mechanisms defined in Part 5: “Markup Compatibility and Extensibility” to incorporate elements and attributes drawn from other XML-namespaces into the Content Types stream markup.

9.1.2.5

×A

M2.11

The package implementer shall not mix interleaving and non-interleaving for an individual part.

9.1.4

×B

M2.12

The package implementer shall compare prefix names as case-insensitive ASCII strings.

9.1.3.1

×

M2.13

The package implementer shall compare suffix names as case-insensitive ASCII strings.

9.1.3.1

×B

M2.14

The package implementer shall not allow packages that contain equivalent logical item names.

9.1.3.1

×

M2.15

The package implementer shall not allow packages that contain logical items with equivalent prefix names and with equal piece numbers, where piece numbers are treated as integer decimal values.

9.1.3.1

×B

M2.16

The package implementer shall not map logical items to parts if the logical item names violate the part naming rules.

9.1.3.4

×

M2.17

The package implementer shall consider naming collisions within the set of part names mapped from logical item names to be an error.

9.1.3.4

×

M2.18

When interleaved, a package implementer shall represent a part as one or more pieces, using the method described in §9.1.4.

9.2.1

×B

Notes:

A: Only relevant if using the content type mapping strategy specified in the Open Packaging Conventions.

B: Only relevant if supporting the interleaving strategy specified in the Open Packaging Conventions.

Table 2. H–4. Physical packages recommendations

ID

Rule

Reference

Package Implementer

Format Designer

Format Producer

Format Consumer

S2.1

Some physical package formats have a native mechanism for representing content types. For such packages, the package implementer should use the native mechanism to map the content type for a part.

9.1.2.1

×

S2.2

If no native method of mapping a content type to a part exists, the package implementer should include a specially-named XML stream in the package called the Content Types stream

9.1.2.1

×

S2.3

If the package is intended for streaming consumption:

The package implementer should not allow< Default> elements; as a consequence, there should be one <Override> element for each part in the package.

The format producer should write the <Override> elements to the package so they appear before the parts to which they correspond, or in close proximity to the part to which they correspond.

9.1.2.2

×A

×A

S2.4

The package implementer should use the mechanism described in this Open Packaging specification to allow interleaving when mapping to the physical package for layout scenarios that support streaming consumption.

9.1.4

×B

S2.5

The package implementer should store pieces in their natural order for optimal efficiency.

9.1.4

×B

Notes:

A: Only relevant if using the content type mapping strategy specified in the Open Packaging Conventions.

B: Only relevant if supporting the interleaving strategy specified in the Open Packaging Conventions.

Notes:

A: Only relevant if using the content type mapping strategy specified in the Open Packaging Conventions.

B: Only relevant if supporting the interleaving strategy specified in the Open Packaging Conventions.