paged.IDML Reference
Round-tripping & version compatibility

Version markers

The <?aid ?> processing instruction and the DOMVersion attribute — what each field names, and the values InDesign writes in real packages.

Tier: ProProIIIreference

A package declares its vintage twice: an <?aid ?> processing instruction at the top of designmap.xml, and a DOMVersion attribute on the root element of every part.

In short The <?aid ?> instruction sits between the XML declaration and the Document element of designmap.xml. Of its five pseudo-attributes, only product varies between files: it names the InDesign build that wrote the package, such as 20.0(32). DOMVersion names the revision of InDesign's document model the package follows, such as 20.0, and the same value is repeated on the root element of every part. It tracks the application's major and minor version, but does not change with every point release.

The top of a design map: the XML declaration, the <?aid ?> instruction, then the Document element carrying DOMVersion.

designmap.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?aid style="50" type="document" readerVersion="6.0" featureSet="257" product="20.0(32)"?>
<Document xmlns:idPkg="http://ns.adobe.com/AdobeInDesign/idml/1.0/packaging" DOMVersion="20.0" Self="d" StoryList="ustory1 ustory2" Name="two-stories.indd" CMYKProfile="Coated FOGRA39 (ISO 12647-2:2004)" RGBProfile="sRGB IEC61966-2.1" SolidColorIntent="UseColorSettings" AfterBlendingIntent="UseColorSettings" DefaultImageIntent="UseColorSettings">
  <idPkg:Graphic src="Resources/Graphic.xml"/>
  <idPkg:Fonts src="Resources/Fonts.xml"/>
  <idPkg:Styles src="Resources/Styles.xml"/>
  <idPkg:Preferences src="Resources/Preferences.xml"/>
  <idPkg:Tags src="XML/Tags.xml"/>
  <idPkg:MasterSpread src="MasterSpreads/MasterSpread_umaster.xml"/>
  <idPkg:Spread src="Spreads/Spread_uspread.xml"/>
  <idPkg:Story src="Stories/Story_ustory1.xml"/>
  <idPkg:Story src="Stories/Story_ustory2.xml"/>
  <idPkg:BackingStory src="XML/BackingStory.xml"/>
</Document>

The <?aid ?> processing instruction

A processing instruction is not an element. Its target here is aid, and its content is a string of name="value" pairs that look like attributes but are parsed by the application, not by an XML parser. It appears only in designmap.xml.

Pseudo-attributeValue in InDesign's packagesMeaning
style50The style of the processing-instruction syntax.
typedocumentThe file is a whole document. Snippets and assignment files use other values (see companion formats).
readerVersion6.0The oldest reader the producer says can open the package.
featureSet257A number identifying the set of features the package was written for.
productfor example 20.0(32)The InDesign version and build that wrote the package.

Across the 271 InDesign-written packages in our corpus, written by InDesign versions 6.0 to 21.2, style, type, readerVersion and featureSet never vary. readerVersion="6.0" points at InDesign CS4 (version 6.0), the first version that wrote IDML. product is the field that tells files apart.

DOMVersion

DOMVersion is an attribute on the root element of a part: on Document in designmap.xml, and on idPkg:Spread, idPkg:Story, idPkg:Graphic, idPkg:Styles and every other part's root. In every InDesign-written package of our corpus, all parts carry the same value as the design map. The META-INF/ files are not IDML parts and carry none.

Attribute · DocumentValuesPagedpaged.set
DOMVersionrealread
Selected attributes. All 21 attributes of Document →

DOMVersion names the revision of the document model, which is what decides which elements and attributes can appear. It follows product's major and minor version, but a point release of InDesign does not always raise it:

productDOMVersion
20.0(32)20.0
20.1(71)20.0
17.2(105)17.0
16.4(54)16.2
13.1(76)13.1
6.0(352)6.0

In the corpus, DOMVersion ranges from 6.0 to 21.2. The commonest value is 11.4 (InDesign CC 2015), followed by 20.0 (InDesign 2025).

Reading the markers

To find out which InDesign wrote a file, read product from the <?aid ?> instruction: it is the only marker that names the exact build. To find out which vocabulary to expect, read DOMVersion. The steps, with a downloadable sample, are on read which InDesign version wrote a file.

A writer generating a package from scratch should stamp a DOMVersion it actually follows on every part and an <?aid ?> instruction in designmap.xml, copying an InDesign export of that version.

In Paged: the importer reads DOMVersion from the design map and keeps it. The writer stamps it on every part it generates (new spreads and stories) and records it as domVersion in a .paged file's manifest; a document with no DOMVersion gets 20.0. The <?aid ?> instruction is copied with the design map and not interpreted. Neither marker changes how a package is read. Tracked

Frequently asked questions

Where does an IDML package declare its version? In two places: the <?aid ?> processing instruction near the top of designmap.xml, whose product names the InDesign build, and the DOMVersion attribute, which is on the root element of designmap.xml and repeated on the root element of every other part.

What is the difference between product and DOMVersion? product is the exact InDesign build that wrote the file, such as 20.1(71). DOMVersion is the revision of the document model the file follows, such as 20.0. A point release of InDesign often keeps the previous DOMVersion, so the two can differ.

Do readerVersion and featureSet change between InDesign versions? Not in practice. In 271 packages written by InDesign 6.0 through 21.2 they are always readerVersion="6.0" and featureSet="257".

Does every part carry a DOMVersion? Every IDML part does, on its root element, and in InDesign's packages the value is the same in all of them. The files in META-INF/ are container files, not IDML parts, and carry none.

On this page