In an earlier post I explained that Graphmind could be used as a tool for building ditamaps. In this post I'll explain how we could do a 1 to 1 translation of native .mm features to essential ditamap features. Graphmind is a Flex frontend that uses the Freemind .mm mindmap XML format. In it's current implementation it requires a Drupal backend (it uses Drupal services and expects node objects) but it is not unconceavable to generalize the API so that Graphmind could be used on top of other backends. Ditamaps are the backbone of a DITA documentation set and can be used to repackage part of a DITA documentation repository into a derivative documentation document (e.g. PDF, Windows help files, etc.). There is already an XSL document that transforms .mm into .ditamaps that implements the basic hierarchy into a ditamap it's a very basic transformation but demonstrates with 25 lines of code that it is should be fairly straigthforward to get this feature working (e.g. it doesn't handle attributes properly and it doesn't add a topichead). The output looks like this:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
<map title="DITA test">
  <topicref navtitle="Concepts" href="Concepts.xml">
    <topicref navtitle="Concept 1" href="Concept 1.xml">
    <topicref navtitle="Concept 2" href="Concept 2.xml">
  <topicref navtitle="Tasks" href="Tasks.xml">
    <topicref navtitle="example task 1" href="example task 1.xml">
  <topicref navtitle="References" href="References.xml">
    <topicref navtitle="example reference 1" href="example reference 1.xml">
    <topicref navtitle="example reference 2" href="example reference 2.xml">

With 2 additional conventions we could have a full function ditamap:

  • Root level mindmap nodes could become topicheads for a branch
  • Local hyperlinks could be used to indicate relationships that in DITA can be used to build the relationship table

One way to automatically add those local hyperlinks would be a little auto-link function in the graphmind interface that lets you connect mindmap nodes that share specific attributes. This way you could one time tag the DITA topics with relevant keywords in Drupal and than automatically generate the relationship table in the ditamap that links topics that share keywords in Drupal. With those additions we could in a fairly short time frame (a couple of weeks of development) make a tool that would be very useful for the DITA community: just import the DITA topics that were created with an external tool into Drupal nodes and use the Drupal views services to create DITA maps in the Graphmind interface. This first version could than be used as a bridgehead to get feedback and contributions from the DITA community to build the actual editor... Besides these plans, we are also thinking about the following features for Graphmind:

  • a really nice feature for Graphmind would be concurrent multi-user editing.
  • We've also been playing with the idea to develop a HTML5 implementation of graphmind that would run on iphones and ipads
  • and we have plans to make Graphmind an RDF browser that query RDF stores and build dynamic mindmaps.

The last 2 plans are only plans, but we might have found a sponsor for the multi-user editing.

About the author

Kristof van Tomme

CEO, Co-founder

Kristof Van Tomme is an open source strategist and architect. He is the CEO and co-founder of Pronovix. He’s got a degree in bioengineering and is a regular speaker at conferences in the API, DevRel, and technical writing communities.