This guide is for teams whose developer documentation is built with Sphinx and now has to join the rest of the enterprise's DITA in a shared CCMS. It explains how DocentraX Sphinx to DITA conversion works from the HTML build Sphinx produced — whether the sources are reStructuredText or MyST Markdown — rebuilds headings, tables, admonitions, cross-references and images as genuine DITA semantics, and carries your front page across as front matter. The one thing that matters most is that the real structure of a Sphinx project lives in its navigation, so the conversion reads the toctree hierarchy your readers click through today and keeps it as the topic hierarchy in DITA.
Why convert Sphinx to DITA
Sphinx couples your content to a build system. Reuse is limited to what its own directives allow, conditional publishing to its own tagging, and output to whatever its extensions can produce. The moment that content has to live alongside the rest of the enterprise's DITA — in a shared CCMS, under one review and validation regime, published through the DITA Open Toolkit — Sphinx becomes an island with no bridge to the mainland.
Converting by hand is thankless work. The real structure of a Sphinx project lives in its navigation rather than inside the pages, and a manual pass loses it. A deterministic conversion that reads the navigation Sphinx generated keeps the structure you already built — which is why Sphinx to DITA conversion belongs in your planned DITA migration services rather than being written off as a re-authoring exercise.
Sphinx builds a great site. DITA lets that content join the rest of the enterprise.
What our Sphinx to DITA conversion delivers
We read the navigation Sphinx generated — the toctree nesting rendered into your build, the same hierarchy your readers click through — so the topic hierarchy your readers navigate today is the hierarchy you get in DITA, not a guess assembled from filenames. It makes no difference whether your sources are reStructuredText or MyST Markdown: the conversion works from the HTML build Sphinx produced, where both dialects have already been rendered into the same structure. Your front page survives as real front matter instead of being thrown away, which is a common casualty when developer documentation is scraped rather than converted.
From there the conversion rebuilds genuine DITA semantics instead of wrapping web pages in DITA tags. Heading levels become a topic hierarchy. Tables become CALS tables that survive translation and print. Admonitions become notes, cross-references become links that actually resolve, and images become figures that keep their captions. The depth of the topic tree is tunable to your content rather than fixed, the invisible spacing and decorative markup a web build leaves behind is cleaned up rather than carried forward, and your recurring styles map to the elements you actually want. Procedures your authors wrote as numbered steps can additionally be typed into real DITA tasks when the composite is split into topics — an explicit, reviewable choice, never a guess. Text is never dropped: where structure genuinely cannot be determined it degrades gracefully, but nothing disappears.
Every Sphinx to DITA migration runs the same five-stage lifecycle.
1. Analyse
We inventory the estate before touching it — topic hierarchy, reading order, images, recurring styles, admonition types and front matter — so you know exactly what you have and what it will become.
2. Transform
Your navigation hierarchy and heading levels become a DITA topic tree: tables to CALS, admonitions to notes, cross-references and images rebuilt as real elements.
3. Enrich
Your front page is carried into front matter, your metadata, keys, IDs and naming conventions are applied, and Knowledge Fabric can generate keywords and index terms into topic prologs — the honest replacement for a build-time index — so the content is findable the moment it lands.
4. Validate
The DITA completeness check expands the whole map hierarchy and verifies it end to end — DTD conformance against the DITA grammars or your own specialization, every link, conref and keyref, image references, duplicate ids and keys, circular maps — before anything is delivered.
5. Deliver
The direct output is one clean composite DITA document per documentation set; when your platform wants topic-per-file, the splitting step turns it into individual typed topics with a bookmap and key map, in the layout your platform expects with every reference intact.
Generic vs customer-specific Sphinx to DITA transformation
A generic run gives you valid DITA with inferred structure, generic topic types and generated IDs. That is a correct start, and enough to prove the content moves. A customer-specific conversion aligns the output with the model your writers already use. For a Sphinx source that means, concretely:
- Your notes, warnings and cautions arrive as your note types and your specialization, not a generic approximation somebody has to re-tag later.
- Code-heavy developer content follows your conventions for code blocks and reference topics, so your API pages still look like your API pages.
- Content that appears only for certain audiences or builds is mapped onto your ditaval profiling scheme instead of being flattened into every output.
- IDs, filenames and folders follow your conventions, and the output validates against your DTD before you ever see it.
This tailoring is configuration rather than bespoke code written from scratch, so it is a decision you make once and reuse on every batch that follows. Skip it and the cost does not disappear — it moves to your team, who reconcile admonitions, code semantics and metadata by hand, page by page. That is the part of a Sphinx to DITA migration nobody budgets for.
| Your concern | How we answer it |
|---|---|
| Our real structure lives in the navigation, not in the pages. | Reading order and hierarchy come straight from the navigation your project defines, so the sequence your readers know is the sequence they keep. |
| Half our structure only exists once the site is built. | We work from the build itself: the rendered navigation defines the hierarchy, the front page becomes front matter, and index terms can be enriched into prologs rather than lost. |
| We have a great many admonitions and code blocks. | Admonitions become your note types and code follows your reference conventions, so developer pages still read like developer pages. |
| It has to sit in the same CCMS as the rest of our DITA. | Customer-specific configuration maps the output to your specialization and validates it against your DTD before delivery. |
Where Sphinx to DITA conversion sits in the DITA standards landscape
DITA is the OASIS standard behind single-sourcing, conref and keyref reuse, conditional publishing and multi-channel output through the DITA Open Toolkit — and all of it becomes available the moment your content is migrated cleanly. Sphinx is structured, but structured for one toolchain. Faced with that, teams usually re-author from scratch, write a one-off script only its author understands, or accept a lossy scrape that flattens the hierarchy and scrambles the reading order. What separates DocentraX is that we treat your Sphinx project as a project rather than a pile of pages: the navigation your readers already follow defines the reading order, your front page survives, and the whole run is verified at repository scale as part of one DITA conversion pipeline.
Related developer-docs paths: Markdown to DITA conversion covers Git-based documentation sites, and HTML to DITA conversion covers HTML that never came from a documentation tool at all.
The outcome of a Sphinx to DITA migration
Your developer content joins the enterprise as standards-based DITA: single-sourced, reusable through conref and keyref, conditionally publishable, and deliverable to any channel through DITA-OT — including, if you still want one, a static site that looks much like the one you have today. The island becomes part of the mainland, and the structure your team worked so hard to build comes with it.
Frequently asked questions
How do you convert Sphinx documentation to DITA?
We read the navigation Sphinx generated — the same toctree hierarchy your readers click through — so it becomes the topic hierarchy in DITA rather than a guess based on filenames. Headings become a topic tree, tables become CALS tables, admonitions become notes and images become figures. Your front page is kept as front matter, and everything is validated against your own DTD before delivery.
Does Sphinx to DITA conversion keep the original reading order?
Yes. Reading order and hierarchy come from the navigation your Sphinx project already defines, so the structure your readers know survives the move. Nothing is reconstructed from file order or alphabetical guesswork, which is exactly where a generic scrape goes wrong.
What happens to the Sphinx index during conversion?
The alphabetical index is generated fresh at every build, so it is not a source artefact we can carry across — and we say so rather than pretend otherwise. What is preserved is everything the index exists to serve: your front page arrives as front matter, the toctree order becomes the topic hierarchy, and keywords and index terms can be enriched into topic prologs so the content stays findable in its new home.
Can Sphinx admonitions be mapped to DITA note types?
Yes. Notes, warnings and cautions come across as DITA notes, and in a customer-specific conversion they land as your exact note types and specialization, so nobody has to re-tag them afterwards.
What files does the Sphinx to DITA converter accept?
A built Sphinx documentation site: the .htm or .html files themselves, or a single .zip of the build. You get back one clean composite DITA document per documentation set — or, through the splitting step, individual typed topics with a bookmap and key map, laid out the way your CCMS or publishing toolchain expects.
Related guides
- Markdown to DITA conversion
- HTML to DITA conversion
- Convert a split DITA map to a Markdown docs site
- DITA conversion: convert any legacy source to clean, valid DITA
- See the output on your own content: free 25-page sample
Send us 25 pages. The messier, the better.
We'll convert them to DITA free of charge — through the real pipeline, not a demo — and review the output with you. Then we'll discuss pricing one-to-one.
Get your free 25-page sample