[Accessibility conventions are described at the bottom of the page]

9. Bookmarks and indexes
[> 10.][< 8.4.10][^^^]
9.0 Additional navigation aids
[> 9.1][> 10.][< 9.][^^][^^^]
Additional navigation aids can help the reader find information easily
[[1] - provides hyperlinks into contents
]
[F1.1]Bookmarks
[[1] - similar to a table of contents, but not presented on the canvas of the publication
[[2] - it is a design pattern to use the same logic to build both the rendered table of contents and the publications bookmark information
][1] - document rendering formats such as Adobe Portable Document Format (PDF) have a bookmark tree
[[2] - viewers render the bookmark tree in a separate window pane
 [2] - interactions in the bookmark pane change the focus of the publication in the main pane
][1] - XSL-FO doesn't apply any presentation constraints or many features on bookmark entries
[[2] - entries are comprised of text and a very small subset of annotations and styles
]]
[F1.1]Indexes
[[1] - far more granular than a table of contents
 [1] - a hierarchical alphabetized summary of key concepts and words found in the publication
 [1] - using page number citations is insufficient to the task
[[2] - page number citations cannot have page ranges and duplicate page number citations resolved into a minimum list of unique page references
][1] - XSL-FO only addresses page number resolution for indexes, not the index structure or rendering
[[2] - up to the stylesheet to accomplish the selection, grouping and ordering of the index entries
]]
[F1.0]A two-pass methodology for PDF files can be used with XSLT 1.0
[[1] - public resource freely available from Crane Softwrights Ltd.
[[2] - [http://www.CraneSoftwrights.com/links/res-pfux.htm]
][1] - the method first renders XML markup on PDF pages using page number citations to resolve all index entries
 [1] - the markup is scraped out of the PDF file by off-the-shelf PDF software
 [1] - the markup is massaged by XSLT to interpret page ranges and eliminate duplication
 [1] - the massaged markup is input to the second pass to render the index hyperlinked into the content
]
[F1.0]Many vendors provide custom extensions for this functionality
[[1] - but extensions are not portable across different tools, thus requiring duplication of the information in an instance enabled for different processors
]
The XSL-FO objects for bookmarks covered in this chapter are:
[[1] - [F1.1]<[bookmark-tree]> ([6.11.1])
[[2] - defines a set of bookmarks for the completed document
][1] - [F1.1]<[bookmark]> ([6.11.2])
[[2] - defines a single bookmark
][1] - [F1.1]<[bookmark-title]> ([6.11.3])
[[2] - specifies the title for a single bookmark
]]
The XSL-FO objects for indexes covered in this chapter are:
[[1] - [F1.1]<[index-page-citation-list]> ([6.10.7])
[[2] - render a formatted list of page numbers and page ranges for a set of index keys
][1] - [F1.1]<[index-page-citation-list-separator]> ([6.10.8])
[[2] - specifies the separation between formatted index entry members
][1] - [F1.1]<[index-page-citation-range-separator]> ([6.10.9])
[[2] - specifies the separation between two page numbers in a page range in a formatted index entry member
][1] - [F1.1]<[index-key-reference]> ([6.10.6])
[[2] - render a formatted list of page numbers and page ranges for a single index key
][1] - [F1.1]<[index-page-number-prefix]> ([6.10.2])
[[2] - specifies the start of pages in the flow for an index page range
][1] - [F1.1]<[index-page-number-suffix]> ([6.10.3])
[[2] - specifies the end of pages in the flow for an index page range
][1] - [F1.1]<[index-range-begin]> ([6.10.4])
[[2] - specifies the suffix for cited pages for a single index key
][1] - [F1.1]<[index-range-end]> ([6.10.5])
[[2] - specifies the suffix for cited pages for a single index key
]]
9.1 Bookmarks
[> 9.2][< 9.0][^^][^^^]
9.1.1 Bookmarks
[> 9.1.2][> 9.2][> 10.][< 9.0][^^][^^^]
A very simple bookmark structure can be defined as a property of the entire publication
[[1] - placed as an optional child of the <[root]> element
 [1] - a hierarchical tree with only one kind of branch
 [1] - an initial state for each entry indicates whether or not the entry appears when the bookmark pane is first opened
 [1] - a single bookmark can point into the given publication or point to an external location
 [1] - no counting limits imposed by XSL-FO (though there may be limits by the reader software)
[[2] - there are no depth restrictions on the nested levels of bookmarks
 [2] - there are no count restrictions on the bookmarks at any given level
]]
[F1.1]<[bookmark-tree]>
[[1] - the root of all of the bookmarks
 [1] - nothing is presented for the root of the bookmark tree
 [1] - must have at least one bookmark child and may have any number more
]
[F1.1]<[bookmark]>
[[1] - a branch of the bookmark tree
 [1] - represents a visible entry in the bookmarks presented to the reader
 [1] - may have any number of bookmark children
]
[F1.1]<[bookmark-title]>
[[1] - a leaf of the bookmark tree showing the title of the bookmark
 [1] - this is the value used by the reader for navigation
 [1] - very limited formatting control
[[2] - only color, bold and italic
]]
The [starting-state]= relates to the visibility of the child bookmarks, not the bookmark to which the property is applied
[[1] - it is thus impossible for all bookmarks to be invisible when starting up
 [1] - the default visibility is "show", making it visible
]
There are many ways one may wish to initialize the visibility of the bookmarks
[[1] - which bookmarks do you want visible when the reader first opens the bookmark pane?
 [1] - just the major sections:
[[2] -
- Prelude
- Overview
+ Introduction
+ Introducing XSL-FO
+ The context of XSL-FO
...
][1] - the publication title and the major sections:
[[2] -
+ Practical Formatting Using XSL-FO
  - Prelude
  - Overview
  + Introduction
  + Introducing XSL-FO
  + The context of XSL-FO
...
][1] - just the publication title:
[[2] -
+ Practical Formatting Using XSL-FO
][1] - fully expanded or expanded to an arbitrary level
]
9.1.2 <bookmark-tree> Object
[> 9.1.3][> 9.2][> 10.][< 9.1.1][^][^^][^^^]
Purpose:
[[1] - the root of the bookmark tree
 [1] - has no visible text
]
Content:
[[1] - [F1.1]([6.11.1]) ([​bookmark]+)
 [1] - Child object:
[[2] - [F1.1]<[bookmark]>([6.11.2];[Section 9.1.3 <bookmark> Object])
][1] - Referring object:
[[2] - <[root]>([6.4.2];[Section 3.3.8 <root> Object])
]]
No properties are defined for this formatting object.
Properties of interest:
[[1] - very limited formatting features
]
An example bookmark tree for this training material
[[1] - only top-levels are initially visible
 [1] - all layers below are initially invisible
]
[Example 9-1:
01  <bookmark-tree>
02   <bookmark internal-destination="index">
03   <bookmark-title>Prelude</bookmark-title>
04   </bookmark>
05   <bookmark internal-destination="start">
06   <bookmark-title>Overview</bookmark-title>
07   </bookmark>
08   <bookmark starting-state="hide" internal-destination="desc">
09   <bookmark-title>Introduction</bookmark-title>
10   <bookmark internal-destination="desc">
11   <bookmark-title>Practical Formatting Using XSL-FO</bookmark-title>
12   </bookmark>
13   </bookmark>
14   <bookmark starting-state="hide" internal-destination="intro-fo">
15   <bookmark-title>Introducing XSL-FO</bookmark-title>
16   <bookmark starting-state="hide" internal-destination="intro-fo-f">
17   <bookmark-title>Introduction</bookmark-title>
18   <bookmark internal-destination="intro-fo-f">
19   <bookmark-title>Contrasting browsed vs. paginated presentations
20  </bookmark-title>
21   </bookmark>
22   </bookmark>
23   </bookmark>
24   <bookmark starting-state="hide" internal-destination="ctxt-fo">
25   <bookmark-title>The context of XSL-FO</bookmark-title>
26   <bookmark starting-state="hide" internal-destination="xml-family">
27   <bookmark-title>Introduction</bookmark-title>
28   <bookmark internal-destination="xml-family">
29   <bookmark-title>Overview</bookmark-title>
30   </bookmark>
31   </bookmark>
32   ...
]
9.1.3 <bookmark> Object
[> 9.1.4][> 9.2][> 10.][< 9.1.2][^][^^][^^^]
Purpose:
[[1] - a branch in the bookmark tree
 [1] - represents a visible entry in the bookmarks presented to the reader
]
Content:
[[1] - [F1.1]([6.11.2]) ([​bookmark-title],[​bookmark]*)
 [1] - Child objects (alphabetical):
[[2] - [F1.1]<[bookmark]>([6.11.2];[Section 9.1.3 <bookmark> Object])
 [2] - [F1.1]<[bookmark-title]>([6.11.3];[Section 9.1.4 <bookmark-title> Object])
][1] - Referring objects:
[[2] - [F1.1]<[bookmark-tree]>([6.11.1];[Section 9.1.2 <bookmark-tree> Object])
 [2] - [F1.1]<[bookmark]>([6.11.2];[Section 9.1.3 <bookmark> Object])
]]
Property sets:
[[1] - [Common Accessibility Properties]([7.5];[Section D.1.2 Common Accessibility Properties])
]
Other optional properties:
[external-destination=]([7.23.6];[Section D.3.3 Property summary])
[internal-destination=]([7.23.8];[Section D.3.3 Property summary])
[starting-state=]([7.23.10];[Section D.3.3 Property summary])
Property of interest:
[[1] - the [starting-state]= visibility applies to the child bookmarks, not the given bookmark
]
9.1.4 <bookmark-title> Object
[> 9.2][> 10.][< 9.1.3][^][^^][^^^]
Purpose:
[[1] - a leaf in the bookmark tree
 [1] - represents a visible text of a bookmark presented to the reader
]
Content:
[[1] - [F1.1]([6.11.3]) (#PCDATA)
 [1] - Referring object:
[[2] - [F1.1]<[bookmark]>([6.11.2];[Section 9.1.3 <bookmark> Object])
]]
Property sets:
[[1] - [Common Accessibility Properties]([7.5];[Section D.1.2 Common Accessibility Properties])
]
Other optional properties:
[color=]([7.18.1];[Section D.3.3 Property summary])
[font-style=]([7.9.7];[Section D.3.3 Property summary])
[font-weight=]([7.9.9];[Section D.3.3 Property summary])
Shorthand influencing the above properties:
[font=]([7.31.13];[Section D.3.3 Property summary])
Properties of interest:
[[1] - very limited formatting features
]
9.2 Indexes
[> 10.][< 9.1.4][^^][^^^]
9.2.1 Resolving indexing page numbers
[> 9.2.2][> 10.][< 9.1.4][^^][^^^]
An arbitrary set of multiple page number citations is unsuitable for use in indexing
[[1] - every <[page-number-citation]/> is always visible so cannot be used
 [1] - any given index entry may have multiple citations where there is unnecessary duplication or detail
[[2] - when two citations end up on the same page, the page number is repeated
 [2] - when citations end up on two or more adjacent pages, all page numbers are shown instead of a page range
]]
[F1.1]<[index-page-citation-list]> groups together sets of index page number citations
[[1] - very flexible and powerful presentation options for resolving and presenting index page numbers
 [1] - no semantics for the presentation of the entry, only the page numbers
 [1] - only the pages formatted up to this element participate in the indexing
]
The presentation of the entire index is still the stylesheet's responsibility
[[1] - sort order
[[2] - are particular letters of the alphabet considered synonyms for grouping under the first letter in the index?
 [2] - when sorting in another language, are the letters starting English words leading, interleaved with, or following the letters starting the other language
[[3] - e.g. interleaved for Latin-based languages (French, German, etc.)
 [3] - e.g. English letters before Japanese letters, with Japanese letter synonyms
 [3] - e.g. Russian letters before English letters
]][1] - grouping of secondary index entries under primary index entries
 [1] - presentation (indentation and appearance)
]
9.2.2 Preparing the content for indexing
[> 9.2.3][> 10.][< 9.2.1][^][^^][^^^]
The content must be seeded with anchors to cite with index citations
[[1] - two kinds of index citations:
[[2] - object citations
[[3] - only citing the descendants of a single page
 [3] - may be more than one page of descendants
 [3] - a point citation could cite an empty wrapper
[[4] - should use [keep-with-next]= property to keep the wrapper on the same page as the item
]][2] - range citations
[[3] - citing a consecutive sequence of pages in a range
 [3] - this range is typically but not necessarily the same as the resolved range in the final index
 [3] - two adjacent or overlapping range citations can end up as either separate ranges or a combined range in the end result
]]]
An index citation has one or two components
[[1] - [index-key]= (mandatory; unique value for each index entry)
[[2] - any value can be used but should be a meaningful and meaningfully-unique value
 [2] - e.g. "primary-value-here"
[[3] - could represent a primary key value
][2] - e.g. "primary-value-here&#xd;secondary-value-here"
[[3] - could represent a secondary key value in the context of a primary key value
 [3] - this relies on the premise that the presence of "&#xd;" in any actual content value is extremely unlikely due to line-end-sequence normalization to &#xa;
]][1] - [index-class]= (optional annotation)
[[2] - this annotates the key with a user-defined characteristic but does not modify the key or make the key unique
 [2] - adjacent page number entries of different index classes remain distinct in the result set of page numbers
 [2] - e.g. distinguishing ranges "iv-xxi, 1-7" from "iv-7"
[[3] - the first uses two different classes for distinction, the second does not
]]]
Most formatting objects can be an object citation
[[1] - the page numbers of all of the areas of the cited formatting object
 [1] - may result in more than one page number
 [1] - using an empty block or inline area suffices to make it a single page number
[[2] - use keep properties to ensure the empty block is on the same page as the information being indexed
]]
A pair of formatting objects is used to define the start and end of a range citation
[[1] - [F1.1]<[index-range-begin]/>
[[2] - marks the start limit of areas defining the pages of the index range
 [2] - useful as a range only when it has an [id]= property
][1] - [F1.1]<[index-range-end]/>
[[2] - marks the ending limit of areas defining the pages of the index range
 [2] - must point to the matching range start by using [ref-id]=
]]
9.2.3 <index-range-begin> Object
[> 9.2.4][> 10.][< 9.2.2][^][^^][^^^]
Purpose:
[[1] - mark the beginning of a range of pages to be cited in the index
]
Content:
[[1] - [F1.1]([6.10.4]) EMPTY
]
Optional properties:
[id=]([7.30.8];[Section D.3.3 Property summary])
[F1.1][index-class=]([7.24.1];[Section D.3.3 Property summary])
[F1.1][index-key=]([7.24.2];[Section D.3.3 Property summary])
Example from indexing.fo sample:
[Example 9-2:
01  <index-range-begin id="a1" index-key="phrase1"/>
02  <block space-before=".5em" keep-with-next="always"
03   index-key="phrase1&#xd;orig">
04  Section 1.10.32 of "de Finibus Bonorum et Malorum"...
05  </block>
06  <block space-before=".5em">
07  "Sed ut perspiciatis unde omnis...
08  </block>
09  <block space-before=".5em" keep-with-next="always"
10   index-key="phrase1&#xd;xlate">
11  1914 translation by H. Rackham
12  </block>
13  <block space-before=".5em">
14  "But I must explain to you how...
15  </block>
16  <index-range-end ref-id="a1"/>
17  <index-range-begin id="a2" index-key="phrase2"/>
18  <block space-before=".5em" keep-with-next="always"
19   index-key="phrase2&#xd;orig">
20  Section 1.10.33 of "de Finibus Bonorum et Malorum"...
21  </block>
22  <block space-before=".5em">
23  "At vero eos et accusamus et iusto...
24  </block>
25  <block space-before=".5em" keep-with-next="always"
26   index-key="phrase2&#xd;xlate">
27  1914 translation by H. Rackham
28  </block>
29  <block space-before=".5em">
30  "On the other hand, we denounce...
31  </block>
32  <index-range-end ref-id="ap2"/>
]
9.2.4 <index-range-end> Object
[> 9.2.5][> 10.][< 9.2.3][^][^^][^^^]
Purpose:
[[1] - mark the end of a range of pages to be cited in the index
]
Content:
[[1] - [F1.1]([6.10.5]) EMPTY
]
Required property:
[ref-id=]([7.30.13];[Section D.3.3 Property summary])
9.2.5 Assembling indexing citations
[> 9.2.6][> 10.][< 9.2.4][^][^^][^^^]
Simplest is to have only a single set of index page number citations
[[1] - one key value per <[index-page-citation-list]> entry
 [1] - no distinguishing index classes
 [1] - <[index-key-reference]> finds all of the pages for a key
[[2] - [ref-index-key]= has the key value
]]
One can include different key values in a single set of page numbers
[[1] - multiple <[index-key-reference]> children of one <[index-page-citation-list]>
 [1] - each can be formatted the same or differently
[[2] - font weight
 [2] - font style
 [2] - <[index-page-number-prefix]>
[[3] - content preceding each page number cited
][2] - <[index-page-number-suffix]>
[[3] - content following each page number cited
]]]
Sample from the XSL-FO specification section 6.10:
[Example 9-3:
01  <index-page-citation-list>
02   <index-key-reference ref-index-key="Eiffel Tower;;;preferred"
03   font-weight="bold"/><!--XB-->
04   <index-key-reference ref-index-key="Eiffel Tower;;;figure"
05   font-style="italic"/><!--XI-->
06   <index-page-number-prefix>
07   <inline>[</inline>
08   </index-page-number-prefix>
09   <index-page-number-suffix>
10   <inline>]</inline>
11   </index-page-number-suffix>
12   </index-key-reference>
13   <index-key-reference ref-index-key="Eiffel Tower;;"/><!--XX-->
14  </index-page-citation-list>
]
[[1] - a collection of three sets of page numbers
 [1] - the first ("XB") is shown in bold to indicate it is the preferred link
 [1] - the second ("XI") is in italics and annotated with square brackets to indicate a page with a figure
 [1] - all other key references ("XX") for the Eiffel Tower are plain
]
9.2.6 <index-page-citation-list> Object
[> 9.2.7][> 10.][< 9.2.5][^][^^][^^^]
Purpose:
[[1] - to render a consolidated and massaged sequence of index page number citations
]
Content:
[[1] - [F1.1]([6.10.7]) ([​index-page-citation-list-separator]?,[​index-page-citation-range-separator]?,[​index-key-reference]+)
 [1] - Child objects (alphabetical):
[[2] - [F1.1]<[index-key-reference]>([6.10.6];[Section 9.2.9 <index-key-reference> Object])
 [2] - [F1.1]<[index-page-citation-list-separator]>([6.10.8];[Section 9.2.7 <index-page-citation-list-separator> Object])
 [2] - [F1.1]<[index-page-citation-range-separator]>([6.10.9];[Section 9.2.8 <index-page-citation-range-separator> Object])
]]
Optional properties:
[F1.1][merge-pages-across-index-key-references=]([7.24.6];[Section D.3.3 Property summary])
[F1.1][merge-ranges-across-index-key-references=]([7.24.4];[Section D.3.3 Property summary])
[F1.1][merge-sequential-page-numbers=]([7.24.5];[Section D.3.3 Property summary])
Properties of interest:
[[1] - use [merge-sequential-page-numbers]= to create ranges from consecutive page number citations, or keep them separate
[[2] - "merge"(default) - a range is created for three or more consecutive page numbers
 [2] - "leave-separate" - pages cited are listed separately
 [2] - acts within pages from each <[index-key-reference]>
 [2] - acts within pages across all <[index-key-reference]> when [merge-ranges-across-index-key-references]= is "merge"
][1] - use [merge-ranges-across-index-key-references]= to ignore key reference distinctions and put all pages into ranges, or respect distinctions and preclude pages from different references from being in the same page range
[[2] - "merge" (default)
 [2] - "leave-separate"
][1] - use [merge-pages-across-index-key-references]= to remove duplicate page citations from different references, or retain all page citations
[[2] - "merge" (default)
 [2] - "leave-separate"
]]
Example from indexing.fo sample:
[Example 9-4:
01   <block>Index</block>
02   <block space-before="1em">Phrase 1 -
03   <index-page-citation-list>
04   <index-key-reference ref-index-key="phrase1"/>
05   </index-page-citation-list>
06   </block>
07   <block start-indent="1cm">original -
08   <index-page-citation-list>
09   <index-key-reference ref-index-key="phrase1&#xd;orig"/>
10   </index-page-citation-list>
11   </block>
12   <block start-indent="1cm">translated -
13   <index-page-citation-list>
14   <index-key-reference ref-index-key="phrase1&#xd;xlate"/>
15   </index-page-citation-list>
16   </block>
17   <block space-before="1em">Phrase 2 -
18   <index-page-citation-list>
19   <index-key-reference ref-index-key="phrase2"/>
20   </index-page-citation-list>
21   </block>
22   <block start-indent="1cm">original -
23   <index-page-citation-list>
24   <index-key-reference ref-index-key="phrase2&#xd;orig"/>
25   </index-page-citation-list>
26   </block>
27   <block start-indent="1cm">translated -
28   <index-page-citation-list>
29   <index-key-reference ref-index-key="phrase2&#xd;xlate"/>
30   </index-page-citation-list>
31   </block>
]
9.2.7 <index-page-citation-list-separator> Object
[> 9.2.8][> 10.][< 9.2.6][^][^^][^^^]
Purpose:
[[1] - defines the sequence of text used to separate cited pages and ranges in a massaged list of page numbers
]
Content:
[[1] - [F1.1]([6.10.8]) (#PCDATA|[​%inline;])*
 [1] - Child object:
[[2] - [%inline;]([6.2];[Section 3.4.3 Inline-level objects])
][1] - Referring object:
[[2] - [F1.1]<[index-page-citation-list]>([6.10.7];[Section 9.2.6 <index-page-citation-list> Object])
]]
No properties are defined for this formatting object.
Default used when not specified by the stylesheet is the two character sequence ""
[[1] - comma followed by a regular, breaking space
 [1] - any specified value is not a global and has scope only within the one <[index-page-citation-list]>
]
9.2.8 <index-page-citation-range-separator> Object
[> 9.2.9][> 10.][< 9.2.7][^][^^][^^^]
Purpose:
[[1] - defines the sequence of text used to separate the first and last number in a single page range in a massaged list of page numbers
]
Content:
[[1] - [F1.1]([6.10.9]) (#PCDATA|[​%inline;])*
 [1] - Child object:
[[2] - [%inline;]([6.2];[Section 3.4.3 Inline-level objects])
][1] - Referring object:
[[2] - [F1.1]<[index-page-citation-list]>([6.10.7];[Section 9.2.6 <index-page-citation-list> Object])
]]
No properties are defined for this formatting object.
Default used when not specified by the stylesheet is the one character "&#x2013;"
[[1] - en dash
 [1] - any specified value is not a global and has scope only within the one <[index-page-citation-list]>
]
9.2.9 <index-key-reference> Object
[> 9.2.10][> 10.][< 9.2.8][^][^^][^^^]
Purpose:
[[1] - retrieve all page numbers on which there are areas from formatting objects with a given key
]
Content:
[[1] - [F1.1]([6.10.6]) ([​index-page-number-prefix]?,[​index-page-number-suffix]?)
 [1] - Child objects (alphabetical):
[[2] - [F1.1]<[index-page-number-prefix]>([6.10.2];[Section 9.2.10 <index-page-number-prefix> Object])
 [2] - [F1.1]<[index-page-number-suffix]>([6.10.3];[Section 9.2.11 <index-page-number-suffix> Object])
][1] - Referring object:
[[2] - [F1.1]<[index-page-citation-list]>([6.10.7];[Section 9.2.6 <index-page-citation-list> Object])
]]
Required property:
[F1.1][ref-index-key=]([7.24.7];[Section D.3.3 Property summary])
Optional property:
[F1.1][page-number-treatment=]([7.24.3];[Section D.3.3 Property summary])
See [Example 9-4] for an example
See [Example 9-3] for an example
Properties of interest:
[[1] - use [page-number-treatment]= to make the cited page number an active hyperlink to the citation using "link"
[[2] - default is that the page number is not linked
]]
9.2.10 <index-page-number-prefix> Object
[> 9.2.11][> 10.][< 9.2.9][^][^^][^^^]
Purpose:
[[1] - defines a sequence of formatting objects to prefix cited pages placed in a massaged list of page numbers
]
Content:
[[1] - [F1.1]([6.10.2]) (#PCDATA|[​%inline;])*
 [1] - Child object:
[[2] - [%inline;]([6.2];[Section 3.4.3 Inline-level objects])
][1] - Referring object:
[[2] - [F1.1]<[index-key-reference]>([6.10.6];[Section 9.2.9 <index-key-reference> Object])
]]
No properties are defined for this formatting object.
9.2.11 <index-page-number-suffix> Object
[> 10.][< 9.2.10][^][^^][^^^]
Purpose:
[[1] - defines a sequence of formatting objects to prefix cited pages placed in a massaged list of page numbers
]
Content:
[[1] - [F1.1]([6.10.3]) (#PCDATA|[​%inline;])*
 [1] - Child object:
[[2] - [%inline;]([6.2];[Section 3.4.3 Inline-level objects])
][1] - Referring object:
[[2] - [F1.1]<[index-key-reference]>([6.10.6];[Section 9.2.9 <index-key-reference> Object])
]]
No properties are defined for this formatting object.


This is an accessible version of Crane's commercial training material. The content has been specifically designed to assist screen reader software in viewing the entire textual content. Figures are replaced with text narratives.

Navigation hints are in square brackets:
[Tx.x] and [Fx.x] are textual representations of the applicability icons;
[digit] indicates list depth for nested lists;
[link [URL]] indicates the URL of a hyperlink if different than link;
[EXAMPLE] indicates an example listing of code;
[FIGURE] indicates the presence of a figure replaced by its description;
[>] jumps forward;
[<] jumps backward;
[^] jumps to start of the section;
[^^] jumps to the start of the chapter;
[^^^] jumps to the table of contents.
Suggestions for improvement are welcome: [info@CraneSoftwrights.com]
Book sales: [http://www.CraneSoftwrights.com/links/trn-acc.htm]
Information: [http://www.CraneSoftwrights.com/links/info-acc.htm]
This content is protected by copyright and, as there are no means to protect this accessible version from plagiarism, please do not make any commercial edition available to others.

+//ISBN 978-1-894049::CSL::Courses::PFUX//DOCUMENT Practical Formatting Using XSL-FO 2008-01-27 17:30UTC//EN
Practical Formatting Using XSL-FO
Seventh Edition - 2008-01-27
ISBN 978-1-894049-19-1
Copyright © Crane Softwrights Ltd.