Docbook and Frame 7.2

Lynne A. Price lprice at txstruct.com
Thu Jan 5 09:26:27 PST 2006


At 06:45 AM 1/5/2006, Bernard Aschwanden wrote:
>If you are dealing with docbook then I strongly suggest starting with 
>read/write rules that knock out the 8317 elements you don't need and keeps 
>the stuff you find useful. I also found a ton of the attributes to be 
>overkill and dropped them as well.

John,
   I echo Bernard's advice above (by the way, Bernard, thanks for the 
acknowledgment elsewhere in your reply!).

   Let me point out that FrameMaker makes it easy to drop the unneeded 
elements and attributes. When I start a DocBook project, I use FrameMaker's 
File > Structure Tools > Import DTD command to simplify the EDD. This 
command updates an EDD to correspond to a (possibly revised) version of a 
DTD. Since it processes read/write rules, though, any rules to drop 
unneeded elements and attributes affect the result.

   In a bit more detail, Imake a list of all elements (see below for one 
way of doing so). Then given:

   abbrev
   abstract
   accel
   ackno
   acronym
   action
   ...

I use a text editor macro to insert:

   element "

at the beginning of each line and:

   " drop;

at the end to produce:

   element "abbrev" drop;
   element "abstract" drop;
   element "accel" drop;
   element "ackno" drop;
   element "acronym" drop;
   element "action" drop;
   ...

I do something similar for attributes. I save all these rules in a file and 
include that file in my read/write rules.  I delete the rules for elements 
and attributes that I know I want to use. Then I use an application that 
invokes those rules to import the DocBook DTD into the DocBook starter kit 
EDD that comes with FrameMaker. FrameMaker not only removes the element 
definitions for the dropped elements, but it removes references to those 
elements in the general rules for the retained elements. I then have a much 
simpler version of the DocBook starter kit EDD that I can edit to change 
the formatting as necessary for my project. If I later decide I had dropped 
an element or attribute that I want to use, I can remove the associated 
drop rule and import the DTD once more into the current version of my EDD.

To make the list of elements, I create a new EDD by opening the DocBook DTD 
without a structured application. Then I create a list of elements and 
paragraphs (usually an alphabetized list since that makes it easy to locate 
entries in the list) selecting the Tag element to include in the generated 
list and formatting it without page numbers. I save the result as text. I 
do the same for the attributes, selected the Name element to include in the 
list. Since the same attribute may be defined for multiple elements, I 
remove the duplicates with a utility such as the UNIX uniq command.

>Finally, there are enough consultants (myself included) on this list that 
>someone can always be hired to pitch in on the project.

As another such consultant, I agree with the above as well!

>-----Original Message-----
>From: framers-bounces+bernard=publishingsmarter.com at lists.frameusers.com 
>[mailto:framers-bounces+bernard=publishingsmarter.com at lists.frameusers.com] 
>  On Behalf Of John Pitt
>Sent: Thursday, January 05, 2006 5:34 AM
>To: framers at lists.frameusers.com
>Subject: Docbook and Frame 7.2
>
>My questions. How do I:

As Bernard suggested, most (if not all) of your questions are addressed in 
the Structure Application Developer's Guide.

>@ control column widths in tables?

You can have an attribute whose value is a space-separated list of the 
widths of successive columns, such as "1in 3.5cm 200pt". You can request 
proportional widths "3* 2* 5*" divides the available space (which is either 
the width of the text frame or the width of a column) into widths in the 
indicated proportions. More specifically, FrameMaker adds the numeric 
values of all proportional widths, and assigns a width to each column that 
is the numeric value for that column divided by that sum. In this case, 
3+2+5 = 10, so the first column would be 3/10 the width of the available 
space, the next one 2/10, and the last 5/10. You can mix fixed and 
proportional widths:
"2* 3in 1*" makes the middle column 3 inches wide, gives the first column 
2/3 of the remaining space and the last column 1/3.

Alternatively, you can use the CALS table model (which DocBook does) and 
have an empty colspec element at the start of each tgroup. The colspec 
elements exist only in XML (in FrameMaker, they correspond to properties of 
the resulting table and its content rather than to elements). Each defines 
some properties of a table column, including its width.

>@ control the total width of tables?

Unless you are using proportional widths as discussed above, the total 
width of a table is the sum of the column widths.

>@ prevent the last column in multi-column tables appearing as the first 
>column?

By correctly specifying the number of columns, with the correct number of 
colspec elements, with an attribute for the number of columns, or (if all 
tables have the same number of columns) with an FM Property rule.

FM supports DTDs that simply list successive cells without row elements. 
For example:

    <table cols="3">
       <cell>Item</cell>
       <cell>Quantity</cell>
       <cell>Price</cell>
       <cell>Chocolate</cell>
       <cell>3</cell>
       <cell>$27</cell>
       <cell>paper</cell>
       <cell>1</cell>
       <cell>$10.99</cell>
       <cell>soap</cell>
       <cell>2</cell>
       <cell>$5.45</cell>
    </table>

Suppose you have data that is broken into rows, but the number of cells in 
a row is greater than the number of columns:

    <table cols="2">
      <row>
       <cell>Item</cell>
       <cell>Quantity</cell>
       <cell>Price</cell>
      </row>
      <row>
       <cell>Chocolate</cell>
       <cell>3</cell>
       <cell>$27</cell>
      </row>
      <row>
       <cell>paper</cell>
       <cell>1</cell>
       <cell>$10.99</cell>
      </row>
      <row>
       <cell>soap</cell>
       <cell>2</cell>
       <cell>$5.45</cell>
      </row>
    </table>

Although a human can include that the attribute value 2 in the table 
start-tag is an error and a 3-column table is desired, FM attempts to force 
the content into 2 columns.

>@ remove whitespace elegantly?

What white space do you want to remove and what do you consider elegant? In 
general, FM assumes that all data characters in your document are 
significant, including white space characters. However, to allow you to 
indent your XML markup, when opening an XML document, the DocBook client 
that comes with the DocBook starter kit condenses a sequence of white space 
characters into a single space in the content of most elements. You can 
also use a custom FDK client of your own or XSLT to process white space (or 
any other content) however you wish.

>@ find an easily understandable guide to using DocBook/Frame?

DocBook and FrameMaker are two separate tools, and each is documented on 
its own. Rather than looking for documentation on how they work together, 
look for explanations of each of them separately. Then FM's DocBook Starter 
Kit online manual will make sense.

         --Lynne


Lynne A. Price
Text Structure Consulting, Inc.
Specializing in structured FrameMaker consulting, application development, 
and training
lprice at txstruct.com            http://www.txstruct.com
voice/fax: (510) 583-1505      cell phone: (510) 421-2284 





More information about the framers mailing list