DocumentID: ECMA-376/Part2/8.1.1 Title: ECMA-376, Part2: 8.1.1 Part Names Extracted-From: ECMA-376 Office Open XML File Formats, 1st Edition / December 2006 Warning: Coverted to HTML format by a script known to have bugs
Each part has a name. Part names refer to parts within a package. [Example: The part name "/hello/world/doc.xml" contains three segments: "hello", "world", and "doc.xml". The first two segments in the sample represent levels in the logical hierarchy and serve to organize the parts of the package, whereas the third contains actual content. Note that segments are not explicitly represented as folders in the package model, and no directory of folders exists in the package model. end example]
Part Name Syntax
The part name grammar is defined as follows:
part_name = 1*( "/" segment )
segment = 1*( pchar )
pchar is defined in RFC 3986.
The part name grammar implies the following constraints. The package implementer shall neither create any part that violates these constraints nor retrieve any data from a package as a part if the purported part name violates these constraints.
Part segments have the following additional constraints. The package implementer shall neither create any part with a part name comprised of a segment that violates these constraints nor retrieve any data from a package as a part if the purported part name contains a segment that violates these constraints.
[Example:
Example 8--1. A part name
/a/%D1%86.xml
/xml/item1.xml
Example 8--2. An invalid part name
//xml/.
end example]
A package implementer shall neither create nor recognize a part with a part name derived from another part name by appending segments to it. [M1.11] [Example: If a package contains a part named "/segment1/segment2/.../segmentn", then other parts in that package shall not have names such as: "/segment1", "segment1/segment2", or "/segment1/segment2/.../segmentn-1". end example]
Part name equivalence is determined by comparing part names as case-insensitive ASCII strings. Packages shall not contain equivalent part names and package implementers shall neither create nor recognize packages with equivalent part names. [M1.12]