Round-tripping & versions
What an IDML round trip keeps and recomputes, and how every package records the InDesign version and format revision that wrote it.
A round trip keeps what the XML writes down and recomputes what it does not. Every package also records which InDesign wrote it.
In short IDML stores a document's structure and settings: pages, frames, geometry,
text, styles, colours and references. It does not store the composed result: where lines
break, where each glyph sits, which text ended up overset. Whoever opens the file composes
it again, so a round trip through another tool and back to InDesign preserves the document
but not necessarily every line break. Separately, each package is stamped with its vintage:
an <?aid ?> processing instruction at the top of designmap.xml, and a DOMVersion
attribute on the root element of every part.
What a round trip keeps
A round trip is the journey of a document out of an application as IDML, through some other tool, and back. Anything the XML records arrives intact, provided every tool on the way writes back what it read, including the parts and attributes it did not understand.
Three kinds of thing do not travel as stored values:
- Composition. Line breaks, hyphenation points, glyph positions and overset are computed by the application that lays the text out. Two composers given the same story and the same fonts can break it differently.
- Results that are recomputed. A text variable instance carries its last value as
ResultText, and a cross-reference carries the text it showed, but InDesign recomputes both when it lays out the page. - Session state. Undo history, selection, window layout and caches belong to one application session and are never written.
What IDML is relative to InDesign's own .indd file is covered in
the binary-to-XML lineage.
What's here
- Version markersthe
<?aid ?>instruction (style,type,readerVersion,featureSet,product) andDOMVersion, with the values found in real files. - Compatibilityhow the format grows, which way it travels between InDesign versions, and what a tool must do for a package it rewrites to open correctly in InDesign again.
In Paged: Paged reads IDML and writes it back. Its writer copies every entry of the source package it did not change byte for byte, patches the attributes and text that were edited, and generates whole parts only for new spreads and stories. An unedited document comes back byte-identical (measured over 99 corpus packages). The details are on compatibility.
Tracked
Frequently asked questions
What does round-tripping mean for an IDML document? Exporting a document to IDML, letting another tool read or change it, and opening it again in InDesign. Everything the XML records survives if each tool writes back what it read; the composed layout of the text is recomputed on opening.
Does IDML store line breaks? No. A story is stored as text with its styles and formatting; line breaks, hyphenation and glyph positions are computed by whoever lays the text out. That is why a reader other than InDesign can break a paragraph differently with the same fonts.
Where does a package say which InDesign wrote it?
In the <?aid ?> processing instruction near the top of designmap.xml, whose product
pseudo-attribute names the build, and in the DOMVersion attribute on the root element of
designmap.xml and of every other part. See
version markers.
The .paged container
A .paged file is a valid IDML package with extra parts that the design map does not name, so InDesign opens it as ordinary IDML.
Version markers
The <?aid ?> processing instruction and the DOMVersion attribute — what each field names, and the values InDesign writes in real packages.