[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: General Purpose DITA Link Management Library and Utilities availablefrom DITA4Publishers Project
I announced it on the DITA Users list but it occurred to me that it would probably be useful to mention it here as well. I have designed a general Java API for DITA link management and have produced a simple implementation of the API. The API and implementation are open source licensed using the same license as the Open Toolkit. The API has been designed to meet the needs of editors, CMS systems, and output processors and is based in large part on my work with implementing DITA 1.2 support in the RSuite CMS product, including support for DITA-aware editors that will need to use the CMS as a service for creating and resolving DITA links (e.g., providing lists of available link targets, resolving key references, etc.). The materials are available from the DITA4Publishers downloads area ( http://sourceforge.net/projects/dita4publishers/) as d4p-api-and-tools-2010-01-04.zip. The source is available from the DITA4Publishers code repository (I haven't yet taken the time to package the source separately). The API defines a general Link Management Service API for working with DITA-specific links and addresses, in particular, keys and key references, as well as getting "where used" information about actual and potential link targets. The implementation provides a general map BOS construction facility which is then used by the link management service implementation to do key space construction. I have not yet implemented the where-used parts of the API, but hope to soon. The implementation library provides a set of general services and utilities for working with arbitrarily complex DITA maps. In addition to the core libraries that implement the API itself, the package provides a command-line utility for generating a "map bounded object set" (BOS) and key space report. This is a useful debugging tool as well as a simple demonstration of how key construction and processing works. This work was driven in part by implementation work we're doing at Really Strategies for our RSuite CMS product, but also by my desire to have a general and as-complete-as-possible key processing implementation with which we (the TC) can test the key-related aspects of the spec (a lot of which I have done in the run-up to the 3rd review). I have tested the code against the DITA spec itself, since the spec is itself a pretty complicated maps with lots of keys and submaps and whatnot. The base key management implementation includes support for filtering in that you can construct a key space that holds all possible effective definitions of a given key and then pass in a filtering spec as a parameter to any access method. This allows you to do filtering of key definitions before or after other processing, and thus emulate the behavior of different tools. This is designed specifically to support editors and CMS systems that must be able to determine effective key bindings dynamically without completely rebuilding the a given key space. The API also gives you access to *all* key definitions, effective or not. In addition to the link management features, the base map BOS construction framework and utilities make working with maps about as convenient as it can be, hiding the complexity of map processing and making it easy to apply task-specific processing to the maps, including processing that requires rewriting pointers. The package includes a number of examples of BOS-based map processing, including a map packager that reorganizes files and rewrites pointers as needed to ensure that all the components are below the root map. Cheers, Eliot -- Eliot Kimber Senior Solutions Architect "Bringing Strategy, Content, and Technology Together" Main: 610.631.6770 www.reallysi.com www.rsuitecms.com
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]