How to optimize DITA map structure for large projects with many cross-linked topics?
Post here questions and problems related to editing and publishing DITA content.
-
- Posts: 1
- Joined: Sat Aug 09, 2025 6:01 am
- Contact:
How to optimize DITA map structure for large projects with many cross-linked topics?
Hi everyone,
I am working on a fairly large DITA project, consisting of hundreds of topics spread across many different modules, including many cross-links between topics. Currently, my DITA Map is starting to become confusing and difficult to manage when publishing to many outputs (HTML5, PDF).
I would like to ask:
Thank you, everyone!
I am working on a fairly large DITA project, consisting of hundreds of topics spread across many different modules, including many cross-links between topics. Currently, my DITA Map is starting to become confusing and difficult to manage when publishing to many outputs (HTML5, PDF).
I would like to ask:
- Is there any way to organize or split the DITA map to make it easier to manage?
- How should I use submaps and keyrefs to both maintain a clear structure and limit linking errors?
- Are there any best practices for naming files/topics for convenience in long-term maintenance?
Thank you, everyone!
-
- Posts: 9510
- Joined: Fri Jul 09, 2004 5:18 pm
Re: How to optimize DITA map structure for large projects with many cross-linked topics?
Hi,
The Oxygen forum is a place where people in general register to receive answers to their own questions, so there may not be many DITA writers registered to receive answers on any post. I would suggest you also join the DITA Users List and ask the community: https://dita-users.groups.io/g/main
Coming back to your question, as an example we have the Oxygen User's Manual DITA XML content stored on GitHub, it's not a perfect project but it's scalable and it works:
https://github.com/oxygenxml/userguide/tree/master/DITA
We have a top level "UserManual.ditamap" and then for each individual chapter we have a submap which we store in the "maps" folder.
There is a keydefs.ditamap which stores key definitions for various variables used throughout the entire user's manual:
https://github.com/oxygenxml/userguide/ ... fs.ditamap
And there is a reusables.ditamap which defines keys pointing to reusable content topics:
https://github.com/oxygenxml/userguide/ ... es.ditamap
We use profiling attributes to generate from the same top level DITA Map about 10-15 different publications using ditaval filter files (https://github.com/oxygenxml/userguide/ ... TA/ditaval).
We use keyrefs for frequently mentioned product names like "Oxygen XML Editor", use use conkeyrefs for reusing DITA XML elements like notes, tables. We still use direct links between topics, so we do not use keyrefs or relationship tables defined at DITA Map level.
There are various settings stored at project level, so if one loads the "userguide.xpr" project in the Oxygen Project view they get various settings imposed, for example custom Schematron validation rules, spell check rules and learned words list.
Also the project has the "Main Files" feature in Oxygen enabled with the main Userguide ditamap added as a main file, making Oxygen automatically fix up references when one renames or moves resources in the Project view.
Some more details can be found in these sample projects:
https://github.com/oxygenxml/DITA-Startup-Project
https://github.com/oxygenxml/dita-proje ... -practices
Regards,
Radu
The Oxygen forum is a place where people in general register to receive answers to their own questions, so there may not be many DITA writers registered to receive answers on any post. I would suggest you also join the DITA Users List and ask the community: https://dita-users.groups.io/g/main
Coming back to your question, as an example we have the Oxygen User's Manual DITA XML content stored on GitHub, it's not a perfect project but it's scalable and it works:
https://github.com/oxygenxml/userguide/tree/master/DITA
We have a top level "UserManual.ditamap" and then for each individual chapter we have a submap which we store in the "maps" folder.
There is a keydefs.ditamap which stores key definitions for various variables used throughout the entire user's manual:
https://github.com/oxygenxml/userguide/ ... fs.ditamap
And there is a reusables.ditamap which defines keys pointing to reusable content topics:
https://github.com/oxygenxml/userguide/ ... es.ditamap
We use profiling attributes to generate from the same top level DITA Map about 10-15 different publications using ditaval filter files (https://github.com/oxygenxml/userguide/ ... TA/ditaval).
We use keyrefs for frequently mentioned product names like "Oxygen XML Editor", use use conkeyrefs for reusing DITA XML elements like notes, tables. We still use direct links between topics, so we do not use keyrefs or relationship tables defined at DITA Map level.
There are various settings stored at project level, so if one loads the "userguide.xpr" project in the Oxygen Project view they get various settings imposed, for example custom Schematron validation rules, spell check rules and learned words list.
Also the project has the "Main Files" feature in Oxygen enabled with the main Userguide ditamap added as a main file, making Oxygen automatically fix up references when one renames or moves resources in the Project view.
Some more details can be found in these sample projects:
https://github.com/oxygenxml/DITA-Startup-Project
https://github.com/oxygenxml/dita-proje ... -practices
Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
<oXygen/> XML Editor
http://www.oxygenxml.com
Return to “DITA (Editing and Publishing DITA Content)”
Jump to
- Oxygen XML Editor/Author/Developer
- ↳ Feature Request
- ↳ Common Problems
- ↳ DITA (Editing and Publishing DITA Content)
- ↳ Artificial Intelligence (AI Positron Assistant add-on)
- ↳ SDK-API, Frameworks - Document Types
- ↳ DocBook
- ↳ TEI
- ↳ XHTML
- ↳ Other Issues
- Oxygen XML Web Author
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Content Fusion
- ↳ Feature Request
- ↳ Common Problems
- Oxygen JSON Editor
- ↳ Feature Request
- ↳ Common Problems
- Oxygen PDF Chemistry
- ↳ Feature Request
- ↳ Common Problems
- Oxygen Feedback
- ↳ Feature Request
- ↳ Common Problems
- Oxygen XML WebHelp
- ↳ Feature Request
- ↳ Common Problems
- XML
- ↳ General XML Questions
- ↳ XSLT and FOP
- ↳ XML Schemas
- ↳ XQuery
- NVDL
- ↳ General NVDL Issues
- ↳ oNVDL Related Issues
- XML Services Market
- ↳ Offer a Service