OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dita message

[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]