Abstract

xmlroff is a fast, free, high-quality, multi-platform XSL formatter that aims to excel at DocBook formatting and that integrates easily with other programs and with scripting languages.


Table of Contents

Users' Guide
xmlroff - XSL formatter
Conformance
Conformance Levels
Stated Conformance
Formatting Objects
Properties
Developers' Guide
Relating XSL to GObjects
FoObject, FoNode
Formatting Object --> FoFo
Formatting Object property --> FoProperty
XSL datatype --> FoDatatype
Other Objects
Rules of the Code
Abbreviations
Compare pointers to NULL
Directory Structure
Directory structure
xmlroff
Anatomy of a Formatting Object header file
Initial comment
Initial housekeeping
GObject typedefs
GObject #defines
GObject functions
Non-property functions
Property functions
Final housekeeping
Anatomy of a Formatting Object C source code file
Abbreviations
Initial comment
#includes
Property enumeration
Static function prototypes
GObject _get_type() function
GObject class initializer
GObject _new()
FoFo _validate_content()
FoFo _validate()
FoFo _update_from_context()
FoFo _debug_dump_properties()
GObject _get() and _set() for properties
Anatomy of a Formatting Object area source code file
Initial comment
#includes
FoFo _area_new2()
Generating Source
Generating Source
Files
Make targets
Debugging xmlroff
Command Line
Using GDB or other debugger
Basic Interface
Overview
Lifecycle
FoLibfoContext
FoDoc and xmlroff Backends
Backends
FoDoc is YAPC (Yet Another PostScript Clone)
Object Hierarchy
FoObject is wonderful
FoObject - libfo base object type
FoNode is wonderful
FoNode - Object for making trees
Interfaces are truly wonderful
FoBlockFoIface -
FoInlineFoIface -
FoNeutralFoIface -
FoPropertyTextPropertyIface -
FoPixbuf -
FoTableBorderFoIface -
Formatting Objects are truly wonderful
FoFo -
basic-link -
bidi-override -
FoBlockBlock -
block -
block-container -
FoBlockLayout -
FoBlockWhitespace -
FoCharacter -
color-profile -
conditional-page-master-reference -
declarations -
external-graphic -
float -
flow -
footnote-body -
footnote -
initial-property-set -
inline -
inline-container -
instream-foreign-object -
layout-master-set -
leader -
list-block -
list-item-body -
list-item -
list-item-label -
marker -
fo-marker-parent -
multi-case -
multi-properties -
multi-property-set -
multi-switch -
multi-toggle -
page-number -
page-number-citation -
page-sequence -
page-sequence-master -
region-after -
region-before -
region-body -
region-end -
region-start -
repeatable-page-master-alternatives -
repeatable-page-master-reference -
fo-retrieve-marker -
root -
simple-page-master -
single-page-master-reference -
static-content -
table-and-caption -
table-body -
table -
table-caption -
table-cell -
table-column -
table-footer -
table-header -
FoTablePart -
table-row -
FoText -
title -
FoTree - Top of the FO tree
FoWrapperBlock -
FoWrapper -
FoWrapperInline -
FoWrapperInlineEmpty -
FoWrapperWhitespace -
Properties
FoProperty - Abstract FO property type
alignment-adjust -
alignment-baseline -
background-color -
background-image -
baseline-shift -
block-progression-dimension -
block-progression-dimension.minimum -
block-progression-dimension.optimum -
block-progression-dimension.maximum -
border -
border-after-color -
border-after-precedence -
border-after-style -
border-after-width -
border-before-color -
border-before-precedence -
border-before-style -
border-before-width -
border-bottom -
border-bottom-color -
border-bottom-style -
border-bottom-width -
border-collapse -
fo-property-border-color -
border-end-color -
border-end-precedence -
border-end-style -
border-end-width -
border-left -
border-left-color -
border-left-style -
border-left-width - 'border-left-width' property
border-right -
border-right-color -
border-right-style -
border-right-width -
border-separation -
border-start-color -
border-start-precedence -
border-start-style -
border-start-width -
border-style -
border-top -
border-top-color -
border-top-style -
border-top-width -
border-width -
break-after -
break-before -
character -
clip -
color -
column-number -
column-width -
content-height -
content-type -
content-width -
direction -
display-align -
dominant-baseline -
end-indent -
extent -
flow-name -
font-family -
font-size -
font-stretch -
font-style -
font-variant -
font-weight -
format -
grouping-separator -
grouping-size -
height -
id -
inline-progression-dimension -
inline-progression-dimension.minimum -
inline-progression-dimension.optimum -
inline-progression-dimension.maximum -
keep-together -
keep-together.within-column -
keep-together.within-line -
keep-together.within-page -
keep-with-next -
keep-with-next.within-column -
keep-with-next.within-line -
keep-with-next.within-page -
keep-with-previous -
keep-with-previous.within-column -
keep-with-previous.within-line -
keep-with-previous.within-page -
letter-value -
linefeed-treatment -
line-height -
line-stacking-strategy -
margin -
margin-bottom -
margin-left -
margin-right -
margin-top -
master-name -
master-reference -
media-usage -
number-columns-repeated -
number-columns-spanned -
number-rows-spanned -
orphans -
overflow -
padding -
padding-after -
padding-before -
padding-bottom -
padding-end -
padding-left -
padding-right -
padding-start -
padding-top -
page-height -
page-width -
provisional-distance-between-starts -
provisional-label-separation -
ref-id -
region-name -
role -
scaling -
scaling-method -
score-spaces -
source-document -
space-after -
space-after.minimum -
space-after.optimum -
space-after.maximum -
space-after.conditionality -
space-after.precedence -
space-before -
space-before.minimum -
space-before.optimum -
space-before.maximum -
space-before.conditionality -
space-before.precedence -
space-end -
space-end.minimum -
space-end.optimum -
space-end.maximum -
space-end.conditionality -
space-end.precedence -
space-start -
space-start.minimum -
space-start.optimum -
space-start.maximum -
space-start.conditionality -
space-start.precedence -
span -
src -
start-indent -
table-layout -
text-align -
text-indent -
unicode-bidi -
white-space-collapse -
white-space-treatment -
widows -
width -
wrap-option -
writing-mode -
Area Objects
FoArea -
FoAreaArea -
fo-area-graphic -
fo-area-inline -
FoAreaLayout -
FoAreaListItem -
FoAreaNormal -
FoAreaPage -
FoAreaReference -
FoAreaSpanningTableCell -
FoAreaTableBody -
FoAreaTableCellProxy -
FoAreaTableCell -
FoAreaTableContinuation -
FoAreaTableFooter -
FoAreaTableHeader -
FoAreaTablePart -
FoAreaTableRow -
FoAreaTable -
FoAreaTree -
FoAreaViewportReference -
Datatype Objects
FoDatatype -
FoBoolean -
FoChar -
FoColor -
FoEnum -
FoError -
FoExpression -
FoId -
FoInteger -
FoKeep -
FoLength -
FoLengthBpIpD -
FoLengthCond -
FoLengthRange -
FoName -
FoNumber -
FoNumeric -
FoPcw -
FoPercentage -
FoSpace -
FoString -
FoTblr -
FoUnknown -
FoUriSpecification -
FoWsc -
Property Context Object
FoContext -
Other Objects
FoDoc - Abstract output document type
fo-doc-commands -
FoDocCairo - Cairo backend
FoDocGP - GNOME Print backend
FoFontDesc -
FoLayout -
FoLayoutCairo -
fo-layout-gp -
fo-libfo-basic -
FoLibfoContext - Collected information about the processing context
FoXmlDoc - libxml2 xmlDoc document
FoXmlNode -
FoXslFormatter -
FoXsltTransformer - libxslt XSLT processor
Utility Objects
FoHashTable -
FoImage -
Utility Modules
fo-utils -
LibFO compatibility stylesheet -
Additional Pango attributes needed by LibFO -
libfo-version - libfo version checking