Bookmap / bkinfo revision (cleanup and extend the structure; consolidate and organize metadata).
Longer description
The bookmap and bkinfo specializations have become more widely used within the user community. As a basic concept, they have received a high acceptance. Due to the wide use of the bookmap, a list of requirements to the existing bookmap/bkinfo has come in from different companies like IBM, Nokia, and KONE. In addition, current DITA 1.1 proposals offer the possibility for elegantly refining the original design. This proposal is based on these requirements and other contingent TC proposals.
Feature Owner(s)
Nancy Harrison, Chris Kravogel, JoAnn Hackos, Don Day
Scope
Note: The rest of the discussion in this section are design notes that did not fit elsewhere in to the proposal template.
The general constraints for the proposal were to review existing practice to discover any book structures that were not already in the bookmap definition, and to generally clean up the book metadata scattered in several locations. We found the general book structure to be basically okay except for the additional design work needed to finish up the "booklist " structures for collected data.
Upon review of the existing bookmap specialization as used in the DITA Open Toolkit's demo/book directory, and of the known requirements, it was clear that all requirements could be met through a series of mostly backwards-compatible updates to new element definitions and content model additions. The deltas provide broader base capability that companies can specialize in order to constrain behaviors to their requirements (versus creating "parameter-driven" designs that introduce style into the design).
The main change from the original bookmap design is the consolidation of book metadata that had been previously spread across three different parts of markup into a unified book metadata design fully contained within the bookmap structure itself, making use of the new "data" element.
The lists requirement deals with how to specify both the location and content of special chapter-like constructs that generally have content derived by query during processing, such as a Table of contents, or lists of terms or endnotes. The balance here was for the design to allow author flexibility to specify which lists are important for a deliverable while leaving the ordering and location of these parts up to the policies of the house style (enforced by the transforms). The solution is a specialized topicgroup (booklists) at the start of the bookmap that has specialized topicrefs that represent the various booklist types. Authors can insert 0 or more of these "markers" into the booklists parent, where they represent instructions to the formatter to generate the appropriate content in the house style. A general override transform can offer call-templates that can be arranged in different order or commented out to effect a house policy for layout of such affordances. This increases the portability of the base bookmap between different processors.
Two requirements (transitional text between topics and limited nesting) were felt to be examples of further specialization that an organization can impose/infuse into local practice. Transitional text can be effected by specializing a topicref so that its topicmeta/shortdesc is available for "inline" discourse between other topicrefs in a map. Nesting limits can be effected locally by specializing topics down to a cutoff depth, as with DocBook's numbered sections, or by creating XSLT that counts the levels and generates a report of out-of-bound nesting.
Use Cases
{Describe this feature's use, as if ideally implemented.}
Technical Requirements
The current collection of bookmap-only requirements that inform on the proposed design are:
Costs
Benefits
The use of the consolidated bookmap would allow users to create a cohesive linear document out of their topics. They would be able to surround their current DITA topics with the information required by their organizations for published materials.
The bookmap proposal enables existing maps of information to be conrefed into bookmap structures, making it faster to produce a book based largely on existing ditamaps.
Time Required
Structures
| New structure | naming influences | legacy fragment | proposed declaration | content model |
|---|---|---|---|---|
| bookmeta | after "topicmeta for books" | bkinfo, prolog, bkbasicinfo | specialized topicmeta, first in bookmap | The structures that follow! |
| booklists | after "lists for books" | not previously implemented | specialized topicgroup, first in bookmap following bookmeta, populated with specialized topicrefs. | Toc, figures, tables, glossary terms, etc.. Zero or more occurance (empty parent is okay). No @href means generate the content; provided @href means use that content. |
| special notices | peer to edition notices; contains terms and other legal/policy info. | not previously implemented | specialized topicref | href to any topic type |
| New structure | naming influences | legacy fragment | proposed declaration | Content model |
|---|---|---|---|---|
| Author Information | . | none - container | bookmeta/authorInformation | (person | organization)*, contact* |
| person | DITA, DocBook, IBMIDDoc | bkinfo/bkinfobody/bkhistory/bkauthored/person | bookmeta/authorInformation/person | honorific?, givenname*, middlename*, familyname*, lineage?, address*, phone*, resource*, summary?, affiliations?, otherinfo* |
| organization | . | bkinfo/bkinfobody/bkhistory/bkauthored/organization | bookmeta/authorInformation/organization | orgname?, address*, phone*, resource*, summary?, otherinfo* |
| contact | . | . | bookmeta/authorInformation/contact | (person | organization)* |
| phone | DITA, DocBook, IBMIDDoc | person/phone, organization/phone | bookmeta/person/phone, bookmeta/organization/phone | office*, fax*, cellular*, URL* |
Note: This leaves out the "Contact department" request. I am not sure where to list that - should it be part of the <person> model? An addition to <contact>?
Note: Unsure how to set the model of the phone element - how to identify the different types? Different numbers, or should there be a marker (such as <cellular/>) inside the phone element?
Note: The content model for person, organization, and elements within those is the same in the original bkinfo and in this new proposal.
| New structure | naming influences | legacy fragment | proposed declaration | Content model |
|---|---|---|---|---|
| Publisher Information | . | none - container | bookmeta/publisherInformation | (person | organization)*, bkprintloc*, bkpublished*, colophon? |
| bkpublished | . | bkinfo/bkinfobody/bkhistory/bkpublished | bookmeta/publisherInformation/bkpublished | same as in bkinfo |
| colophon | . | . | bookmeta/publisherInformation/colophon | empty - this would be a reference to the topic that describes the colophon |
Note: The bkpublished information moved from bkhistory in the original bkinfo.
| New structure | naming influences | legacy fragment | proposed declaration | Content model |
|---|---|---|---|---|
| book change history | DITA | bkinfo/bkinfobody/bkhistory | bookmeta/bkChangeHistory | (*(%bkreviewed;) | (%bkedited;) | (%bktested;) | (%bkapproved;) | (%bkevent;))* |
Title Information / Book Identification
| New structure | naming influences | legacy fragment | proposed declaration | content model |
|---|---|---|---|---|
| BookTitle | DITA, IBMIDDoc, DocBook | No global container | bkbooktitle | . |
| Book Library | DITA, IBMIDDoc, DocBook | bkinfo/bkid/bkvolume/bklibrary | bkbooktitle/bklibrary | . |
| Book Title | DITA, IBMIDDoc, DocBook | bkinfo/title | bkbooktitle/bktitle | . |
| Short/Abbreviated Title | Docbook (titleabbrev); IDDoc (stitle) | bkinfo/bktitlealts/bktitleabbrev | bkbooktitle/bktitlealt | . |
| New structure | naming influences | legacy fragment | proposed declaration | content model |
|---|---|---|---|---|
| Book identification | DITA, IBMIDDoc, DocBook | bkinfo/bkid | bookmeta/bkid | . |
| Book/document Number | DITA, IBMIDDoc, DocBook | bkinfo/bkid/bknum | bookmeta/bkid/bknum | . |
| ISBN | DITA, IBMIDDoc, DocBook | bkinfo/isbn | bookmeta/bkid/isbn | . |
| Part number | . | bkinfo/bkpartno | bookmeta/bkid/bkpartno | . |
| Volume number | . | bkinfo/bkid/bkvolume/bkvolid | bookmeta/bkid/bkvolume | . |