The FoTree module provides client access to the relevant parts of a refined FO Tree, as defined by the XSL-FO Recommendation (see Exceptions below. Because the refined tree is exposed, the methods that return property values include the term "trait" in their names. Not all objects and properties are exposed in the API, because some of them are needed only for internal FO Tree purposes (see below for details). Implementations of axslFoTree typically parse an input file or stream to create the FO Tree content.
In addition to compliance with the published API, implementations are expected to fully validate the input data. This means that an FoTreeException should be thrown for any data that does not conform to the data model specified in the standard, or that is identified as an error in the standard. For example, the standard indicates that a table-cell content model is "(%block;)+". An exception should be thrown if children are presented that do not conform to this model. The standard also specifies that "It is an error if two or more table-cells overlap ..." (XSL-FO 1.1, Section 6.7.3". An exception should be thrown if they do, or the remedial steps specified near this statement should be implemented within the FO Tree itself.
In addition to these validation steps, the FO Tree is required to normalize the following items:
The purpose of the validation and normalization specified above is to allow client applications such as AreaTrees and Layout systems to rely on certain assumptions about the validity and structure of the FO Tree.
There are a few places where the aXSL API deviates from the XSL-FO 1.1 Recommendation:
There are several pagination-related XSL-FO objects that do not have corresponding interfaces in the aXSL FoTree. It is not that these are unimportant, but rather that their operation is entirely internal to the FO Tree. Client applications only need to know what fo:simple-page-master they should use, so the "details" of these objects are hidden from the client applications:
Similarly, the following flow-map related objects do not have corresponding interfaces in aXSL. Instead, the substantive information contained in these objects is exposed in methods found in PageSequence (which returns a list of Flows), SimplePageMaster (which returns a list of region-body instances and can return region-body instances when given their names), and Flow (which returns a list of region-body names into which the flow should be laid out):
The table below is a comprehensive list of all XSL-FO 1.1 properties, and indicating either that a method exists to obtain the value of that property, or an explanation of why such a method does not exist. Note that the application must still be able to parse all of these properties. What is documented here is which properties are exposed to client applications.
Property Name | Location of Method |
absolute-position | CommonAbsolutePositionPa |
active-state | ActiveStatePa |
alignment-adjust | AlignmentAdjustPa |
alignment-baseline | AlignmentBaselinePa |
allowed-height-scale | AllowedHeightScalePa |
allowed-width-scale | AllowedWidthScalePa |
auto-restore | AutoRestorePa |
azimuth | CommonAuralPa |
background | No. Shorthand property is normalized into its components. |
background-attachment | CommonBorderPaddingBgPa |
background-color | CommonBorderPaddingBgPa |
background-image | CommonBorderPaddingBgPa |
background-position | No. Shorthand property is normalized into its components. |
background-position-horizontal | CommonBorderPaddingBgPa |
background-position-vertical | CommonBorderPaddingBgPa |
background-repeat | CommonBorderPaddingBgPa |
baseline-shift | BaselineShiftPa |
blank-or-not-blank | No. Applies only to fo:conditional-page-master-reference which is not exposed in this API. |
block-progression-dimension | 3 methods in BlockProgressionDimensionPa. |
border | No. Shorthand property is normalized into its components. |
border-after-color | CommonBorderPaddingBgPa |
border-after-precedence | BorderAfterPrecedencePa |
border-after-style | CommonBorderPaddingBgPa |
border-after-width | CommonBorderPaddingBgPa |
border-before-color | CommonBorderPaddingBgPa |
border-before-precedence | BorderBeforePrecedencePa |
border-before-style | CommonBorderPaddingBgPa |
border-before-width | CommonBorderPaddingBgPa |
border-bottom | No. Shorthand property is normalized into its components. |
border-bottom-color | No. Use relative equivalent instead. |
border-bottom-style | No. Use relative equivalent instead. |
border-bottom-width | No. Use relative equivalent instead. |
border-collapse | BorderCollapsePa |
border-color | No. Shorthand property is normalized into its components. |
border-end-color | CommonBorderPaddingBgPa |
border-end-precedence | BorderEndPrecedencePa |
border-end-style | CommonBorderPaddingBgPa |
border-end-width | CommonBorderPaddingBgPa |
border-left | No. Shorthand property is normalized into its components. |
border-left-color | No. Use relative equivalent instead. |
border-left-style | No. Use relative equivalent instead. |
border-left-width | No. Use relative equivalent instead. |
border-right | No. Shorthand property is normalized into its components. |
border-right-color | No. Use relative equivalent instead. |
border-right-style | No. Use relative equivalent instead. |
border-right-width | No. Use relative equivalent instead. |
border-separation | BorderSeparationPa |
border-spacing | No. Shorthand property is normalized into its components. |
border-start-color | CommonBorderPaddingBgPa |
border-start-precedence | BorderStartPrecedencePa |
border-start-style | CommonBorderPaddingBgPa |
border-start-width | CommonBorderPaddingBgPa |
border-style | No. Shorthand property is normalized into its components. |
border-top | No. Shorthand property is normalized into its components. |
border-top-color | No. Use relative equivalent instead. |
border-top-style | No. Use relative equivalent instead. |
border-top-width | No. Use relative equivalent instead. |
border-width | No. Shorthand property is normalized into its components. |
bottom | CommonAbsolutePositionPa |
break-after | BreakAfterPa |
break-before | BreakBeforePa |
caption-side | CaptionSidePa |
case-name | CaseNamePa |
case-title | CaseTitlePa |
change-bar-class | ChangeBarClassPa |
change-bar-color | ChangeBarColorPa |
change-bar-offset | ChangeBarOffsetPa |
change-bar-placement | ChangeBarPlacementPa |
change-bar-style | ChangeBarStylePa |
change-bar-width | ChangeBarWidthPa |
character | CharacterPa |
clear | ClearPa |
clip | ClipPa |
color | ColorPa |
color-profile-name | ColorProfileNamePa |
column-count | ColumnCountPa |
column-gap | ColumnGapPa |
column-number | ColumnNumberPa |
column-width | ColumnWidthPa |
content-height | No. Used as a factor in FoScaled methods referenceIpd and referenceBpd. |
content-type | ContentTypePa |
content-width | No. Used as a factor in FoScaled methods referenceIpd and referenceBpd. |
country | CommonHyphenationPa |
cue | No. Shorthand property is normalized into its components. |
cue-after | CommonAuralPa |
cue-before | CommonAuralPa |
destination-placement-offset | DestinationPlacementOffsetPa |
direction | DirectionPa |
display-align | DisplayAlignPa |
dominant-baseline | DominantBaselinePa |
elevation | CommonAuralPa |
empty-cells | EmptyCellsPa |
end-indent | CommonMarginBlockPa |
ends-row | No. aXSL FoTree implementations are required to normalize table content to contain table-rows. |
extent | ExtentPa |
external-destination | Normalized to methods found in DestinationPa |
float | FloatPa |
flow-map-name | No. Internal to the implementation. |
flow-map-reference | No. Internal to the implementation. |
flow-name | FlowNamePa |
flow-name-reference | No. Internal to the implementation. |
font | No. Shorthand property is normalized into its components. |
font-family | No. Used as a factor in the getPrimaryFont and getSecondaryFont methods in CommonFontPa. |
font-selection-strategy | No. Used as a factor in the getPrimaryFont and getSecondaryFont methods in CommonFontPa. |
font-size | Not directly. Used as a factor in the traitFontSizeActual method in CommonFontPa. |
font-size-adjust | No. Used as a factor in the traitFontSizeActual method in CommonFontPa. |
font-stretch | No. Used as a factor in the getPrimaryFont and getSecondaryFont methods in CommonFontPa. |
font-style | Not exposed for font-selection purposes. Used as a factor in the getPrimaryFont and getSecondaryFont methods in CommonFontPa. It is exposed for bookmark-title. |
font-variant | No. Used as a factor in the getPrimaryFont and getSecondaryFont methods in CommonFontPa. |
font-weight | Not exposed for font-selection purposes. Used as a factor in the getPrimaryFont and getSecondaryFont methods in CommonFontPa. It is exposed for bookmark-title. |
force-page-count | ForcePageCountPa |
format | FormatPa (After Release 0.2) for PageSequence. Not exposed for ScalingValueCitation. |
glyph-orientation-horizontal | GlyphOrientationHorizontalPa |
glyph-orientation-vertical | GlyphOrientationVerticalPa |
grouping-separator | No. Internal to the implementation. |
grouping-size | No. Internal to the implementation. |
height | No. Normalizes to block-progression-dimension. |
hyphenate | CommonHyphenationPa |
hyphenation-character | CommonHyphenationPa |
hyphenation-keep | HyphenationKeepPa |
hyphenation-ladder-count | HyphenationLadderCountPa |
hyphenation-push-character-count | CommonHyphenationPa |
hyphenation-remain-character-count | CommonHyphenationPa |
id | IdPa |
index-class | IndexClassPa |
index-key | IndexKeyPa |
indicate-destination | IndicateDestinationPa |
initial-page-number | InitialPageNumberPa |
inline-progression-dimension | 3 methods in InlineProgressionDimensionPa |
internal-destination | Normalized to methods found in DestinationPa |
intrinsic-scale-value | Internal to the implementation. Used in the computation of getAppliedScaleFactorString in ScalingValueCitation. |
intrusion-displace | IntrusionDisplacePa |
keep-together | 3 methods in KeepTogetherPa. |
keep-with-next | 3 methods in KeepWithNextPa. |
keep-with-previous | 3 methods in KeepWithPreviousPa. |
language | CommonHyphenationPa |
last-line-end-indent | LastLineEndIndentPa |
leader-alignment | LeaderAlignmentPa |
leader-length | 3 methods in LeaderLengthPa. |
leader-pattern | LeaderPatternPa |
leader-pattern-width | LeaderPatternWidthPa |
left | CommonAbsolutePositionPa |
letter-spacing | 5 methods in LetterSpacingPa. |
letter-value | No. Internal to the implementation. |
linefeed-treatment | No. The operations of this property are completely internal to the FO Tree. |
line-height | Indirectly found in the half-leading traits found in LineHeightPa. |
line-height-shift-adjustment | LineHeightShiftAdjustmentPa |
line-stacking-strategy | LineStackingStrategyPa |
margin | No. Shorthand property is normalized into its components. |
margin-bottom | No. Absolute-direction property is normalized to its relative-direction equivalent (space-after, space-before, etc.) |
margin-left | No. Absolute-direction property is normalized to its relative-direction equivalent (space-after, space-before, etc.) |
margin-right | No. Absolute-direction property is normalized to its relative-direction equivalent (space-after, space-before, etc.) |
margin-top | No. Absolute-direction property is normalized to its relative-direction equivalent (space-after, space-before, etc.) |
marker-class-name | MarkerClassNamePa |
master-name | No. Internal to the implementation. |
master-reference | Internal to the implementation. Used in the selection of page masters. |
max-height | No. Normalized to either inline-progression-dimension or block-progression-dimension. |
maximum-repeats | Internal to the implementation. Used in the selection of page masters. |
max-width | No. Normalized to either inline-progression-dimension or block-progression-dimension. |
media-usage | MediaUsagePa |
merge-pages-across-index-key-references | MergePagesAcrossIndexKeyReferencesPa |
merge-ranges-across-index-key-references | MergeRangesAcrossIndexKeyReferencesPa |
merge-sequential-page-numbers | MergeSequentialPageNumbersPa |
min-height | No. Normalized to either inline-progression-dimension or block-progression-dimension. |
min-width | No. Normalized to either inline-progression-dimension or block-progression-dimension. |
number-columns-repeated | NumberColumnsRepeatedPa |
number-columns-spanned | NumberColumnsSpannedPa |
number-rows-spanned | NumberRowsSpannedPa |
odd-or-even | No. Internal to the implementation. |
orphans | OrphansPa |
overflow | OverflowPa |
padding | No. Shorthand property is normalized into its components. |
padding-after | CommonBorderPaddingBgPa |
padding-before | CommonBorderPaddingBgPa |
padding-bottom | No. Use relative equivalent instead. |
padding-end | CommonBorderPaddingBgPa |
padding-left | No. Use relative equivalent instead. |
padding-right | No. Use relative equivalent instead. |
padding-start | CommonBorderPaddingBgPa |
padding-top | No. Use relative equivalent instead. |
page-break-after | No. Shorthand property is normalized into its components. |
page-break-before | No. Shorthand property is normalized into its components. |
page-break-inside | No. Shorthand property is normalized into its components. |
page-citation-strategy | PageCitationStrategyPa |
page-height | PageHeightPa |
page-number-treatment | PageNumberTreatmentPa |
page-position | No. Internal to implementation. |
page-width | PageWidthPa |
pause | No. Shorthand property is normalized into its components. |
pause-after | CommonAuralPa |
pause-before | CommonAuralPa |
pitch | CommonAuralPa |
pitch-range | CommonAuralPa |
play-during | CommonAuralPa |
position | No. Shorthand property is normalized into its components. |
precedence | Internal to the implementation. Used in the computation of the returned dimensions of the various page regions. |
provisional-distance-between-starts | ProvisionalDistanceBetweenStartsPa |
provisional-label-separation | ProvisionalLabelSeparationPa |
reference-orientation | ReferenceOrientationPa |
ref-id | RefIdPa |
ref-index-key | RefIndexKeyPa |
region-name | RegionNamePa |
region-name-reference | No. Internal to the implementation. |
relative-align | RelativeAlignPa |
relative-position | CommonRelativePositionPa |
rendering-intent | RenderingIntentPa |
retrieve-boundary | RetrieveBoundaryPa |
retrieve-boundary-within-table | RetrieveBoundaryWithinTablePa |
retrieve-class-name | RetrieveClassNamePa |
retrieve-position | RetrievePositionPa |
retrieve-position-within-table | RetrievePositionWithinTablePa |
richness | CommonAuralPa |
right | CommonAbsolutePositionPa |
role | CommonAccessibilityPa |
rule-style | RuleStylePa |
rule-thickness | RuleThicknessPa |
scale-option | Internal to the implementation. Used in the computation of getAppliedScaleFactorString in ScalingValueCitation. |
scaling | No. Used as a factor in FoScaled methods referenceIpd and referenceBpd. |
scaling-method | ScalingMethodPa |
score-spaces | ScoreSpacesPa |
script | CommonHyphenationPa |
show-destination | ShowDestinationPa |
size | No. Shorthand property is normalized into its components. |
source-document | CommonAccessibilityPa |
space-after | 5 methods in CommonMarginBlockPa. |
space-before | 5 methods in CommonMarginBlockPa. |
space-end | 4 methods in CommonMarginInlinePa, and one method in CommonMarginInlineOptimumPa. |
space-start | 4 methods in CommonMarginInlinePa, and one method in CommonMarginInlineOptimumPa. |
span | SpanPa |
speak | CommonAuralPa |
speak-header | CommonAuralPa |
speak-numeral | CommonAuralPa |
speak-punctuation | CommonAuralPa |
speech-rate | CommonAuralPa |
src | SrcPa |
start-indent | CommonMarginBlockPa |
starting-state | StartingStatePa |
starts-row | No. aXSL FoTree implementations are required to normalize table content to contain table-rows. |
stress | CommonAuralPa |
suppress-at-line-break | SuppressAtLineBreakPa |
switch-to | SwitchToPa |
table-layout | TableLayoutPa |
table-omit-footer-at-break | TableOmitFooterAtBreakPa |
table-omit-header-at-break | TableOmitHeaderAtBreakPa |
target-presentation-context | TargetPresentationContextPa |
target-processing-context | TargetProcessingContextPa |
target-stylesheet | TargetStylesheetPa |
text-align | TextAlignPa |
text-align-last | TextAlignLastPa |
text-altitude | TextAltitudePa |
text-decoration | 7 methods in TextDecorationPa |
text-depth | TextDepthPa |
text-indent | TextIndentPa |
text-shadow | TextShadowPa |
text-transform | TexTransformPa, but it is only available to the initial-property-set object. Exposure of this property is an Exception to the XSL-FO 1.1 Recommendation. |
top | CommonAbsolutePositionPa |
treat-as-word-space | TreatAsWordSpacePa |
unicode-bidi | UnicodeBidiPa |
vertical-align | No. Shorthand property is normalized into its components. |
visibility | VisibilityPa |
voice-family | CommonAuralPa |
volume | CommonAuralPa |
white-space | No. Shorthand property is normalized into its components. |
white-space-collapse | No. The processing of this property is internal to the FO Tree. The failure to expose this property is an Exception to the XSL-FO 1.1 Recommendation. |
white-space-treatment | WhiteSpaceTreatmentPa |
widows | WidowsPa |
width | No. Normalizes to inline-progression-dimension. |
word-spacing | 5 methods in WordSpacingPa. |
wrap-option | WrapOptionPa |
writing-mode | WritingModePa |
xml:lang | No. Shorthand property is normalized into its components. |
z-index | ZIndexPa |
The known implementations of axslFoTree are:
Reference applications contain working code that uses axslFoTree: