Purpose: understand what each coverage tier of @awacloud/ooxml types, what it only preserves, and which bundle to pick.
Prerequisites: none beyond Getting started; the tiers are the core sub-paths (@awacloud/ooxml/docx, …) and the bundles (@awacloud/ooxml/docx-large, @awacloud/ooxml/docx-full, …).
@awacloud/ooxml types or preserves every element of the ECMA-376 Part 1 schemas through a layered architecture: a stable core (~95% of real-world usage, an estimate) plus opt-in extra/ modules that promote elements from the _extras fallback to typed fields.
Coverage by schema
| Schema | Spec | Core | + Extras | extra/ modules |
|---|---|---|---|---|
wml.xsd |
546 | ~80 | 546 | wml-run-formatting, wml-paragraph-formatting, wml-table-properties, wml-numbering-details, wml-settings, wml-fields, wml-tracked-changes, wml-vml-legacy, wml-misc |
sml.xsd |
385 | ~80 | 385 | sml-pivot-tables, sml-calculation, sml-sheet-config, sml-workbook-config, sml-form-controls, sml-misc |
pml.xsd |
210 | ~32 | 210 | pml-animations, pml-transitions, pml-notes, pml-layouts-typed, pml-misc |
dml-main.xsd |
321 | ~56 | 321 | dml-effects, dml-fills-advanced, dml-shapes-advanced, dml-main-misc |
dml-chart.xsd |
220 | 46 | 220 | dml-chart-3d, dml-chart-axes-advanced, dml-chart-data-labels, dml-chart-other-types, dml-chart-trendlines, dml-chart-misc |
shared-math.xsd |
124 | 35 | 124 | math-advanced, math-misc |
dml-wp.xsd |
43 | 6 | 43 | dml-wp-positioning |
dml-sp.xsd (xdr) |
36 | 24 | 36 | dml-xdr-advanced |
dml-pic.xsd |
6 | 6 | 6 | (core only) |
| Part 4 (transitional) | ~50 | 0 | 50 | transitional, legacy-vml |
What the numbers mean
The + Extras column counts the schema elements that an extra either models or catalogues. The six *-misc modules (wml-misc, sml-misc, pml-misc, dml-chart-misc, dml-main-misc, math-misc) catalogue the long tail: each element is recognised, flagged _passthrough: true and preserved on a round trip, but it has no semantic model. "Full" coverage therefore means every element is either typed or preserved, not that every element has a semantic model, and it is not a conformance measurement. The packages the writers produce use the Transitional namespace URIs (for example http://schemas.openxmlformats.org/wordprocessingml/2006/main); the docx reader locates elements by their w: prefix and does not consult the namespace URI, so a document whose w: prefix is bound to the Strict URI is read the same way, then written back with the Transitional URIs. The "~95%" figures below are an estimate of real-world usage, not a measurement.
Choosing a tier
| Need | Import |
|---|---|
| ~95% real-world docx | docx-large |
| Every docx element typed or preserved (VML, custGeom, transitional) | docx-full |
| ~95% real-world xlsx | xlsx-large |
| Every xlsx element typed or preserved (form controls, advanced anchors) | xlsx-full |
| ~95% real-world pptx | pptx-large |
| Every pptx element typed or preserved (custGeom, …) | pptx-full |
Each *-large/*-full bundle is a pure @awacloud/fw factory descriptor —
register it (and its declared extras) in a ModuleRuntime and resolve
its name; see the bundles guide for the
exact registerAll sequence, including the caveat that most sml-* /
dml-* / pml-* extras expose parse*/render* helpers only (no
automatic hydrate* on .read()) — check each bundle's own page for
what it actually auto-wires.
Extending the coverage
For a missing ECMA-376 element: follow the extending guide — create a src/extra/<name>.js + its test, wire it into the appropriate bundle, and document it under docs/api/extra/.
See also
- Bundles — ergonomic
large/fullcompositions - Extras — opt-in modules
- Extending guide
- CHANGELOG