Extensible Stylesheet Language (XSL) Version 2.0 code { font-family: monospace; }
div.constraint, div.issue, div.note, div.notice { margin-left: 2em; }
ol.enumar { list-style-type: decimal; } ol.enumla { list-style-type: lower-alpha; } ol.enumlr { list-style-type: lower-roman; } ol.enumua { list-style-type: upper-alpha; } ol.enumur { list-style-type: upper-roman; }
div.exampleInner pre { margin-left: 1em; margin-top: 0em; margin-bottom: 0em} div.exampleOuter {border: 4px double gray; margin: 0em; padding: 0em} div.exampleInner { background-color: #d5dee3; border-top-width: 4px; border-top-style: double; border-top-color: #d3d3d3; border-bottom-width: 4px; border-bottom-style: double; border-bottom-color: #d3d3d3; padding: 4px; margin: 0em } div.exampleWrapper { margin: 4px } div.exampleHeader { font-weight: bold; margin: 4px} This version: http://www.w3.org/TR/2012/WD-xslfo20-20120117/ Latest version: http://www.w3.org/TR/xslfo20/ Previous version: http://www.w3.org/TR/2011/WD-xslfo20-20110927/ Editor: Dave Pawson, This document is also available in these non-normative formats: XML file Copyright W3C ® MIT ERCIM Keio liability trademark document use This specification defines the features and syntax for the Extensible Stylesheet Language (XSL), a language for expressing stylesheets. It consists of two parts: a language for transforming XML documents (XSLT, a separate specification), and an XML vocabulary for specifying formatting semantics (XSL-FO, this document). XSL-FO is a template-based XML vocabulary and expression language for formatting. It is intended that people first transform their XML documents into XSL-FO, for example using XSLT, and then use an XSL-FO formatter to generate a rendered result, for example in PDF. In this way arbitrary XML documents can be formatted. XSL-FO uses Cascading Style Sheet (CSS) properties, extended where necessary, for the actual format, but also supplies the concept of page templates (page masters, in XSL-FO terminology), and also supports relatively sophisticated document formatting, including index generation. This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index This document is a Working-Group Draft containing proposals for an eventual XSL-FO 2.0 Recommendation. This is the first document that incorporates both the previous XSL-FO 1.1 specification and new work. Because of limited resources, this draft does not yet contain all of the work that was in the previous version, published as Design Notes. This does not reflect an intent to drop that work. Comments on this document should be made using bugzilla, at bugzilla [email protected] public archive www.w3.org/XML/2008/xsl-fo-bugzilla.html Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress. This document has been produced as part of the W3C XML Activity XML Print and Page Layout Working Group General public discussion of XSL takes place on the XSL-List [email protected] This document was produced by a group operating under the 5 February 2004 W3C Patent Policy public list of any patent disclosures Essential Claim(s) 6 of the W3C Patent Policy 1 Introduction and Overview Processing a Stylesheet Tree Transformations Formatting Benefits of XSL Paging and Scrolling Selectors and Tree Construction An Extended Page Layout Model A Comprehensive Area Model Internationalization and Writing-Modes Linking XSL Transformation Tree Construction XSL Namespace Introduction to Formatting Conceptual Procedure Area Model Introduction Rectangular Areas Area Types Common Traits Geometric Definitions Tree Ordering Stacking Constraints Spaces and Conditionality Space-resolution Rules Overconstrained space-specifiers Block-areas Stacked Block-areas Positioning in the block-progression direction Feathering Correlating position in the block-progression direction Vertical alignment within a page or column Vertical justification across pages and columns Intrusion Adjustments Line-areas Inline-areas Stacked Inline-areas Glyph-areas Font Baseline Tables Ordering Constraints General Ordering Constraints Line-building Inline-building Keeps and Breaks Rendering Model Geometry Viewport Geometry Visibility Border, Padding, and Background Intrinsic Marks Layering and Conflict of Marks Sample Area Tree Copyfitting Summary Copyfit: basic approach and definitions Copyfit Examples Content Adjusting Strategies Property Refinement / Resolution Specified, Computed, and Actual Values, and Inheritance Specified Values Computed Values Actual Values Inheritance Shorthand Expansion Computing the Values of Corresponding Properties Border and Padding Properties Margin, Space, and Indent Properties Height, and Width Properties Overconstrained Geometry Simple Property to Trait Mapping Background-position-horizontal and background-position-vertical Properties Column-number Property Text-align Property Text-align-last Property z-index Property Language Property Complex Property to Trait Mapping Word spacing and Letter spacing Properties Reference-orientation Property Writing-mode and Direction Properties Absolute-position Property Relative-position Property Text-decoration Property Font Properties Fonts and Font Data Non-property Based Trait Generation Property Based Transformations Text-transform Property Alignment Properties Ruby Block and Line-related Properties for Ruby Unicode BIDI Processing Expressions Property Context Evaluation Order Basics Function Calls Numerics Absolute Numerics Relative Numerics Percents Relative Lengths Strings Colors Keywords inherit Lexical Structure Expression Value Conversions Definitions of Units of Measure Pixels Core Function Library Number Functions Color Functions Uncalibrated device color Font Functions Property Value Functions Property Datatypes Numbering Composition Improved font support Force line justification Alignment around breaks Tabs and tab stops Word and letter spacing Hyphenation and line breaking Formatting Objects Introduction to Formatting Objects Definitions Common to Many Formatting Objects Formatting Object Content Formatting Objects Summary Declarations and Pagination and Layout Formatting Objects Introduction Page-sequence-masters Page-masters Page Generation Flows and Flow Mapping Constraints on Page Generation Pagination Tree Structure Example Flow Maps Two flows mapping into their own regions A flow mapping into two regions Two flows mapping into a region Two flows mapping into two regions Initial Caps Side by Side Common Dependencies Properties for Formatting Objects Content Boundaries Stacking Control Widow and Orphan Management fo:root fo:declarations fo:color-profile fo:page-sequence fo:page-sequence-wrapper fo:layout-master-set fo:page-sequence-master fo:single-page-master-reference fo:repeatable-page-master-reference fo:repeatable-page-master-alternatives fo:conditional-page-master-reference fo:page-master fo:simple-page-master fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:region Extension Regions fo:extension-region-start fo:extension-region-end fo:shape-path-specifier fo:shape-background-specifier fo:shape-border-specifier fo:flow fo:static-content fo:title fo:flow-map fo:flow-assignment fo:flow-source-list fo:flow-name-specifier fo:flow-target-list fo:region-name-specifier Block-level Formatting Objects Introduction Example fo:block fo:block-container fo:alternative-copyfit-content Inline-level Formatting Objects Introduction Examples First Line of Paragraph in Small-caps Figure with a Photograph Page numbering and page number reference Table of Contents with Leaders fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:folio-prefix fo:folio-suffix fo:scaling-value-citation fo:ruby fo:ruby-base fo:ruby-text fo:ruby-parenthesis fo:ruby-base-container-text fo:ruby-text-container Formatting Objects for Tables Introduction Table header and footer on boundaries Split tables Repeating the contents of split spanned cell Cell borders extending beyond the table Cell spans over rows and columns Columns with different widths, colors etc. Table Examples Simple Table, Centered and Indented Simple Table with Relative Column-width Specifications fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:table-header-alternatives fo:table-footer-alternatives fo:conditional-table-header-reference fo:conditional-table-footer-reference Formatting Objects for Lists Introduction Examples Enumerated List HTML-style "dl" lists fo:list-block fo:list-item fo:list-item-body fo:list-item-label Dynamic Effects: Link and Multi Formatting Objects Introduction Examples Expandable/Collapsible Table of Contents Styling an XLink Based on the Active State fo:basic-link fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-properties fo:multi-property-set Formatting Objects for Indexing Introduction Example Associating Index Keys with Formatting Objects Building the Index Processing the Example Index merge-pages-across-index-key-references="leave-separate" merge-pages-across-index-key-references="merge" Example Index fo:index-page-number-prefix fo:index-page-number-suffix fo:index-range-begin fo:index-range-end fo:index-key-reference fo:index-page-citation-list fo:index-page-citation-list-separator fo:index-page-citation-range-separator Formatting Objects for Bookmarks fo:bookmark-tree fo:bookmark fo:bookmark-title Out-of-Line Formatting Objects Introduction Floats Footnotes Conditional Sub-Regions Examples Floating Figure Footnote fo:float fo:marginalia fo:marginalia-body fo:footnote fo:footnote-body Other Formatting Objects Introduction Examples Wrapper Table Markers fo:change-bar-begin fo:change-bar-end fo:wrapper fo:marker fo:retrieve-marker fo:retrieve-table-marker fo:number fo:retrieve-number Formatting Properties Description of Property Groups XSL Areas and the CSS Box Model Reference Rectangle for Percentage Computations Additional CSS Datatypes Common Accessibility Properties source-document role Common Absolute Position Properties absolute-position bottom left right top Common Aural Properties azimuth cue-after cue-before elevation pause-after pause-before pitch pitch-range play-during richness speak speak-header speak-numeral speak-punctuation speech-rate stress voice-family volume Common Border, Padding, and Background Properties background-attachment background-color background-image background-position-horizontal background-position-vertical background-repeat border-after-color border-after-style border-after-width border-before-color border-before-style border-before-width border-bottom-color border-bottom-style border-bottom-width border-end-color border-end-style border-end-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width border-start-color border-start-style border-start-width border-top-color border-top-style border-top-width padding-after padding-before padding-bottom padding-end padding-left padding-right padding-start padding-top Common Font Properties font-family font-selection-strategy font-size font-size-adjust font-stretch font-style font-variant font-weight Common Hyphenation Properties country hyphenate hyphenation-character hyphenation-push-character-count hyphenation-remain-character-count language script hyphenation-push-syllable-count hyphenation-remain-syllable-count syllable-widows hyphenation-exceptions word-widows min-length-of-last-line last-line-minimum-deficit hyphenation-permitted-minimum-deficit Common Margin Properties-Block end-indent margin-bottom margin-left margin-right margin-top space-after space-before start-indent Common Margin Properties-Inline space-end space-start Common Relative Position Properties relative-position Common Wrap Properties wrap wrap-path wrap-side Area Alignment Properties alignment-adjust alignment-baseline block-unit baseline-shift display-align display-align-last display-align-last-column dominant-baseline relative-align marginalia-relative-align flow-map-dependency-reference dependency-content-begin dependency-content-end keep-with-dependent-content Area Dimension Properties allowed-height-scale allowed-width-scale block-progression-dimension content-height content-width height inline-progression-dimension max-height max-width min-height min-width scaling scaling-method width Block and Line-related Properties hyphenation-keep hyphenation-ladder-count last-line-end-indent line-height line-height-shift-adjustment line-stacking-strategy linefeed-treatment text-align text-align-last text-indent white-space-collapse white-space-treatment wrap-option initial-cap-lines initial-cap-lines-before initial-cap-kern-lines initial-cap-indent hanging-punctuation tab-stops tab-alignment-character Character Properties character letter-spacing suppress-at-line-break text-decoration text-shadow text-transform treat-as-word-space word-spacing word-spacing-critical-length Color-related Properties color color-profile-name rendering-intent Float-related Properties clear float intrusion-displace Keeps and Breaks Properties break-after break-before keep-together keep-with-next keep-with-previous orphans widows text-align-before-break text-align-after-break Layout-related Properties clip overflow reference-orientation span bleed-box trim-box Leader and Rule Properties leader-alignment leader-pattern leader-pattern-width leader-length rule-style rule-thickness Properties for Dynamic Effects Formatting Objects active-state auto-restore case-name case-title destination-placement-offset external-destination indicate-destination internal-destination show-destination starting-state switch-to target-presentation-context target-processing-context target-stylesheet Properties for Indexing index-class index-key page-number-treatment merge-ranges-across-index-key-references merge-sequential-page-numbers merge-pages-across-index-key-references ref-index-key Properties for Markers marker-class-name retrieve-boundary-within-table retrieve-class-name retrieve-boundary retrieve-position retrieve-position-within-table Ruby ruby-position ruby-alignment ruby-group-distribution ruby-alignment-edge ruby-align ruby-overhang ruby-overhang-length ruby-span ruby-size ruby-proportion ruby-mode line-stacking-annotation Numbering Properties Property reference-name Property reference-value number-ref-id layout-level reset-level initial-value interval reset-value display-when display-position number-align number-area-extent decimal-format ordinal number-ref-id level Properties for Number to String Conversion format grouping-separator grouping-size letter-value Pagination and Layout Properties blank-or-not-blank column-count column-gap distance extent flow-map-name flow-map-reference flow-name flow-name-reference force-page-count initial-page-number master-name master-reference maximum-repeats media-usage odd-or-even page-height page-position page-width precedence region-name region-name-reference sequence-repeats adjustable-properties Value list simplification Priority fo:alternative-copyfit-content marginalia-destination-area Table Properties border-after-precedence border-before-precedence border-collapse border-end-precedence border-separation border-start-precedence caption-side column-number column-width empty-cells ends-row number-columns-repeated number-columns-spanned number-rows-spanned starts-row table-layout table-omit-footer-at-break table-omit-header-at-break header-position footer-position table-overflow border-break border-before-break border-after-break border-start-break border-end-break border-break-style border-start-break-style border-end-break-style border-before-break-style border-after-break-style Writing-mode-related Properties direction glyph-orientation-horizontal glyph-orientation-vertical text-altitude text-depth unicode-bidi writing-mode Miscellaneous Properties change-bar-class change-bar-color change-bar-offset change-bar-placement change-bar-style change-bar-width content-type id intrinsic-scale-value page-citation-strategy provisional-distance-between-starts provisional-label-separation ref-id scale-option score-spaces src visibility z-index xml:base output-base-uri Shorthand Properties background background-position border border-bottom border-color border-left border-right border-spacing border-style border-top border-width cue font margin padding page-break-after page-break-before page-break-inside pause position size vertical-align white-space xml:lang Conformance A Formatting Object Summary Declaration and Pagination and Layout Formatting Objects Block Formatting Objects Inline Formatting Objects Table Formatting Objects List Formatting Objects Link and Multi Formatting Objects Out-of-line Formatting Objects Formatting Objects for Indexing Formatting Objects for Bookmarks Other Formatting Objects Property Summary Explanation of Trait Mapping Values Property Table: Part I Property Table: Part II Properties and the FOs they apply to References Normative References Other References Property Index Changes from XSL 1.1 Acknowledgements This specification defines the Extensible Stylesheet Language (XSL). XSL is a language for expressing stylesheets. Given a class of arbitrarily structured XML [XML] [XML 1.1] An XSL stylesheet processor tree transformation formatting formatter. Tree transformation allows the structure of the result tree to be significantly different from the structure of the source tree. For example, one could add a table-of-contents as a filtered selection of an original source document, or one could rearrange source data into a sorted tabular presentation. In constructing the result tree, the tree transformation process also adds the information necessary to format that result tree. Formatting is enabled by including formatting semantics in the result tree. Formatting semantics are expressed in terms of a catalog of classes of formatting objects. formatting properties The XSL processing model is intended to be conceptual only. An implementation is not mandated to provide these as separate processes. Furthermore, implementations are free to process the source document in any way that produces the same result as if it were processed using the conceptual XSL processing model. A diagram depicting the detailed conceptual model is shown below. Figure 1. Tree transformation constructs the result tree. In XSL, this tree is called the element and attribute tree, [XSLT] Figure 2. The XSL stylesheet is used in tree transformation. A stylesheet contains a set of tree construction rules. The tree construction rules have two parts: a pattern that is matched against elements in the source tree and a template that constructs a portion of the result tree. This allows a stylesheet to be applicable to a wide class of documents that have similar source tree structures. In some implementations of XSL/XSLT, the result of tree construction can be output as an XML document. This would allow an XML document which contains formatting objects and formatting properties to be output. This capability is neither necessary for an XSL processor nor is it encouraged. There are, however, cases where this is important, such as a server preparing input for a known client; for example, the way that a WAP ( http://www.wapforum.org/faqs/index.htm Formatting interprets the result tree in its formatting object tree form to produce the presentation intended by the designer of the stylesheet from which the XML element and attribute tree in the "fo" namespace was constructed. The vocabulary of formatting objects supported by XSL - the set of fo: The properties associated with an instance of a formatting object control the formatting of that object. Some of the properties, for example " color space-before Formatting consists of the generation of a tree of geometric areas, called the area tree background padding character character Rendering takes the area tree, the abstract model of the presentation (in terms of pages and their collections of areas), and causes a presentation to appear on the relevant medium, such as a browser window on a computer display screen or sheets of paper. The semantics of rendering are not described in detail in this specification. The first step in formatting is to "objectify" the element and attribute tree obtained via an XSLT transformation. Objectifying the tree basically consists of turning the elements in the tree into formatting object nodes and the attributes into property specifications. The result of this step is the formatting object tree Figure 3. As part of the step of objectifying, the characters that occur in the result tree are replaced by fo:character fo:character fo:character The content of the fo:instream-foreign-object fo:instream-foreign-object fo:declarations fo:declarations The second phase in formatting is to refine the formatting object tree to produce the refined formatting object tree white-space-treatment linefeed-treatment 5 Property Refinement / Resolution The refinement step is depicted in the diagram below. Figure 4. The third step in formatting is the construction of the area tree. The area tree is generated as described in the semantics of each formatting object. The traits applicable to each formatting object class control how the areas are generated. Although every formatting property may be specified on every formatting object, for each formatting object class, only a subset of the formatting properties are used to determine the traits for objects of that class. Area generation is depicted in the diagram below. Figure 5. Figure 6. Unlike the case of HTML, element names in XML have no intrinsic presentation semantics. Absent a stylesheet, a processor could not possibly know how to render the content of an XML document other than as an undifferentiated string of characters. XSL provides a comprehensive model and a vocabulary for writing such stylesheets using XML syntax. This document is intended for implementors of such XSL processors. Although it can be used as a reference manual for writers of XSL stylesheets, it is not tutorial in nature. XSL builds on the prior work on Cascading Style Sheets [CSS2] [DSSSL] Doing both scrollable document windows and pagination introduces new complexities to the styling (and pagination) of XML content. Because pagination introduces arbitrary boundaries (pages or regions on pages) on the content, concepts such as the control of spacing at page, region, and block boundaries become extremely important. There are also concepts related to adjusting the spaces between lines (to adjust the page vertically) and between words and letters (to justify the lines of text). These do not always arise with simple scrollable document windows, such as those found in today's browsers. However, there is a correspondence between a page with multiple regions, such as a body, header, footer, and left right XSL was developed to give designers control over the features needed when documents are paginated as well as to provide an equivalent "frame" based structure for browsing on the Web. To achieve this control, XSL has extended the set of formatting objects and formatting properties beyond those available in either CSS2 or DSSSL. In addition, the selection of XML source components that can be styled (elements, attributes, text nodes, comments, and processing instructions) is based on XSLT and XPath [XPath] The design of the formatting objects and properties extensions was first inspired by DSSSL. The actual extensions, however, do not always look like the DSSSL constructs on which they were based. To either conform more closely with the CSS2 specification or to handle cases more simply than in DSSSL, some extensions have diverged from DSSSL. There are several ways in which extensions were made. In some cases, it sufficed to add new values, as in the case of those added to reflect a variety of writing-modes, such as top-to-bottom and bottom-to-top, rather than just left-to-right and right-to-left. In other cases, common properties that are expressed in CSS2 as one property with multiple simultaneous values, were split into several new properties to provide independent control over independent aspects of the property. For example, the " white-space white-space-treatment linefeed-treatment white-space-collapse wrap-option In still other cases, it was necessary to create new properties. For example, there are a number of new properties that control how hyphenation is done. These include identifying the script country hyphenation-character script script Some of the formatting objects and many of the properties in XSL come from the CSS2 specification, ensuring compatibility between the two. There are four classes of XSL properties that can be identified as: CSS properties by copy (unchanged from their CSS2 semantics) CSS properties with extended values CSS properties broken apart and/or extended XSL-only properties As mentioned above, XSL uses XSLT and XPath for tree construction and pattern selection, thus providing a high degree of control over how portions of the source content are presented, and what properties are associated with those content portions, even where mixed namespaces are involved. For example, the patterns of XPath allow the selection of a portion of a string or the Nth text node in a paragraph. This allows users to have a rule that makes all third paragraphs in procedural steps appear in bold, for instance. In addition, properties can be associated with a content portion based on the numeric value of that content portion or attributes on the containing element. This allows one to have a style rule that makes negative values appear in "red" and positive values appear in "black". Also, text can be generated depending on a particular context in the source tree, or portions of the source tree may be presented multiple times with different styles. There is a set of formatting objects in XSL to describe both the layout structure of a page or "frame" (how big is the body; are there multiple columns; are there headers, footers, or sidebars; how big are these) and the rules by which the XML source content is placed into these "containers". The layout structure is defined in terms of one or more instances of a "simple-page-master" formatting object. This formatting object allows one to define independently filled regions for the body (with multiple columns), a header, a footer, and sidebars on a page. These simple-page-masters can be used in page sequences that specify in which order the various simple-page-masters shall be used. The page sequence also specifies how styled content is to fill those pages. This model allows one to specify a sequence of simple-page-masters for a book chapter where the page instances are automatically generated by the formatter or an explicit sequence of pages such as used in a magazine layout. Styled content is assigned to the various regions on a page by associating the name of the region with names attached to styled content in the result tree. In addition to these layout formatting objects and properties, there are properties designed to provide the level of control over formatting that is typical of paginated documents. This includes control over hyphenation, and expanding the control over text that is kept with other text in the same line, column, or on the same page. The extension of the properties and formatting objects, particularly in the area on control over the spacing of blocks, lines, and page regions and within lines, necessitated an extension of the CSS2 box formatting model. This extended model is described in 4 Area Model 7.2 XSL Areas and the CSS Box Model There are some scripts, in particular in the Far East, that are typically set with words proceeding from top-to-bottom and lines proceeding either from right-to-left (most common) or from left-to-right. Other directions are also used. Properties expressed in terms of a fixed, absolute frame of reference (using top, bottom, left, and right) and which apply only to a notion of words proceeding from left to right or right to left do not generalize well to text written in those scripts. For this reason XSL (and before it DSSSL) uses a relative frame of reference for the formatting object and property descriptions. Just as the CSS2 frame of reference has four directions (top, bottom, left and right), so does the XSL relative frame of reference have four directions (before, after, start, and end), but these are relative to the " writing-mode writing-mode writing-mode 7.32.7 writing-mode writing-mode writing-mode character [UNICODE Character Database] [UNICODE UAX #9] Besides the directions that are explicit in the name of the value of the " writing-mode writing-mode Because XML, unlike HTML, has no built-in semantics, there is no built-in notion of a hypertext link. In this context, "link" refers to "hypertext link" as defined in http://www.w3.org/TR/html401/struct/links.html#h-12.1 http://www.w3.org/TR/xlink/#intro XSL provides a few mechanisms for changing the presentation of a link target that is being visited. One of these mechanisms permits indicating the link target as such; another allows for control over the placement of the link target in the viewing area; still another permits some degree of control over the way the link target is displayed in relationship to the originating link anchor. XSL also provides a general mechanism for changing the way elements are formatted depending on their active state. This is particularly useful in relation to links, to indicate whether a given link reference has already been visited, or to apply a given style depending on whether the mouse, for instance, is hovering over the link reference or not. The Tree Construction is described in "XSL Transformations" [XSLT] [XML] [XML Names] [XML 1.1] [XML Names 1.1] The provisions in "XSL Transformations" form an integral part of this Recommendation and are considered normative. Because the data model is the same whether the original document was XML 1.0 or XML 1.1, the semantics of XSLT processing do not depend on the version of XML used by the original document. There is no reason in principle why all the documents used in a single transformation must conform to the same version of XML. The XSL namespace has the URI http://www.w3.org/1999/XSL/Format Note: The 1999 XSL processors must use the XML namespaces mechanism ( [XML Names] [XML Names 1.1] This specification uses the prefix fo: An element from the XSL namespace may have any attribute not from the XSL namespace, provided that the expanded-name It is an error for an element from the XSL namespace to have attributes with expanded-names that have null namespace URIs (i.e., attributes with unprefixed names) other than attributes defined in this document. Note: The conventions used for the names of XSL elements, attributes, and functions are as follows: names are all lowercase, hyphens are used to separate words, dots are used to separate names for the components of complex datatypes, and abbreviations are used only if they already appear in the syntax of a related language such as XML or HTML. The aim of this section is to describe the general process of formatting, enough to read the area model and the formatting object descriptions and properties and to understand the process of refinement. Formatting area tree traits 4 Area Model Formatting objects class 6 Formatting Objects 7 Formatting Properties Some formatting objects are block-level inline-level direction direction 4 Area Model In Western writing systems, the block-progression-direction is "top-to-bottom" and the inline-progression-direction is "left-to-right". This specification treats other writing systems as well and introduces the terms "block" and "inline" instead of using absolute indicators like "vertical" and "horizontal". Similarly this specification tries to give relatively-specified directions ("before" and "after" in the block-progression-direction, "start" and "end" in the inline-progression-direction) where appropriate, either in addition to or in place of absolutely-specified directions such as "top", " bottom left right writing-mode Central to this model of formatting is refinement propagating the various inherited values of properties (both implicitly and those with an attribute value of "inherit"), evaluating expressions in property value specifications into actual values, which are then used to determine the value of the properties, converting relative numerics to absolute numerics, constructing some composite properties from more than one attribute Some of these operations (particularly evaluating expressions) depend on knowledge of the area tree. Thus refinement is not necessarily a straightforward, sequential procedure, but may involve look-ahead, back-tracking, or control-splicing with other processes in the formatter. Refinement is described more fully in 5 Property Refinement / Resolution To summarize, formatting proceeds by constructing an area tree (containing areas and their traits) which satisfies constraints based on information contained in the XML result tree (containing element nodes and their attributes). Conceptually, there are intermediate steps of constructing a formatting object tree (containing formatting objects and their properties) and refinement; these steps may proceed in an interleaved fashion during the construction of the area tree. This subsection contains a conceptual description of how formatting could work. This conceptual procedure does not mandate any particular algorithms or data structures as long as the result obeys the implied constraints. The procedure works by processing formatting objects. Each object, while being processed, may initiate processing of other objects. While the objects are hierarchically structured, the processing is not; processing of a given object is rather like a co-routine which may pass control to other processes, but pick up again later where it left fo:root Unless otherwise specified, processing a formatting object creates areas and returns them to its parent to be placed in the area tree. Like a co-routine, when given control, it initiates, then continues formatting of its own children (if any), or some subset of them. The formatting object supplies parameters to its children based on the traits of areas already in the area tree, possibly including areas generated by the formatting object or its ancestors. It then disposes of the areas returned by its formatting object children. It might simply return such an area to its parent (and will always do this if it does not generate areas itself), or alternatively it might arrange the area in the area tree according to the semantics of the formatting object; this may involve changing its geometric position. It terminates processing when all its children have terminated processing (if initiated) and it is finished generating areas. Some formatting objects do not themselves generate areas; instead these formatting objects simply return the areas returned to them by their children. Alternatively, a formatting object may continue to generate (and return) areas based on information discovered while formatting its own children; for example, the fo:page-sequence Areas returned to an fo:root As a general rule, the order of the area tree parallels the order of the formatting object tree. That is, if one formatting object precedes another in the depth-first traversal of the formatting object tree, with neither containing the other, then all the areas generated by the first will precede all the areas generated by the second in the depth-first traversal of the area tree, unless otherwise specified. Typical exceptions to this rule would be things like side floats, before floats, and footnotes. At the end of the procedure, the areas and their traits have been constructed, and they are required to satisfy constraints described in the definitions of their associated formatting objects, and in the area model section. In particular, size and position of the areas will be subject to the placement and spacing constraints described in the area model, unless the formatting object definition indicates otherwise. The formatting object definitions, property descriptions, and area model are not algorithms. Thus, the formatting object semantics do not specify how the line-breaking algorithm must work in collecting characters into words, positioning words within lines, shifting lines within a container, etc. Rather this specification assumes that the formatter has done these things and describes the constraints which the result is supposed to satisfy. Thus, the constraints do not specify at what time an implementation makes use of that information; the constraints only specify what must be true after processing has been completed. An actual implementation may well make use of some constraints at a time other than when formatting the formatting object for which the constraint applies. For example, the constraint given by the " hyphenate fo:character fo:character In XSL, one creates a tree of formatting objects that serve as inputs or specifications to a formatter. The formatter generates a hierarchical arrangement of areas which comprise the formatted result. This section defines the general model of these areas and how they interact. The purpose is to present an abstract framework which is used in describing the semantics of formatting objects. It should be seen as describing a series of constraints for conforming implementations, and not as prescribing particular algorithms. The formatter generates an ordered tree, the area tree, child, sibling, parent, descendant, ancestor root node Each area tree node other than the root is called an area Note: The only exceptions to this rule are when several leaf nodes of the formatting object tree are combined to generate a single area, for example when several characters in sequence generate a single ligature glyph. In all such cases, relevant properties such as font-family font-size 4.7.2 Line-building An area has a content-rectangle padding border border border-rectangle padding padding-rectangle Each area has a set of traits formatting traits rendering traits B Property Summary 5 Property Refinement / Resolution Note: Traits are also associated with FOs during the process of refinement. Some traits are assigned during formatting, while others are already present after refinement. The semantics of each type of formatting object that generates areas are given in terms of which areas it generates and their place in the area-tree hierarchy. This may be further modified by interactions between the various types of formatting objects. The properties of the formatting object determine what areas are generated and how the formatting object's content is distributed among them. (For example, a word that is not to be hyphenated may not have its glyphs distributed into areas on two separate line-areas.) The traits of an area are either: directly-derived indirectly-derived This description assumes that refined values have been computed for all properties of formatting objects in the result tree, i.e., all relative and corresponding values have been computed and the inheritable values have been propagated as described in 5 Property Refinement / Resolution The indirectly-derived traits are: block-progression-direction inline-progression-direction shift-direction glyph-orientation is-reference-area is-viewport-area left-position right-position top-position bottom-position left-offset top-offset is-first is-last alignment-point area-class start-intrusion-adjustment end-intrusion-adjustment generated-by returned-by folio-number blink underline-score overline-score through-score underline-score-color overline-score-color through-score-color alignment-baseline baseline-shift nominal-font dominant-baseline-identifier actual-baseline-table script There are two types of areas: block-areas inline-areas A line-area glyph-area An inline-area may have one or two annotation-area Typical examples of areas are: a paragraph rendered by using an fo:block character fo:character Associated with any area are two directions, which are derived from the generating formatting object's writing-mode reference-orientation block-progression-direction direction inline-progression-direction direction shift-direction direction glyph-orientation If the reference-orientation bottom left right 7.22.3 reference-orientation 7.32.7 writing-mode The Boolean trait is-reference-area true reference-area The Boolean trait is-viewport-area true viewport-area true is-reference-area A common construct is a viewport/reference pair V R R V R V Each area has the traits top-position bottom-position left-position right-position absolute-position fixed left-offset top-offset The block-progression-dimension inline-progression-dimension extent Other traits include: the is-first is-last 6.1.1 Definitions Common to Many Formatting Objects is-first true is-last true the amount of space outside the border-rectangle: space-before space-after space-start space-end Note: "Before", "after", "start", and "end" refer to relative directions and are defined below. the thickness of each of the four sides of the padding: padding-before padding-after padding-start padding-end the style, thickness, and color of each of the four sides of the border: border-before the background background-color background-image background the nominal-font character 5.5.7 Font Properties Unless otherwise specified, the traits of a formatting object are present on each of its generated areas, and with the same value. (However, see sections 4.7.2 Line-building 4.9.4 Border, Padding, and Background id As described above, the content-rectangle padding Related to this is the allocation-rectangle normal-allocation-rectangle large-allocation-rectangle normal-allocation-rectangle large-allocation-rectangle Figure 7. Figure 8. For a block-area, the allocation-rectangle extends to the border-rectangle in the block-progression-direction and outside the content-rectangle in the inline-progression-direction by an amount equal to the end-indent direction start-indent Note: The inclusion of space outside the border-rectangle of a block-area in the inline-progression-direction does not affect placement constraints, and is intended to promote compatibility with the CSS box model. Figure 9. The edges of a rectangle are designated as follows: the before-edge the after-edge the start-edge the end-edge For purposes of this definition, the content-rectangle of an area uses the inline-progression-direction and block-progression-direction of that area; but the border-rectangle, padding-rectangle, and allocation-rectangle use the directions of its parent area. Thus the edges designated for the content-rectangle may not correspond to the same-named edges on the padding-, border-, and allocation-rectangles. This is important in the case of nested areas with different writing-modes or reference-orientation. The following diagram shows the correspondence between the various edge names for a mixed writing-mode Each inline-area has an alignment-point In the area tree, the set of areas with a given parent is ordered. The terms initial, final, preceding following In any ordered tree, this sibling order extends to an ordering of the entire tree in at least two ways. In the pre-order traversal order In the post-order traversal order "Preceding" and "following", when applied to non-siblings, will depend on the extension order used, which must be specified. However, in either of these given orders, the leaves of the tree (nodes without children) are unambiguously ordered. This section defines the notion of block-stacking constraints inline-stacking constraints A B B A The area-class xsl-normal normal xsl-normal page-level-out-of-line xsl-footnote xsl-before-float xsl-fixed fo:page-sequence reference-level-out-of-line xsl-side-float xsl-absolute anchor xsl-anchor xsl-normal xsl-footnote xsl-before-float stackable Block-stacking constraints If P fence preceding P P border-before-width P fence following P P border-after-width P If A B S 4.3 Spaces and Conditionality A B S B A S space-before B A B S space-after A A B a. B A S space-after A space-before B b. B P B P A P S S S space-before B c. A P A P P B S S space-after A S d. A S' E E S'' B E empty border padding block-progression-dimension S S' S'' Note: The use of "stackable" in two places in the above definition allows block-stacking constraints to apply between areas of area-class xsl-before-float xsl-footnote Figure 10. When A B adjacent edges A B In case 1, the before-edge of the content-rectangle of A B In case 2, the after-edge of the allocation-rectangle of A B In case 3a, the after-edge of the allocation-rectangle of A B In case 3b, the first of the adjacent edges of A P B In case 3c, the after-edge of the allocation-rectangle of A P B In
case 3d, the first of the adjacent edges of A E E B Example padding border P A A B A C B C C D D B B E D E E P B padding-after D E B E Figure 11. Inline-stacking constraints. This section will recursively define the inline-stacking constraints between two areas (either two inline-areas or one inline-area and one line-area), together with the notion of fence preceding fence following If P Q P fence preceding Q P border-width P Q Q fence following P Q border-width P Q If A B S A B S A B A S space-start B B A B S space-end A A B a. both A B B A S space-end A space-start B b. B P P A A P S P A P S S space-start B c. A P P B P B S P P B S space-end A S d. B P P A A P S P A P S S space-end B e. A P P B P B S P P B S space-start A S Figure 12. Figure 13. Figure 14. Figure 15. When A B adjacent edges A B In case 1, the start-edge of the content-rectangle of A B In case 2, the end-edge of the allocation-rectangle of A B In case 3a, the end-edge of the allocation-rectangle of A B In case 3b, the first of the adjacent edges of A P B In case 3c, the end-edge of the allocation-rectangle of A P B In case 3d, the first of the adjacent edges of A P B In case 3e, the start-edge of the allocation-rectangle of A P B Two areas are adjacent An area A begins P A P P A P A space-before space-start P A leading edge P begin P Similarly, An area A ends P A P A P P A space-after space-end A P trailing edge P end P A space-specifier is a compound datatype whose components are minimum, optimum, maximum, conditionality, and precedence. Minimum optimum maximum Conditionality retain discard conditional discard Precedence force forcing force Space-specifiers occurring in sequence may interact with each other. The constraint imposed by a sequence of space-specifiers is computed by calculating for each space-specifier its associated resolved space-specifier precedence The constraint imposed on a distance by a sequence of resolved space-specifiers is additive; that is, the distance is constrained to be no less than the sum of the resolved minimum values and no larger than the sum of the resolved maximum values. The resolved space-specifier of a given space-specifier S S'' S S'' 4.2.5 Stacking Constraints S' S'' if S space-before space-after S' S'' S S' if S space-before space-after S' S'' S S' if S space-start space-end S' S'' The resolved space-specifier of S S' If any of the space-specifiers in S' suppressed U consecutively follows V U V U V If a conditional space-specifier ends a reference-area or line-area, then it is suppressed together with any other conditional space-specifiers which consecutively precede it in the sequence. For purposes of this rule, a space-specifier U consecutively precedes V U V U V If any of the remaining space-specifiers in S' Alternatively if all of the remaining space-specifiers in S' precedence Otherwise, follow these rules when there are two or more space-specifiers all of the same highest precedence If S block-progression-dimension 4.3.2 Overconstrained space-specifiers Example discard retain discard precedence The padding padding The border padding B B B border padding The border padding I I I border padding When
an area P block-progression-dimension P P block-progression-dimension fo:block P subject to overconstrainment relaxing If the display-align P space-before P If the display-align P space-after P Block-areas have several traits which typically affect the placement of their children. The line-height line-stacking-strategy font-height max-height line-height The space-before space-after A block-area which is not a line-area typically has its size in the inline-progression-direction determined by its start-indent end-indent 4.4.1 Stacked Block-areas block-progression-dimension 4.3.2 Overconstrained space-specifiers Block-area children of an area are typically stacked in the block-progression-direction within their parent area, and this is the default method of positioning block-areas. However, formatting objects are free to specify other methods of positioning child areas of areas which they generate, for example list-items or tables. For a parent area P P properly stacked For each block-area B P the before-edge and after-edge of its allocation-rectangle are parallel to the before-edge and after-edges of the content-rectangle of P the start-edge of its allocation-rectangle is parallel to the start-edge of the content-rectangle of R R B start-indent start-intrusion-adjustment padding-start space-start the end-edge of its allocation-rectangle is parallel to the end-edge of the content-rectangle of R end-indent end-intrusion-adjustment padding-end space-end Figure 16. Note: The notion of indent is intended to apply to the content-rectangle, but the constraint is written in terms of the allocation-rectangle, because as noted earlier
( 4.2.3 Geometric Definitions The start-intrusion-adjustment end-intrusion-adjustment See also section 5.3.2 Margin, Space, and Indent Properties margin For each pair of normal areas B B P B B S B 4.2.5 Stacking Constraints B B S Example A space-after B space-before C space-before precedence force border padding B A C A background P C background B A general comment: positioning (and justification) is connected to regions and columns, and the interaction between them, and that work is not yet complete. In addition, the term vertical in this section should be taken to mean the block-progression direction. Feathering is the process of fitting a block of text to available space, such as the height of the page, for example by adding a small (and ideally imperceptible) amount of space between each line of text. The formatter adjusts the space-before and space-after traits of the stacked block-areas and line-areas in order to fill the reference area. Feathering can be seen as a special case of vertical justification, where the set of adjustable properties is fixed (line-height, space-before and space-after). Thus, our proposal is to activate feathering by indicating that vertical justification is done by adjusting those properties. This can be done by setting the property display-align line-height space-before space-after Space-specifiers (minimum, optimum and maximum) are used to specify constraints on the amount of space to be added, as explained for vertical justification ([ADD LINK]). To address this we introduce a new property that specifies a "normalized line height" that must be used as an atomic unit of height. That property specifies a length that the block-dimension of each generated area must be a multiple of. Spaces are added before or after each generated area in order to adjust the block-dimension. In a multi-column region, the same value is used for all columns. A provisional name is block-unit Note: This section does not yet take new work on columns (elsewhere in this document) into account. For this, we use the existing display-align In a multi-column region the same value is used for all columns, apart from the last one (specified with the property display-align-last-column Applies to: fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container Note: Property "display-align" also applies to: fo:external-graphic fo:instream-foreign-object fo:inline-container fo:table-cell We extend the display-align It is also important to allow users to specify which properties should be modified in order to do vertical justification. Feathering is one of the possibilities. Other solutions might include widening or narrowing spaces before and after images and tables, stretching or compressing text, changing word-spacing, adjusting the character-spacing, or other strategies. Thus, we propose the general approach of adjustable properties as described under ‘copyfitting’ and introduce a property adjustable-properties whose value is a list of properties that the formatter is allowed to change. Note: The display-align fo:external-graphic fo:instream-foreign-object fo:inline-container Intrusion adjustments (both start- and end-) are defined to account for the indentation that occurs as the result of side floats. If A B A B inline-overlapping A B If A xsl-side-float float start B A B A encroach B A B start-indent B start-indent A inline-progression-dimension A start-encroachment A B start-indent B start-indent A inline-progression-dimension A If A xsl-side-float float end B A B A encroach B A B end-indent B end-indent A inline-progression-dimension A end-encroachment A B end-indent B end-indent A inline-progression-dimension A If B local-start-intrusion-adjustment zero; if the parent of B B if B intrusion-displace block A xsl-side-float float start A B A B A B if B intrusion-displace block A xsl-side-float float start A B B' B B A B' A B' The start-intrusion-adjustment of a block-area B B If L the start-intrusion-adjustment of the parent of L for each area A xsl-side-float float start A L A L if the parent of L intrusion-displace indent A xsl-side-float float start A L B' L L A L' B' A B' The end-intrusion-adjustment for a block-area is computed in a precisely analogous manner. That is: If B local-end-intrusion-adjustment zero; if the parent of B B if B intrusion-displace block A xsl-side-float float end A B A B A B if B intrusion-displace block A xsl-side-float float end A B B' B B A B' A B' The end-intrusion-adjustment of a block-area B B If L the end-intrusion-adjustment of the parent of L for each area A xsl-side-float float end A L A L if the parent of L intrusion-displace indent A xsl-side-float float end A L B' L L A L' B' A B' A line-area is a special type of block-area, and is generated by the same formatting object which generated its parent. Line-areas do not have borders and padding border-before-width baseline-start-point The allocation-rectangle of a line is determined by the value of the line-stacking-strategy font-height nominal-requested-line-rectangle max-height maximum-line-rectangle line-height per-inline-height-rectangle line-stacking-strategy font-height max-height space-before space-after The nominal-requested-line-rectangle start-indent end-indent text-altitude text-depth block-progression-dimension The maximum-line-rectangle extent Figure 17. The per-inline-height-rectangle extent block-progression-dimension The expanded-rectangle space-before space-after expanded-nominal-requested-line-rectangle The extent Note: Using the nominal-requested-line-rectangle allows equal baseline-to-baseline spacing. Using the maximum-line-rectangle allows constant space between line-areas. Using the per-inline-height-rectangle and zero space-before space-after line-height An inline-area has its own line-height line-height line-stacking-strategy line-height actual-baseline-table nominal-font dominant-baseline-identifier An inline-area may or may not have child areas, and if so it may or may not be a reference-area. The dimensions of the content-rectangle for an inline-area without children is computed as specified by the generating formatting object, as are those of an inline-area with block-area children. An inline-area with inline-area children has a content-rectangle which extends from its dominant baseline (see 4.6.3 Font Baseline Tables text-depth direction text-altitude The allocation-rectangle of an inline-area without children is either the normal-allocation-rectangle or the large-allocation-rectangle, as specified in the description of the generating formatting object. Note: When the line-stacking-strategy line-height Examples of inline-areas with children might include portions of inline mathematical expressions or areas arising from mixed writing systems (left-to-right within right-to-left, for example). Inline-area children of an area are typically stacked in the inline-progression-direction within their parent area, and this is the default method of positioning inline-areas. Inline-areas are stacked relative to the dominant baseline 4.6.3 Font Baseline Tables For a parent area P P properly stacked For each inline-area descendant I P I I For each pair of normal areas I I P I I S I I S For any inline-area descendant I P Q I I Q Q alignment-baseline I baseline-shift I The first summand is computed to compensate for mixed writing systems with different baseline types, and the other summands involve deliberate baseline shifts for things like superscripts and subscripts. The most common inline-area is a glyph-area, which contains the representation for a character A glyph-area has an associated nominal-font character glyph-orientation writing-mode reference-orientation The alignment-point and dominant-baseline-identifier of a glyph-area are assigned according to the writing-system in use (e.g., the glyph baseline in Western languages), and are used to control placement of inline-areas descendants of a line-area. The formatter may generate inline-areas with different inline-progression-directions from their parent to accommodate correct inline-area stacking in the case of mixed writing systems. A glyph-area has no children. Its block-progression-dimension block-progression-dimension Each script bottom Each block-area and inline-area has a dominant-baseline-identifier alignment-baseline 5.5.8 Fonts and Font Data For each font, an actual-baseline-table A subset S properly ordered A 1 A 2 S F 1 F 2 F 1 F 2 A 1 A 2 F 1 F 2 A 1 A 2 A 1 A 2 For each formatting object F C F C This section describes the ordering constraints that apply to formatting an fo:block A block-level formatting object F F For each such formatting object F P S 1 S 2 S n Each subset consists of a sequence of inline-areas (and any associated annotation-areas), or of a single block-area. The ordering of the partition follows the ordering of the formatting object tree. Specifically, if A S i B S j i j A B S i A B A B A B A B The partitioning occurs at legal line-breaks. Specifically, if A S i B S i+1 language script 7.10 Common Hyphenation Properties 7.17.1 hyphenation-keep 7.17.2 hyphenation-ladder-count A B S i S i+1 Forced line-breaks are respected. Specifically, if C is a descendant of F, and C is an fo:character character i i The partition follows the ordering of the area tree, except for certain glyph substitutions and deletions. Specifically, if B 1 2 p S i i S i i i language script 6. white-space-treatment 5. (a.) the white-space-treatment character (b.) the white-space-treatment suppress-at-line-break (c.) the white-space-treatment suppress-at-line-break In these cases the area G is deleted; this may cause the condition in clauses (b.) or (c.) to become true and lead to further deletions. Substitutions that replace a sequence of glyph-areas with a single glyph-area should only occur when the margin border padding baseline-shift letter-spacing treat-as-word-space false alignment-adjust alignment-baseline background font text-depth text-altitude glyph-orientation-horizontal glyph-orientation-vertical line-height line-height-shift-adjustment text-decoration text-shadow Note: Line-areas do not receive the background traits or text-decoration of their generating formatting object, or any other trait that requires generation of a mark during rendering. This section describes the ordering constraints that apply to formatting an fo:inline An inline-level formatting object F F For each such formatting object F P S 1 S 2 S n Each subset consists of a sequence of inline-areas, or of a single block-area. The ordering of the partition follows the ordering of the formatting object tree, as defined above. The partitioning occurs at legal line-breaks, as defined above. Forced line-breaks are respected, as defined above. The partition follows the ordering of the area tree, except for certain glyph substitutions and deletions, as defined above. Keep and break conditions apply to a class of areas, which are typically page-reference-areas, column-areas, and line-areas. The appropriate class for a given condition is referred to as a context context-area 6.4.1 Introduction page-reference-areas fo:page-sequence fo:page-master column-areas A keep or break condition is an open statement about a formatting object and the tree relationships of the areas it generates with the relevant context-areas. These tree relationships are defined mainly in terms of leading trailing A P A leading P A P A trailing P A P next Break conditions are either break-before break-after break-before satisfied break-after Break conditions are imposed by the break-before break-after page even-page odd-page column auto break-before break-after Keep conditions are either keep-with-previous keep-with-next keep-together keep-with-previous keep-with-next keep-together Keep conditions are imposed by the "within-page", "within-column", and "within-line" components of the " keep-with-previous keep-with-next keep-together strength always auto The area tree is constrained to satisfy all break conditions imposed. Each keep condition must also be satisfied, except when this would cause a break condition or a stronger keep condition to fail to be satisfied. If not all of a set of keep conditions of equal strength can be satisfied, then some maximal satisfiable subset of conditions of that strength must be satisfied (together with all break conditions and maximal subsets of stronger keep conditions, if any). This section makes explicit the relationship between the area tree and visually rendered output. Areas generate three types of marks: (1) the area background border An area tree is rendered by causing marks to appear on an output medium in accordance with the areas in the area tree. This section describes the geometric location of such marks, and how conflicts between marks are to be resolved. Each area is rendered in a particular location. Formatting object semantics describe the location of intrinsic marks relative to the object's location, i.e., the left right bottom For each page, the page-viewport-area corresponds isometrically to the output medium. The page-reference-area is offset from the page-viewport-area as described below in section 4.9.2 Viewport Geometry All areas in the tree with an area-class of xsl-fixed left-position right-position top-position bottom-position Any area in the tree which is the child of a viewport-area is rendered as described in section 4.9.2 Viewport Geometry All other areas in the tree are positioned such that the left-, right-, top-, and bottom-edges of its content-rectangle are offset inward from the content-rectangle of its nearest ancestor reference-area by distances specified by the left-position right-position top-position bottom-position left top-offset left-offset relative-position relative A reference-area which is the child of a viewport-area is positioned such that the start-edge and end-edge of its content-rectangle are parallel to the start-edge and end-edge of the content-rectangle of its parent viewport-area. The start-edge of its content-rectangle is offset from the start-edge of the content-rectangle of its parent viewport-area by an inline-scroll-amount block-scroll-amount If the block-progression-dimension overflow scroll The visibility visibility overflow If an area has visibility hidden If an area has an overflow hidden overflow scroll clipping rectangle clip The border- and padding-rectangles are determined relative to the content-rectangle by the values of the common padding border width border-before-width For any area, which is not a child of a viewport-area, the border border border For an area, which is not part of a viewport/reference pair, the background background-attachment scroll block-progression-dimension background The background background-image background-color background-repeat background-position-vertical background-position-horizontal For each class of formatting objects, the marks intrinsic to its generated areas are specified in the formatting object description. For example, an fo:character glyph-orientation blink In addition, other traits (for example the various score and score-color traits) specify other intrinsic marks. In the case of score traits ( underline-score overline-score through-score Marks are layered as described below, which defines a partial ordering of which marks are beneath Two marks are defined to conflict Marks generated by the same area are layered as follows: the area background The stacking layer of an area is defined by its stacking context and its z-index A B A' A B' B z-index A' z-index B' If A B A B A B If A B A B A B A B background A B B border A If A B A B Figure 18. Note that this subject has evolved and is currently under discussion Allowing copyfitting on fo:region fo:block-container fo:table-cell Adding a new value ("justify") for the property "display-align" (already in XSL-FO) to activate copyfitting. Though the same property is used for vertical justification, users can exploit the property "force-page-count" (along with a correct definition of page-masters and page-sequences) to avoid conflicts. Introducing the concept of “list of prioritized adjustable properties”. An adjustable property is an existing XSL-FO property that can be modified in order to do copyfitting or vertical justification. Exploiting range values of existing properties to specify how (and how much) each property can be adjusted. Introducing the idea of "elasticity". Adding a new property "adjustable-properties" that specifies such lists. Adding new values to the property "force-page-count" to model copyfit into a fixed number of pages or a multiple of a number. Adding a new formatting object fo:alternative-copyfit-content How to express consistency and relationships among copyfitted areas? how to copyfit irregular shapes? how to express alternative content: what happens if it is not possible? how to express consistency and relationships among copyfitted areas? how to copyfit irregular shapes? Many options exist to copyfit content to a certain area. For example, a user could add some space between paragraphs, widen or narrow spaces before and after titles, images and tables, modify the line height of some paragraphs, etc. All these fine tunings, and their multiplicity of combinations, lead to different results, and different users could have different preferences. Thus, copyfitting actually requires two logically separated tasks: (1) the request of copyfitting to a given area, and (2) the definition of strategies to copyfit. Copyfitting is enabled by setting the property display-align adjustable-properties Although the same approach is used for vertical justification, users can exploit the property force-page-count The display-align fo:region fo:block-container fo:table-cell A display-align-last text-align text-align-last Let us first consider two flows A and B that go into two distinct regions R1 and R2, as defined in the following XSL-FO excerpt: <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:page-master master-name="sample1" page-height="11in" page-width="8.5in" margin-top="3pt" margin-bottom="3pt" margin-left="3pt" margin-right="3pt"> <fo:region region-name="R1" display-align="justify" adjustable-properties="line-height"/> <fo:region region-name="R2" display-align="before"/> </fo:page-master>
<fo:flow-map flow-map-name="M1"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R1"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="B"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R2"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map>
<fo:page-sequence force-page-count="1" flow-map-reference="M1"> <fo:flow flow-name="A"> <fo:block> Lorem maecenas blandit ac, neque sed ut pulvinar, lectus sagittis sapien per risus vel. Ligula sapien sed morbi cras tellus commodo. Si qua ex docet dei etris crucis</fo:block> <fo:block> curabitur magna nisi, faucibus sed ornare sed, congue eu dui. Pellentesque habitant morbi tristique senectus et netus et malessecularia uada fames ac turpis egestas. </fo:block> <fo:block> Nunc sit amet dolor sed sem congue mattis sed ut arcu. Mauris id magna sit amet elit aliquam.</fo:block> <fo:block>Pellentesque habitant morbi tristique senectus et netus et malesuada fames.</fo:block> </fo:flow>
<fo:flow flow-name="B"> <fo:block>Crucis rosa ut hoc sien qua non res veni.</fo:block> <fo:block> Etiam tristique, nulla a pulvinar hendrerit nihil tortor urna auctor etim domine secularia cali sed ut quotie ire in domince hoc fantus quis eius rei rei. </fo:block> </fo:flow> </fo:page-sequence> </fo:root> The property display-align fo:region display-align force-page-count fo:page-sequence adjustable-properties The expected result is shown below: Figure 19. The same flows and regions are expected to produce a different output, when the flow-map M2 is used instead: <fo:flow-map flow-map-name="M2"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> <fo:flow-name-specifier flow-name-reference="B"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R1"/> <fo:region-name-specifier region-name-reference="R2"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> In this case, the two flows go into region R1 and then region R2. If the properties display-align Figure 20. The expected result is different when either the property "display-align" of region R2 is set to "justify": <fo:page-master master-name="sample1" page-height="11in" page-width="8.5in" margin-top="3pt" margin-bottom="3pt" margin-left="3pt" margin-right="3pt"> <fo:region region-name="R1" display-align="justify" adjustable-properties="line-height"/> <fo:region region-name="R2" display-align="justify"/> </fo:page-master> In fact, both the regions end up being copyfitted as shown below: Figure 21. When the formatter is expected to produce as many pages as needed (for instance, by setting the property force-page-count display-align display-align-last Let us consider the following example, where only one region R1 and one flow A are declared: <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:page-master master-name="sample1" page-height="11in" page-width="8.5in" margin-top="3pt" margin-bottom="3pt" margin-left="3pt" margin-right="3pt"> <fo:region-body region-name="xsl-region-body" display-align="justify" display-align-last="relative" adjustable-properties="..."/> </fo:page-master>
<fo:page-sequence> <fo:flow flow-name="A">
<fo:block>Lorem ipsum dolor sit amet, nunc euismod nisl nam euismod, quis maecenas blandit ac, neque sed ut pulvinar, lectus sagittis ... quorneque tortor neque, commodo mauris sagittis yurpis,hic fecit leuc em.</fo:block>
<fo:block>Lorem ipsum dolor sit amet, nunc ... lectus sagittis sapien mauris per risus.</fo:block>
<fo:block>Ligula sapien sed morbi cras tellus ... quoque cra ut sic fecit quorem deis hoc hac lorem ipse die cruci faucibus sed ultrices tempor inter dum.</fo:block> <fo:block>Lorem ipsum dolor sit amet, .... Rutrum mattis accumsan.</fo:block> </fo:flow> </fo:page-sequence> </fo:root> The values of the properties display-align display-align-last fo:region-body Figure 22. By setting the property display-align-last Figure 23. Note also that this case can be easily generalized for the case of multiple flows going into the same region. The formatter is expected to copyfit text in a given number of pages when the property force-page-count fo:region-body <fo:region-body region-name="xsl-region-body" display-align="justify" display-align-last="justify" force-page-count="2" adjustable-properties="..."/> The formatter is now expected to produce the following result: Figure 24. The last page is vertically justified since the property display-align-last Figure 25. XSL-FO provides a general mechanism to express strategies for copyfitting or vertical justification. The overall approach is flexible and independent on the formatting task and may be applied to other contexts in the future. An "adjustable properties list" is an ordered sequence of properties names (or group of names) that a formatter is allowed to modify to format the content. In fact, such lists are used to drive copyfitting, vertical justification and feathering. The order of the names in the list follows the priority rules described below. Adjustable properties lists can be associated with fo:objects using the property adjustable-properties It is important to note that the “adjustable-properties list” only states the strategy to format the content and does not define the actual property ranges the application is allowed to modify. These are instead expressed (as in an XSL-FO 1.1 document) throughout the flow and its descendant formatting objects: this provides a great expressing power in a simple way, as, for example, it allows for different fo:block For example: adjustable-properties=”space-before word-spacing” means that the application is allowed to modify the actual value of the space-before and word-spacing properties. Although the “adjustable-properties” property is defined in the fo:flow-assignment In fact, many FO properties (dating back to the initial XSL-FO specification) can be given a length range value, expressed using a .minimum, .optimum and .maximum components; others (allowed-height-scale, allowed-width-scale) can be given a list of numeric values; font-family can be given a list of values. A property having a range value can create some elasticity inline elasticity block elasticity The presence of some elasticity is the first condition to adjust content (for copyfitting or vertical justification). Properties with range or list values, in fact, can be adjusted in order to achieve the expected result. On the other hand, elasticity does not automatically imply that content will be formatted as expected. It may happen that properties listed in “adjustable properties list” do not have elasticity while other do. In that case the formatter cannot achieve the expected result and should warn the user. If properties listed in the “adjustable properties list” do have elasiticy but the formatter is not able to achieve the expected result – because of syntax errors, limitated support of required strategies, etc. – the formatter should warn the user too. An example of copyfit declaration and application is shown below: <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:page-master master-name="sample1" page-height="11in" page-width="8.5in" margin-top="3pt" margin-bottom="3pt" margin-left="3pt" margin-right="3pt"> <fo:region region-name="R1" display-align="justify" adjustable-properties="line-height"/> <fo:region region-name="R2" display-align="before"/> </fo:page-master>
<fo:flow-map flow-map-name="M1"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R1"/> </fo:flow-target-list> </fo:flow-assignment>
<fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="B"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R2"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map>
<fo:page-sequence force-page-count="1" flow-map-reference="M1"> <fo:flow flow-name="A"> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Lorem maecenas blandit ac, neque sed ut pulvinar, lectus sagittis sapien per risus vel. Ligula sapien sed morbi cras tellus commodo. Si qua ex docet dei etris crucis</fo:block>
<fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> curabitur magna nis, faucibus sed ornare sed, congue eu dui. Pellentesque habitant morbi tristique senectus et netus et malessecularia uada fames ac turpis egestas. </fo:block>
<fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Nunc sit amet dolor sed sem congue mattis sed ut arcu. Mauris id magna sit amet elit aliquam.</fo:block> <fo:block>Pellentesque habitant morbi tristique senectus et netus et malesuada fames.</fo:block>
</fo:flow> <fo:flow flow-name="B">
<fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt">Crucis rosa ut hoc sien qua non res veni.</fo:block>
<fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Etiam tristique, nulla a pulvinar hendrerit nihil tortor urna auctor etim domine secularia cali sed ut quotie ire in domince hoc fantus quis eius rei rei. </fo:block>
</fo:flow> </fo:page-sequence> </fo:root> The two regions R1 and R2 use different strategies to copyfit. Flow A is copyfitted into region R1 by only adjusting the word-space of each block (that will be a value between 1pt and 4pt), while flow B is copyfitted into region R2 by adjusting line-height of each block (that will be a value between 8pt and 14pt). Notice again that the declaration of the strategies for copyfitting is completely disconnected from the declaration of the copyfit itself. Note: The definition of “adjustable-properties” in a fo:flow-assignment fo:block Every formatting property may be specified on every formatting object. For each formatting object class, however, only a subset of the formatting properties are used; those that apply During refinement the set of properties traits The first step in refinement of a particular formatting object is to obtain the effective value of each property that applies to the object. Any shorthand property specified on the formatting object is expanded into the individual properties. This is further described in 5.2 Shorthand Expansion 5.1.4 Inheritance Note: Although the refinement process is described in a series of steps, this is solely for the convenience of exposition and does not imply they must be implemented as separate steps in any conforming implementation. A conforming implementation must only achieve the same effect. For every property that is applicable to a given formatting object, it is necessary to determine the value of the property. Three variants of the property value are distinguished: the specified value, the computed value, and the actual value. The "specified value" is one that is placed on the formatting object during the tree-construction process. A specified value may not be in a form that is directly usable; for example, it may be a percentage or other expression that must be converted into an absolute value. A value resulting from such a conversion is called the "computed value". Finally, the computed value may not be realizable on the output medium and may need to be adjusted prior to use in rendering. For example, a line width The specified value of a property is determined using the following mechanisms (in order of precedence If the tree-construction process placed the property on the formatting object, use the value of that property as the specified value. This is called "explicit specification". Otherwise, if the property is inheritable, use the value of that property from the parent formatting object, generally the computed value (see below). Otherwise use the property's initial value, if it has one. The initial value of each property is indicated in the property's definition. If there is no initial value, that property is not specified on the formatting object. In general, this is an error. Since it has no parent, the root of the result tree cannot use values from a parent formatting object; in this case, the initial value is used if necessary. Specified values may be absolute (i.e., they are not specified relative to another value, as in "red" or "2mm") or relative (i.e., they are specified relative to another value, as in "auto", "2em", and "12%"), or they may be expressions. For most absolute values, no computation is needed to find the computed value. Relative values, on the other hand, must be transformed into computed values: percentages must be multiplied by a reference value (each property defines which value that is), values with a relative unit (em) must be made absolute by multiplying with the appropriate font size, "auto" values must be computed by the formulas given with each property, certain property values ("smaller", "bolder") must be replaced according to their definitions. The computed value of any property that controls a border width border Some properties have more than one way in which the property value can be specified. The simplest example of such properties are those which can be specified either in terms of a direction writing-mode padding-before direction padding-top Specifying a value for one property determines both a computed value for the specified property and a computed value for the corresponding property. Which relative property corresponds to which absolute property depends on the writing-mode. For example, if the " writing-mode padding-start padding-left writing-mode padding-start padding-right 5.3 Computing the Values of Corresponding Properties In most cases, elements inherit computed values. However, there are some properties whose specified value may be inherited (e.g., some values for the " line-height A computed value is in principle ready to be used, but a user agent may not be able to make use of the value in a given environment. For example, a user agent may only be able to render borders with integer pixel widths and may, therefore, have to adjust the computed width Some of the properties applicable to formatting objects are "inheritable." Such properties are so identified in the property description. The inheritable properties can be placed on any formatting object. The inheritable properties are propagated down the formatting object tree from a parent to each child. (These properties are given their initial value at the root of the result tree.) For a given inheritable property, if that property is present on a child, then that value of the property is used for that child (and its descendants until explicitly re-set in a lower descendant); otherwise, the specified value of that property on the child is the computed value of that property on the parent formatting object. Hence there is always a specified value defined for every inheritable property for every formatting object. In XSL there are two kinds of shorthand properties; those originating from CSS, such as " border page-break-inside Note: Shorthands are included only in the highest XSL conformance level: "complete" (see 8 Conformance The conformance level for each property is shown in B.3 Property Table: Part II Shorthand properties do not inherit from the shorthand on the parent. Instead the individual properties that the shorthand expands into may inherit. Some CSS shorthands are interrelated; their expansion has one or more individual properties in common. CSS indicates that the user must specify the order of processing for combinations of multiple interrelated shorthands and individual interrelated properties. In XML, attributes are defined as unordered. To resolve this issue, XSL defines a precedence They are processed in increasing precision (i.e., " border border-top border-top-color " border-style border-color border-width " border-top border-bottom border-right border-left Processing is conceptually in the following steps: Set the effective value of all properties to their initial values. Process all shorthands in increasing precision. If the shorthand is set to "inherit": set the effective value of each property that can be set by the shorthand to the computed value of the corresponding property in the parent. If the value of the shorthand is not "inherit": determine which individual properties are to be set, and replace the initial value with the computed value derived from the specified value. Process all specified individual properties. Carry out any inheritance for properties that were not given a value other than by the first step. Note: For example, if both the " background background-color background background-color Where there are corresponding properties, such as " padding-left padding-start The correspondence mapping from absolute to relative property is as follows: If the " writing-mode bottom If the " writing-mode bottom If the " writing-mode left right If the " writing-mode left right If the " writing-mode left right If the " writing-mode left right If the " writing-mode bottom If the " writing-mode bottom If the " writing-mode left right Note: " reference-orientation The simplest class of corresponding properties are those for which there are only two variants in the correspondence, an absolute property and a relative property, and the property names differ only in the choice of absolute or relative designation; for example, " border-left-color border-start-color For this class, the computed values of the corresponding properties are determined as follows. If the corresponding absolute variant of the property is specified on the formatting object, its computed value is used to set the computed value of the corresponding relative property. If the corresponding absolute property is not explicitly specified, then the computed value of the absolute property is set to the computed value of the corresponding relative property. If the corresponding relative property is specified on the formatting object and the absolute property only specified by the expansion of a shorthand, then the computed value of the absolute property is set to the computed value of the corresponding relative property. Note that if both the absolute and the relative properties are not explicitly specified, then the rules for determining the specified value will use either inheritance if that is defined for the property or the initial value. The initial value must be the same for all possible corresponding properties. If both an absolute and a corresponding relative property are explicitly specified, then the above rule gives precedence The (corresponding) properties that use the above rule to determine their computed value are: border-after-color border-before-color border-end-color border-start-color border-after-style border-before-style border-end-style border-start-style border-after-width border-before-width border-end-width border-start-width padding-after padding-before padding-end padding-start The " space-before space-after space-start space-end margin-top margin-bottom margin-left margin-right space-before space-after margin Note: The treatment of the .conditionality component is for CSS2 compatibility. Note: The computed value of a CSS2 margin block-progression-dimension space-before space-after margin There are two more properties, " end-indent start-indent margin width left right bottom If the corresponding absolute " margin margin margin start-indent end-indent start-indent = margin-corresponding + padding-corresponding + border-corresponding-width end-indent = margin-corresponding + padding-corresponding + border-corresponding-width If the corresponding absolute " margin margin width start-indent end-indent start-indent = inherited_value_of(start-indent) + margin-corresponding + padding-corresponding + border-corresponding-width end-indent = inherited_value_of(end-indent) + margin-corresponding + padding-corresponding + border-corresponding-width If the corresponding absolute margin margin margin-corresponding = start-indent - inherited_value_of(start-indent) - padding-corresponding - border-corresponding-width margin-corresponding = end-indent - inherited_value_of(end-indent) - padding-corresponding - border-corresponding-width Note: If the " start-indent end-indent Based on the writing-mode height min-height max-height width min-width max-width block-progression-dimension The " height bottom width left right If the " writing-mode If any of " height min-height max-height If " height block-progression-dimension.minimum=< height block-progression-dimension.optimum=< height block-progression-dimension.maximum=< height If " height block-progression-dimension.minimum=auto block-progression-dimension.optimum=auto block-progression-dimension.maximum=auto Then, if " min-height block-progression-dimension.minimum=< min-height Then, if " max-height block-progression-dimension.maximum=< max-height However, if " max-height block-progression-dimension.maximum=auto If any of " width min-width min-width If " width inline-progression-dimension.minimum=< width inline-progression-dimension.optimum=< width inline-progression-dimension.maximum=< width If " width inline-progression-dimension.minimum=auto inline-progression-dimension.optimum=auto inline-progression-dimension.maximum=auto Then, if " min-width inline-progression-dimension.minimum=< min-width Then, if " max-width inline-progression-dimension.maximum=< max-width However, if " max-width inline-progression-dimension.maximum=auto If the " writing-mode If any of " height min-height max-height If " height inline-progression-dimension.minimum=< height inline-progression-dimension.optimum=< height inline-progression-dimension.maximum=< height If " height inline-progression-dimension.minimum=auto inline-progression-dimension.optimum=auto inline-progression-dimension.maximum=auto Then, if " min-height inline-progression-dimension.minimum=< min-height Then, if " max-height inline-progression-dimension.maximum=< max-height However, if " max-height inline-progression-dimension.maximum=auto If any of " width min-width min-width If " width block-progression-dimension.minimum=< width block-progression-dimension.optimum=< width block-progression-dimension.maximum=< width If " width block-progression-dimension.minimum=auto block-progression-dimension.optimum=auto block-progression-dimension.maximum=auto Then, if " min-width block-progression-dimension.minimum=< min-width Then, if " max-width block-progression-dimension.maximum=< max-width However, if " max-width block-progression-dimension.maximum=auto The sum of the start-indent end-indent inline-progression-dimension inline-progression-dimension end-indent margin The majority of the properties map into traits of the same name. Most of these also simply copy the value from the property. These are classified as "Rendering", "Formatting", "Specification", "Font selection", "Reference", and "Action" in the property table in B.3 Property Table: Part II font-style="italic" font-style Some traits have a value that is different from the value of the property. These are classified as "Value change" in the property table. For example, the property background-position-horizontal="left" background-position-horizontal A value of "top", " bottom left right If a value has not been specified on a formatting object to which this property applies the initial value is computed as specified in the property definition. A value of " left right writing-mode A value of " left right writing-mode The value is converted to one that is absolute; i.e., the refined value is the specified value plus the refined value of z-index A value being a 2-letter code in conformance with [ISO639] [ISO639-2] [ISO639-2] A small number of properties influence traits in a more complex manner. Details are given below. These properties may set values for the space-start space-end The reference-orientation reference-orientation 4.2.2 Common Traits The writing-mode direction unicode-bidi block-progression-direction inline-progression-direction shift-direction 4.2.2 Common Traits If absolute-position left-position top-position left top left If relative-position left-offset top-offset left top right left left-offset right left right left-offset bottom top top-offset bottom top bottom top-offset The " text-decoration blink specified color color text-decoration A property value containing the token "underline" sets a value of "true" to the underline-score specified color underline-score-color A property value containing the token "overline" sets a value of "true" to the overline-score specified color overline-score-color A property value containing the token "line-through" sets a value of "true" to the through-score specified color through-score-color A property value containing the token "blink" sets a value of "true" to the blink A property value containing the token "no-underline" sets a value of "false" to the underline-score specified color underline-score-color A property value containing the token "no-overline" sets a value of "false" to the overline-score specified color overline-score-color A property value containing the token "no-line-through" sets a value of "false" to the through-score specified color through-score-color A property value containing the token "no-blink" sets a value of "false" to the blink The font traits on an area are indirectly derived from the combination of the font properties, which are used to select a font, and the font tables from that font. The abstract model that XSL assumes for a font is described in 5.5.8 Fonts and Font Data There is no XSL mechanism to specify a particular font; instead, a selected font selection criteria font-family font-style font-variant font-weight font-stretch font-size font-selection-strategy 7.9.2 font-selection-strategy The nominal-font character nominal-font character nominal-font The dominant-baseline-identifier actual-baseline-table dominant-baseline dominant-baseline dominant-baseline-identifier font-size dominant-baseline actual-baseline-table Fonts and Font Data XSL uses an abstract model of a font. This model is described in this section and is based on current font technology as exemplified by the OpenType specification [OpenType] A font consists of a collection of glyphs together with the information, the font tables, necessary to use those glyphs to present characters on some medium. A glyph is a recognizable abstract graphic symbol which is independent of any specific design. The combination of the collection of glyphs and the font tables is called the font data. The font tables include the information necessary to map characters to glyphs, to determine the size of glyph areas and to position the glyph area. Each font table consists of one or more font characteristics, such as the font-weight The geometric font characteristics are expressed in a coordinate system based on the em box. (The em is a relative measure of the height 5.11.7.2 Relative Lengths The coordinate space of the em box is called the design space coordinate system. For scalable fonts, the curves and lines that are used to draw a glyph are represented using this coordinate system. Note: Most often, the (0,0) point in this coordinate system is positioned on the left bottom left bottom XSL assumes that the font tables will provide at least three font characteristics: an ascent, a descent and a set of baseline-tables. The coordinate values for these are given in the design space coordinate system. The ascent is given by the vertical coordinate of the top of the em box; the descent is given by the vertical coordinate of the bottom The glyphs of a given script alignment-point bottom script font-size baseline Figure 26. country A baseline-table script Figure 27. 7.15 Area Alignment Properties 7.32 Writing-mode-related Properties The font tables for a font include font characteristics for the individual glyphs in the font. XSL assumes that the font tables include, for each glyph in the font, one width alignment-baseline width alignment-baseline width width The script alignment-baseline 7.15.1 alignment-adjust space-start space-end fo:character Figure 28. alignment-baseline In addition to the font characteristics required above, a font may also supply substitution and positioning tables that can be used by a formatter to re-order, combine, and position a sequence of glyphs to make one or more composite glyphs. The combination may be as simple as a ligature, or as complex as an Indic syllable which combines, usually with some re-ordering, multiple consonants and vowel glyphs. See 4.7.2 Line-building Note: If the font tables do not define values for required font characteristics, heuristics may be used to approximate these values. The is-reference-area The case changes specified by this property are carried out during refinement by changing the value of the " character Note: The use of the " text-transform The area alignment properties control the alignment of child areas with respect to their parent areas. The parent area is given a frame of reference through its scaled-baseline-table. A scaled-baseline-table dominant-baseline font-size The positions of these baselines are illustrated in the following figure: Figure 29. script The baseline-identifiers below are used in this specification. Some of these are determined by baseline-tables contained in a font as described in 5.5.8 Fonts and Font Data alphabetic This identifies the baseline used by most alphabetic and syllabic scripts. These include, but are not limited to, many Western, Southern Indic, Southeast Asian (non-ideographic) scripts. ideographic This identifies the baseline used by ideographic scripts. For historical reasons, this baseline is at the bottom hanging This identifies the baseline used by certain Indic scripts. These scripts include Devanagari, Gurmukhi and Bengali. mathematical This identifies the baseline used by mathematical symbols. central This identifies a computed baseline that is at the center of the em box. This baseline lies halfway between the text-before-edge and text-after-edge baselines. Note: For ideographic fonts, this baseline is often used to align the glyphs; it is an alternative to the ideographic baseline. middle This identifies a baseline that is offset from the alphabetic baseline in the shift-direction text-before-edge This identifies the before-edge of the em box. The position of this baseline may be specified in the baseline-table or it may be calculated. Note: The position of this baseline is normally around or at the top of the ascenders, but it may not encompass all accents that can appear above a glyph. For these fonts the value of the "ascent" font characteristic is used. For ideographic fonts, the position of this baseline is normally 1 em in the shift-direction width writing-mode text-after-edge This identifies the after-edge of the em box. The position of this baseline may be specified in the baseline-table or it may be calculated. Note: For fonts with descenders, the position of this baseline is normally around or at the bottom There are, in addition, two computed baselines that are only defined for line areas. For each line-area, there is a dominant-baseline font-size before-edge The offset of the "before-edge" baseline of the line from the dominant-baseline alignment-baseline dominant-baseline direction reference-orientation extent after-edge The offset of the "after-edge" baseline of the line from the dominant-baseline alignment-baseline after-edge dominant-baseline direction bottom reference-orientation extent height Note: If all the inline-areas in a line-area are aligned to the "after-edge" then the specification for the "before-edge" will set the "before-edge" baseline to coincide with the "text-before-baseline" of the line. Then, case (2) above will determine the offset to the "after-edge" baseline. In this case the allocation-rectangle of one of the areas will extend from the "before-edge" baseline to the "after-edge" baseline. Note: The above specifications for "before-edge" and "after-edge" have the following three properties: (1) the allocation-rectangles of all the areas are below the "before-edge", (2) the allocation-rectangles of all the areas are above the "after-edge", and (3) the distance between the "before-edge" and the "after-edge" cannot be decreased without violating (1) or (2). The specified placement of the "before-edge" and "after-edge" is not the only way that (1)-(3) can be satisfied, but it is the only way they can be satisfied with the smallest possible offset to the "before-edge". Examples showing "before-edge" and "after-edge" alignment: Figure 30. The alignment of a formatting object with respect to its parent is determined by three things: the scaled-baseline-table of the parent and the alignment-baseline There are four properties that control alignment of formatting objects to the above set of baselines. These properties are all independent and are designed so that typically only the specification of one of the properties is needed to achieve a particular alignment goal. The primary baseline alignment property is the " dominant-baseline alignment-baseline 5.5.8 Fonts and Font Data block-progression-direction font-size scaling For convenience, the specification will sometimes refer to the baseline identified by the dominant-baseline-identifier component of the " dominant-baseline A simple example of alignment is shown in the following figure. The figure shows the presentation of two inline formatting objects, one inside the other. These inline formatting objects make up the content of a line in a block where the writing-mode <fo:inline>Apex <fo:inline>Top</fo:inline></fo:inline> Because no properties are specified, the initial values apply. Since a horizontal writing-mode is in use, the dominant-baseline-identifier is set to "alphabetic" and the baseline-table is taken from the nominal-font for the block in which the line appears, which, in this case, is Helvetica. In the figure, the positions of the baselines relative to the current font size are shown as red (staff) lines. These lines are labeled with abbreviations of the names of the baselines (e.g., TBE for "text-before-edge"). The baseline identified by the dominant-baseline-identifier (A) is shown in blue. There is a break in the staff lines to separately show the inner inline formatting object. This is not necessary for this example, but this distinction will become important in subsequent examples. The " alignment-baseline fo:character alignment-baseline dominant-baseline The glyphs determined by the fo:character script Figure 31. In the next figure, the content of the inner inline formatting object is in Gurmukhi, the script <fo:inline>Apex <fo:inline> guru The only change from the previous example is that the glyphs of the Gurmukhi script Figure 32. In the next figure, fragments of the text of the previous examples make up the content of the outer inline formatting object. The inner inline formatting object has a change of font-size <fo:inline>Ap guru ji In this example, the alignment of the inner inline formatting object itself does not change, nor does the alignment of the smaller glyphs inside the inner formatting object. The Latin glyphs are still aligned to the "alphabetic" baseline and the Gurmukhi glyphs, which are pronounced "ji" are aligned to the "hanging" baseline. Note also that just changing the " font-size Figure 33. The next figure is equivalent to the previous example with the Gurmukhi character Figure 34. To change the scaling dominant-baseline font-size font-size dominant-baseline <fo:inline>Ap guru ji The alignment of the inner inline formatting object, with respect to the outer inline formatting object, is still determined by aligning the dominant baselines. But, the baseline-table of the inner inline formatting object has been rescaled to the font-size Figure 35. font-size But, what if it is more important that the small Gurmukhi glyphs align with the large Gurmukhi glyphs than having the Latin glyphs align. There are at least two ways to achieve this. The structure: <fo:inline dominant-baseline='hanging'>Ap guru ji is illustrated in the next figure. The "hanging" baseline becomes the dominant baseline and the initial value of the " alignment-baseline Figure 36. It is also possible to achieve the effect of the above figure without changing the dominant baseline. Instead it is sufficient to explicitly specify that the inner inline formatting object is aligned on its "hanging" baseline. This is done by: <fo:inline>Ap guru ji The only change this approach would make in the above figure is to color the "hanging" baseline red and keep the "alphabetic" baseline as the (blue) dominant baseline. This baseline in the inner inline formatting object would not (as it does not in the above figure) align with the "alphabetic" baseline in the outer inline formatting object. The third baseline alignment property is the " baseline-shift dominant-baseline <fo:inline>Ap <fo:inline baseline-shift='super'>1 ji Because the whole set of baseline-table staff lines are shifted to the position of the superscript baseline: it does not matter to which baseline the glyphs in the superscript are aligned. The European number "1" is aligned to the "alphabetic" baseline and the Gurmukhi syllable "ji" is aligned to the "hanging" baseline. Figure 37. baseline-shift It is more common for the font-size font-size <fo:inline>Ap <fo:inline font-size='.75em' baseline-shift='super'> 1 ji Because changing the font-size font-size font-size dominant-baseline Figure 38. font-size The fourth alignment property is the " alignment-adjust script alignment-adjust Ruby is a small-sized, supplementary text attached to a character or a group of characters in the main text. This section is generally written for Japanese text, although ruby can also be used with other languages and writing systems. In Japanese, then, a run of ruby text, usually attached to the right of the characters in vertical writing mode or immediately above them in horizontal writing mode, indicates the reading or the meaning of those characters. The characters in the main text that are annotated by ruby are called "base characters". Kana characters are often used for ruby to indicate how to read kanji characters; this is known as ruby annotation or as "furigana". see http://www.w3.org/TR/jlreq/#en-subheading2_3_1 The line-stacking-annotation The characters in certain scripts are written horizontally from right script The Unicode BIDI algorithm [UNICODE UAX #9] character The final step of refinement uses this algorithm and the Unicode bidirectional character character direction unicode-bidi right left As defined in [UNICODE UAX #9] Separation of the input text into paragraphs. The rest of the algorithm affects only the text between paragraph separators. Resolution of the embedding levels of the text. In this phase, the bidirectional character resolved embedding levels character character [UNICODE Character Database] Reordering the text for display on a line-by-line basis using the resolved embedding levels, once the text has been broken into lines. The algorithm, as described above, requires some adaptions to fit into the XSL processing model. First, the final, text reordering step is not done during refinement. Instead, the XSL equivalent of re-ordering is done during area tree generation. The inline-progression-direction 4.2.5 Stacking Constraints inline-progression-direction writing-mode direction unicode-bidi Second, the algorithm is applied to a sequence of characters coming from the content of one or more formatting objects. The sequence of characters is created by processing a fragment of the formatting object tree. A fragment fo:character fo:character character unicode-bidi character direction unicode-bidi flattened sequence of characters Third, in XSL the algorithm is applied to delimited text ranges character character anonymous blocks fo:multi-case dominant-baseline text has an orientation perpendicular to the dominant-baseline Note: In most cases, a delimited text range is the maximal sequence of characters that would be formatted into a sequence of one or more line-areas. For the fo:multi-case dominant-baseline writing-mode For each delimited text range, the inline-progression-direction paragraph embedding level Embedding levels direction The second step of the Unicode BIDI algorithm labels each character resolved embedding level character Once the resolved embedding levels are determined for the delimited text range, new fo:bidi-override direction unicode-bidi For any character inline-progression-direction character For each resolved embedding level L S character L There is an inline formatting object F S direction L Note: F direction unicode-bidi All formatting objects that contain any part of the sequence S F Note: Satisfying this constraint may require splitting one or more existing formatting objects in the formatting object tree each into a pair of formatting objects each of which has the same set of computed property values as the original, unsplit formatting object. One of the pair would be ended before the start of F F F F character <fo:block> LL <fo:inline id="A" color="red">LLLRRR</fo:inline> RR </fo:block> assuming a paragraph embedding level of "0", the resolved embedding levels would require the following (inserted and replicated) structure: <fo:block> LL <fo:inline id="A" color="red">LLL</fo:inline> <fo:bidi-override direction="rtl"> <fo:inline color="red">RRR</fo:inline> RR </fo:bidi-override> </fo:block> Note that the fo:inline id fo:inline id id id No fewer fo:bidi-override fo:bidi-override All property value specifications in attributes within an XSL stylesheet can be expressions. These expressions represent the value of the property specified. The expression is first evaluated and then the resultant value is used to determine the value of the property. Note: The expression language supports operations on a limited set of datatypes. These do not include <angle>, <time>, and <frequency>. Values of these datatypes must be strings in the expression language. The definition of these datatypes specify the allowed form of these strings. Properties are evaluated against a property-specific context. This context provides: A list of allowed resultant types for a property value. Conversions from resultant expression value types to an allowed type for the property. The current font-size Conversions from relative numerics by type to absolute numerics within additive expressions. Note: It is not necessary that a conversion be provided for all types. If no conversion is specified, it is an error. When a type instance (e.g., a string, a keyword, a numeric, etc.) is recognized in the expression it is evaluated against the property context. This provides the ability for specific values to be converted with the property context's specific algorithms or conversions for use in the evaluation of the expression as a whole. For example, the "auto" enumeration token for certain properties is a calculated value. Such a token would be converted into a specific type instance via an algorithm specified in the property definition. In such a case the resulting value might be an absolute length specifying the width In addition, this allows certain types like relative numerics to be resolved into absolute numerics prior to mathematical operations. All property contexts allow conversions as specified in 5.11.12 Expression Value Conversions When a set of properties is being evaluated for a specific formatting object in the formatting object tree there is a specific order in which properties must be evaluated. Essentially, the " font-size font-size When the " font-size font-size font-size font-size font-size Expr ::= AdditiveExpr PrimaryExpr ::= '(' Expr | Numeric | Literal | Color | Keyword | EnumerationToken | FunctionCall FunctionCall ::= FunctionName Argument Argument Argument ::= Expr A numeric represents all the types of numbers in an XSL expression. Some of these numbers are absolute values. Others are relative to some other set of values. All of these values use a floating-point number to represent the number-part of their definition. A floating-point number can have any double-precision 64-bit format [IEEE 754] Section 4.2.3 [JLS] Numeric ::= AbsoluteNumeric | RelativeNumeric AbsoluteNumeric ::= AbsoluteLength AbsoluteLength ::= Number AbsoluteUnitName RelativeNumeric ::= Percent | RelativeLength Percent ::= Number RelativeLength ::= Number RelativeUnitName The following operators may be used with numerics: + Performs addition. - Performs subtraction or negation. * Performs multiplication. div Performs floating-point division according to IEEE 754. mod Returns the remainder from a truncating division. Note: Since XML allows - - 10pt - 2pt 10pt-2pt Note: The following are examples of the mod 5 mod 2 1 5 mod -2 1 -5 mod 2 -1 -5 mod -2 -1 Note: The mod % AdditiveExpr ::= MultiplicativeExpr | AdditiveExpr MultiplicativeExpr | AdditiveExpr MultiplicativeExpr MultiplicativeExpr ::= UnaryExpr | MultiplicativeExpr MultiplyOperator UnaryExpr | MultiplicativeExpr UnaryExpr | MultiplicativeExpr UnaryExpr UnaryExpr ::= PrimaryExpr | '-' UnaryExpr Note: The effect of this grammar is that the order of precedence precedence +, - *, div, mod and the operators are all left If a non-numeric value is used in an AdditiveExpr An absolute numeric is an absolute length which is a pair consisting of a Number UnitName Each unit name has associated with it an internal ratio to some common internal unit of measure (e.g., a meter). When a value is written in a property expression, it is first converted to the internal unit of measure and then mathematical operations are performed. In addition, only the mod, addition, and subtraction operators require that the numerics on either side of the operation be absolute numerics of the same unit power. For other operations, the unit powers may be different and the result should be mathematically consistent as with the handling of powers in algebra. A property definition may constrain an absolute length to a particular power. For example, when specifying font-size When the final value of a property is calculated, the resulting power of the absolute numeric must be either zero or one. If any other power is specified, the value is an error. Relative lengths are values that are calculated relative to some other set of values. When written as part of an expression, they are either converted via the property context into an absolute numeric or passed verbatim as the property value. It is an error if the property context has no available conversion for the relative numeric and a conversion is required for expression evaluation (e.g., within an add operation). Percentages are values that are counted in 1/100 units. That is, 10% 0.10 For example, a value of "110%" on a " font-size A relative length is a unit-based value that is measured against the current value of the font-size The definition of "1em" is equal to the current font size. For example, a value of "1.25em" is 1.25 times the current font size. The definition of "x-height" is the distance between the baseline and midline of an alphabet. From this comes the "ex" unit. When an em measurement is used in an expression, it is converted according to the font-size 7.9.3 font-size Strings are represented either as literals enumeration token 5.11.12 Expression Value Conversions A color is a set of values used to identify a particular color from a color space. Only RGB [sRGB] [ICC] RGB colors are directly represented in the expression language using a hexadecimal notation. ICC colors can be specified through an rgb-icc EnumerationToken Keywords are special tokens in the grammar that provide access to calculated values or other property values. The allowed keywords are defined in the following subsections. The property takes the same computed Note: "inherit" is not allowed as an expression mixed with operations. The same functionality is provided by the from-parent() function, which can be mixed with operations. When processing an expression, white space ( ExprWhitespace The following special tokenization rules must be applied in the order specified to disambiguate the grammar: If the character NCName ExprWhitespace ( FunctionName A number terminates at the first occurrence of a non-digit character . When an NCName Number UnitName The Keyword precedence EnumerationToken If a NCName numeric OperatorName ExprToken ::= '(' | ')' | '%' | Operator | FunctionName | EnumerationToken | Number Number ::= FloatingPointNumber FloatingPointNumber ::= Digits Digits | '.' Digits Digits ::= [0-9]+ Color ::= '#' AlphaOrDigits AlphaOrDigits ::= [a-fA-F0-9]+ Literal ::= '"' [^"]* '"' | "'" [^']* "'" Operator ::= OperatorName | MultiplyOperator | '+' | '-' OperatorName ::= 'mod' | 'div' MultiplyOperator ::= '*' Keyword ::= 'inherit' FunctionName ::= NCName EnumerationToken ::= NCName AbsoluteUnitName ::= 'cm' | 'mm' | 'in' | 'pt' | 'pc' | 'px' RelativeUnitName ::= 'em'|'ex' ExprWhitespace ::= S Values that are the result of an expression evaluation may be converted into property value types. In some instances this is a simple verification of set membership (e.g., is the value a legal country It is not necessary that all types be allowed to be converted. If the expression value cannot be converted to the necessary type for the property value, it is an error. The following table indicates what conversions are allowed. Type Allowed Conversions Constraints NCName Color, via the system-color() function. Enumeration value, as defined in the property definition. To a string literal The value may be checked against a legal set of values depending on the property. AbsoluteNumeric Integer, via the round() function. Color, as an RGB color value. If converting to an RGB color value, it must be a legal color value from the color space. RelativeLength To an AbsoluteLength The specific conversion to be applied is property specific and can be found in the definition of each property. Note: Conversions of compound property values are not allowed; thus for example, space-before.optimum="inherited-property-value( space-before space-before space-before The units of measure in this Recommendation have the following definitions: Name Definition cm See [ISO31] mm See [ISO31] in 2.54cm pt 1/72in pc 12pt px See 5.11.13.1 Pixels em See 5.11.7.2 Relative Lengths ex See 5.11.7.2 Relative Lengths XSL interprets a 'px' unit to be a request for the formatter to choose a device-dependent measurement that approximates viewing one pixel on a typical computer monitor. This interpretation is follows: The preferred definition of one 'px' is: The actual distance covered by the largest integer number of device dots (the size of a device dot is measured as the distance between dot centers) that spans a distance less-than-or-equal-to the distance specified by the arc-span rule in http://www.w3.org/TR/2008/REC-CSS2-20080411//syndata.html#x39 A minimum of the size of 1 device dot should be used. This calculation is done separately in each axis, and may have a different value in each axis. However, implementors may instead simply pick a fixed conversion factor, treating 'px' as an absolute unit of measurement (such as 1/92" or 1/72"). Note: Pixels should not be mixed with other absolute units in expressions as they may cause undesirable effects. Also, particular caution should be used with inherited property values that may have been specified using pixels. If the User Agent chooses a measurement for a 'px' that does not match an integer number of device dots in each axis it may produce undesirable effects, such as: moiré patterns in scaled raster graphics unrenderable overlapping areas when the renderer rounds fonts or graphics sizes upward to its actual dot-size large spaces between areas when the renderer rounds fonts or graphics sizes downward to its actual dot-size unreadable results including unacceptably small text/layout (for example, a layout was calculated at 72 dpi [dots per inch], but the renderer assumed the result was already specified in device dots and rendered it at 600 dpi). Stylesheet authors should understand a pixel's actual size may vary from device to device: stylesheets utilizing 'px' units may not produce consistent results across different implementations or different output devices from a single implementation even if stylesheets are expressed entirely in 'px' units the results may vary on different devices number floor number The floor Note: If it is necessary to use the floor number ceiling number The ceiling number round number The round number min number number The min number max number number The max number abs number The abs color rgb number number number The rgb color rgb-icc number number number NCName number number The rgb-icc fo:declarations fo:color-profile The first three parameters specify a fallback color from the sRGB color space. This color is used when the color profile is not available. The color is specified by a color value (real number) specified after the name parameter. These values are specific to the color profile. color icc-named-color number number number NCName string The icc-named-color fo:declarations fo:color-profile The color is specified by the last parameter. The first three parameters specify a fallback color from the sRGB color space. This color is used when the CIE LCH color space is not available. color system-color NCName The system-color color cmyk-icc-color number number number NCName number number number number The cmyk-icc-color fo:declarations fo:color-profile The first three parameters specify a fallback color from the sRGB color space. This color is used when the color profile is not available. The color is specified by a sequence of four color values (real numbers) specified after the name parameter. color cie-lab-color number number number number number number number The cie-lch-color [CIE15] The first three parameters specify a fallback color from the sRGB color space. This color is used when the CIE Lab color space is not available. color cie-lch-color number number number number number number number The cie-lab-color [CIE15] The first three parameters specify a fallback color from the sRGB color space. This color is used when the CIE LCH color space is not available. Uncallibrated device colors are sometimes useful in print workflows, for example to produce patches of known ink density used for quality control purposes. color device-gray-color number number number number color device-rgb-color number number number number number number color device-cmyk-color number number number number number number number A Color-managed User Agent which supports the indicated class of output device will pass the values through without color management. If the class of output device (for example, cmyk) is not supported, then the fallback sRGB color (the first three parameters) is used. As these are uncalibrated, any interpolation or compositing occurs using the fallback sRGB color value. object system-font NCName NCName The system-font For example, the expression "system-font(heading, font-size font-size font-size object inherited-property-value NCName The inherited-property-value The returned "inherited value" is the computed value of this property on this object's parent. For example, given the following: <fo:list-block> ... <fo:list-item color="red"> <fo:list-item-body background-color="green"> <fo:block background-color="inherited-property-value(color)"> </fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> The background-color fo:block color background-color fo:list-item-body fo:block number label-end The label-end 7.33.12 provisional-label-separation number body-start The body-start 7.33.11 provisional-distance-between-starts object from-parent NCName The from-parent 5.1 Specified, Computed, and Actual Values, and Inheritance object from-nearest-specified-value NCName The from-nearest-specified-value object from-page-master-region NCName The from-page-master-region In XSL-FO this function may only be used as the value of the " writing-mode reference-orientation must The computed value of the designated property is taken from that property on the layout formatting object being used to generate the region viewport/reference area pair. If this function is used in an expression on a formatting object, F fo:page-sequence F If the argument specifies a property of a compound datatype and if the expression only consists of the inherited-property-value function with an argument matching the property being computed, it is interpreted as an expansion with each component of the compound property having a value of inherited-property-value with an argument matching the component. It is an error if arguments matching a property of a compound datatype are used in any other way. Note: Consider the following example: <fo:root>
<fo:layout-master-set> <fo:simple-page-master master-name="all-pages"> <fo:region-body region-name="xsl-region-body" margin="0.75in" writing-mode="tb-rl" /> <fo:region-before region-name="xsl-region-before" extent="0.75in"/> </fo:simple-page-master> <fo:page-sequence-master master-name="default-sequence"> <fo:repeatable-page-master-reference master-reference="all-pages"/> </fo:page-sequence-master> </fo:layout-master-set>
<fo:page-sequence master-name="default-sequence"> <fo:flow flow-name="xsl-region-body"> <fo:block> [Content in a language which allows either horizontal or vertical formatting] </fo:block> </fo:flow> </fo:page-sequence>
</fo:root> This example shows a very simple page layout specification. There is a single simple-page-master, named "all-pages". This page-master has two regions defined upon it, "xsl-region-body" and "xsl-region-before". The region named "xsl-region-before" is a page header that accepts static-content (said content is omitted for simplicity in this example). The region named "xsl-region-body" is assigned the content of the single fo:flow fo:page-sequence In this example, the definition of "xsl-region-body" has a " writing-mode writing-mode writing-mode fo:page-sequence writing-mode fo:root fo:page-sequence writing-mode If, however, the above line that reads: <fo:page-sequence master-name="default-sequence"> becomes <fo:page-sequence master-name="default-sequence" writing-mode="from-page-master-region()"> then the computed value of the " writing-mode writing-mode fo:root object from-table-column NCName The from-table-column fo:table-column column-number number-columns-spanned number-columns-spanned span fo:table-cell number proportional-column-width number The proportional-column-width N N width fo:table-column object merge-property-values NCName The merge-property-values fo:multi-property-set fo:multi-properties fo:multi-properties Note: The test for applicability of a User Agent state is specified using the " active-state It is an error to use this function on formatting objects other than an fo:wrapper fo:multi-properties Certain property values are described in terms of compound datatypes, in terms of restrictions on permitted number values, or strings with particular semantics. The compound datatypes, such as space, are represented in the result tree as multiple attributes. The names of these attributes consist of the property name, followed by a period, followed by the component name. For example a " space-before space-before.minimum="2.0pt" space-before.optimum="3.0pt" space-before.maximum="4.0pt" space-before.precedence="0" space-before.conditionality="discard" A short form of compound value specification may be used, in cases where the datatype has some <length> components and for the <keep> datatype. In the first case the specification consists of giving a <length> value to an attribute with a name matching a property name. Such a specification gives that value to each of the <length> components and the initial value to all the non-<length> components. For example: space-before="4.0pt" is equivalent to a specification of space-before.minimum="4.0pt" space-before.optimum="4.0pt" space-before.maximum="4.0pt" space-before.precedence="0" space-before.conditionality="discard" Note: Since a <percentage> value, that is not interpreted as "auto", is a valid <length> value it may be used in a short form. For the <keep> datatype the specification consists of giving a value that is valid for a component to an attribute with a name matching a property name. Such a specification gives that value to each of the components. For example: keep-together="always" is equivalent to a specification of keep-together.within-line="always" keep-together.within-column="always" keep-together.within-page="always" Short forms may be used together with complete forms; the complete forms have precedence space-before="4.0pt" space-before.maximum="6.0pt" is equivalent to a specification of space-before.minimum="4.0pt" space-before.optimum="4.0pt" space-before.maximum="6.0pt" space-before.precedence="0" space-before.conditionality="discard" Compound values of properties are inherited as a unit and not as individual components. After inheritance any complete form specification for a component is used to set its value. If the computed value of a corresponding relative property is set from the corresponding absolute property, the latter is used in determining all the components of the former. Note: For example, assuming a block-progression-direction of "top-to-bottom", in a specification of margin-top="10.0pt" space-before.minimum="4.0pt" the explicit setting of one of the components of the corresponding relative property will have no effect. The following defines the syntax for specifying the datatypes usable in property values: <integer> A signed integer value which consists of an optional '+' or '-' character Note: A '+' sign is allowed for CSS2 compatibility. <number> A signed real number which consists of an optional '+' or '-' character character <length> A signed length value where a 'length' is a real number plus a unit qualification. A property may define additional constraints on the value. <length-range> A compound datatype, with components: minimum, optimum, maximum. Each component is a <length>. If "minimum" is greater than optimum, it will be treated as if it had been set to "optimum". If "maximum" is less than optimum, it will be treated as if it had been set to "optimum". A property may define additional constraints on the values, and additional permitted values and their semantics; e.g. 'auto' or <percentage>. <length-conditional> A compound datatype, with components: length, conditionality. The length component is a <length>. The conditionality component is either "discard" or "retain". A property may define additional constraints on the values. <length-bp-ip-direction> A compound datatype, with components: block-progression-direction, and inline-progression-direction. Each component is a <length>. A property may define additional constraints on the values. <space> A compound datatype, with components: minimum, optimum, maximum, precedence precedence <keep> A compound datatype, with components: within-line, within-column, and within-page. The value of each component is either "auto", "always", or an <integer>. <angle> A representation of an angle consisting of an optional '+' or '-' character <percentage> A signed real percentage which consists of an optional '+' or '-' character character <character> A single Unicode character [XML] [XML 1.1] <string> A sequence of characters. Note: Given the allowable Expression Value Conversions ( 5.11.12 Expression Value Conversions <name> A string of characters representing a name. It must conform to the definition of an NCName [XML Names] [XML Names 1.1] <family-name> A string of characters identifying a font. <color> Either a string of characters representing a keyword or a color function defined in 5.12.2 Color Functions <country> A string of characters conforming to an ISO 3166 ( [ISO3166-1] [ISO3166-2] [ISO3166-3] country <language> A string of characters conforming to either a [ISO639-2] [ISO639] <script> A string of characters conforming to an ISO 15924 script <id> A string of characters conforming to the definition of an NCName [XML Names] [XML Names 1.1] <idref> A string of characters conforming to the definition of an NCName [XML Names] [XML Names 1.1] <uri-specification> A sequence of characters that is "url(", followed by optional white space, followed by an optional single quote (') or double quote (") character [RFC3987] character Note: The definition differs from that in CSS2 in that this Recommendation allows IRIs whereas CSS2 only allows URIs. <shape> "rect (" <top> < right bottom left bottom right left <top>, < right bottom left <time> A <number> immediately followed by a time unit identifier. Time unit identifiers are: 'ms' (for milliseconds) and 's' (for seconds). <frequency> A <number> immediately followed by a frequency unit identifier. Frequency unit identifiers are: 'Hz' (for Hertz) and 'kHz' (for kilo Hertz). Support is provided for line numbers, column numbers and region numbers. For example number only every fifth line, etc. This is different from numbering from structure present in XSLT, being aligned to formatting objects. Numbering has similar features to that found in XSLT. The following formatting objects are provided. Note that letter-value fo:number fo:retrieve-number fo:number fo:retrieve-number fo:number fo:retrieve-number fo:number decimal-format The XSL-FO Subgroup wants to align with CSS, SVG and with the emerging consensus on Web fonts for downloadable font support, and to see what font properties will be available. A future draft of this document is likely to contain a more detailed section here. Allows a user to force line justification when the line length is within a certain range. For example, normally the last line of a paragraph would not be justified, but if the last line is longer than a certain threshold, a user may want to justify it anyway. Properties to specify what the alignment should be for the 'last line before a break' and the 'first line after a break'. Support for tabs and tab stops as per word processors. Compatibility with other formats, mainly word processor formats is seen as important. This allows users to specify the priority between word and letter spacing. Supports the specification of the number of syllables in addition to the number of characters to control hyphenation. The refined formatting object tree describes one or more intended presentations of the information within this tree. Formatting is the process which converts the description into a presentation. See 3 Introduction to Formatting 4 Area Model There are three kinds of formatting objects: (1) those that generate areas, (2) those that return areas, but do not generate them, and (3) those that are used in the generation of areas. The first and second kinds are typically called flow objects layout object auxiliary object This categorization leads to defining two traits which characterize the relationship between an area and the formatting objects which generate and return that area. These traits are generated-by returned-by The value of the generated-by F generate A F A 4.7.2 Line-building In the case of substituted glyph-areas, the generating formatting object is deemed to be the formatting object which generated the glyph-area which comes first in the sequence of substituted glyph-areas. In the case of an inserted glyph-area (e.g., an automatically-generated hyphen) the generating formatting object is deemed to be the generating formatting object of the last glyph-area preceding the inserted glyph-area in the pre-order traversal of the area tree. The value of the returned-by A formatting object F return the sequence of areas A B C F returned-by A F returned-by B F returned-by C If an area is a member of the sequence of areas returned by a formatting object, then either it was generated by the formatting object or it was a member of the sequence of areas returned by a child of that formatting object. Not all areas returned by a child of a formatting object need be returned by that formatting object. A formatting object may generate an area that has, as some of its children areas, areas returned by the children of that formatting object. These children (in the area tree) of the generated area are not returned by the formatting object to which they were returned. A set of nodes in a tree is a lineage there is a node N N for every node N N N The set of formatting objects that an area is returned by is a lineage Areas returned by a formatting object may be either normal out-of-line returned-by Out-of-line areas are areas used outside the normal flow of text either because they are absolutely positioned or they are part of a float returned-by The area-class area-class 4.2.5 Stacking Constraints The areas returned-by area-class A B A B returned-by A reference-area chain 6.4.17 fo:region-body 6.4.1.4 Flows and Flow Mapping The content of a formatting object is described using XML content-model syntax. In some cases additional constraints, not expressible in XML content models, are given in prose. The parameter entity, "%block;" in the content models below, contains the following formatting objects: block block-container table-and-caption table list-block The parameter entity, "%inline;" in the content models below, contains the following formatting objects: bidi-override character external-graphic instream-foreign-object inline inline-container leader page-number page-number-citation page-number-citation-last scaling-value-citation basic-link multi-toggle index-page-citation-list The following formatting objects are "neutral" containers and may be used, provided that the additional constraints listed under each formatting object are satisfied, anywhere where #PCDATA, %block;, or %inline; are allowed: multi-switch multi-properties index-range-begin index-range-end wrapper retrieve-marker The following formatting objects are "neutral" containers that may be used as described by the constraints listed under each formatting object: retrieve-table-marker The following formatting objects define "points" and may be used anywhere as a descendant of fo:flow fo:static-content change-bar-begin change-bar-end The following "out-of-line" formatting objects may be used anywhere where #PCDATA, %block;, or %inline; are allowed (except as a descendant of any "out-of-line" formatting object): float The following "out-of-line" formatting objects may be used anywhere where #PCDATA or %inline; are allowed (except as a descendant of any "out-of-line" formatting object): footnote basic-link The fo:basic-link bidi-override The fo:bidi-override direction block The fo:block block-container The fo:block-container bookmark The fo:bookmark bookmark-title The fo:bookmark-title bookmark-tree The fo:bookmark-tree change-bar-begin The fo:change-bar-begin fo:change-bar-end change-bar-end The fo:change-bar-end fo:change-bar-begin character The fo:character character color-profile Used to declare a color profile for a stylesheet. conditional-page-master-reference The fo:conditional-page-master-reference declarations Used to group global declarations for a stylesheet. external-graphic The fo:external-graphic float The fo:float float flow The content of the fo:flow flow-assignment The fo:flow-assignment flow-map The fo:flow-map flow-name-specifier The fo:flow-name-specifier flow-source-list The fo:flow-source-list fo:flow-assignment flow-target-list The fo:flow-target-list fo:flow-assignment folio-prefix The fo:folio-prefix folio-suffix The fo:folio-suffix footnote The fo:footnote footnote-body The fo:footnote-body index-key-reference The fo:index-key-reference index-page-citation-list The fo:index-page-citation-list fo:index-key-reference fo:index-page-citation-list index-page-citation-list-separator The fo:index-page-citation-list-separator index-page-citation-range-separator The fo:index-page-citation-range-separator index-page-number-prefix The fo:index-page-number-prefix fo:index-key-reference index-page-number-suffix The fo:index-page-number-suffix fo:index-key-reference index-range-begin The fo:index-range-begin fo:index-range-end index-range-end The fo:index-range-end fo:index-range-begin initial-property-set The fo:initial-property-set fo:block inline The fo:inline background inline-container The fo:inline-container instream-foreign-object The fo:instream-foreign-object fo:instream-foreign-object layout-master-set The fo:layout-master-set leader The fo:leader character list-block The fo:list-block format list-item The fo:list-item list-item-body The fo:list-item-body list-item-label The fo:list-item-label marker The fo:marker fo:retrieve-marker fo:retrieve-table-marker multi-case The fo:multi-case fo:multi-switch fo:multi-switch multi-properties The fo:multi-properties multi-property-set The fo:multi-property-set multi-switch The fo:multi-switch fo:multi-case fo:multi-toggle multi-toggle The fo:multi-toggle fo:multi-case fo:multi-case number Creates a number sequence to be processed by the XSL-FO processor and generate a list of sequences in varies of area in the XSL-FO area tree. page-number The fo:page-number page-number-citation The fo:page-number-citation page-number-citation-last The fo:page-number-citation-last page-sequence The fo:page-sequence fo:page-sequence page-sequence-master The fo:page-sequence-master page-sequence-wrapper The fo:page-sequence-wrapper fo:page-sequence region-after This region defines a viewport that is located on the "after" side of fo:region-body region-before This region defines a viewport that is located on the "before" side of fo:region-body region-body This region specifies a viewport/reference pair that is located in the "center" of the fo:simple-page-master region-end This region defines a viewport that is located on the "end" side of fo:region-body region-name-specifier The fo:region-name-specifier region-start This region defines a viewport that is located on the "start" side of fo:region-body repeatable-page-master-alternatives An fo:repeatable-page-master-alternatives repeatable-page-master-reference An fo:repeatable-page-master-reference retrieve-marker The fo:retrieve-marker fo:marker retrieve-table-marker The fo:retrieve-table-marker fo:marker root The fo:root scaling-value-citation The fo:scaling-value-citation fo:external-graphic simple-page-master The fo:simple-page-master single-page-master-reference An fo:single-page-master-reference static-content The fo:static-content table The fo:table table-and-caption The fo:table-and-caption table-body The fo:table-body table-caption The fo:table-caption fo:table-and-caption table-cell The fo:table-cell table-column The fo:table-column table-footer The fo:table-footer table-header The fo:table-header table-row The fo:table-row title The fo:title fo:title wrapper The fo:wrapper The root node of the formatting object tree must be an fo:root fo:root fo:layout-master-set fo:declarations fo:bookmark-tree fo:layout-master-set fo:page-sequence fo:page-sequence-wrapper fo:layout-master-set fo:page-sequence flows fo:flow fo:static-content fo:declarations The children of an fo:layout-master-set role role fo:page-sequence role Each fo:page-sequence-master fo:page-sequence fo:page-sequence-master The fo:page-sequence-master fo:page-sequence-master The fo:single-page-master-reference There are two ways to specify a sub-sequence that is a repetition. The fo:repeatable-page-master-reference fo:repeatable-page-master-alternatives maximum-repeats A page-master is a master that is used to generate a page page-viewport-area page-area The page-viewport-area is defined by the output medium; the page-area holds the page contents and has the effect of positioning the page contents on the output medium. A single page-master may be used multiple times. Each time it is used it generates a single page; for example, a page-master that is referenced from an fo:repeatable-page-master-reference fo:page-sequence Note: When pages are used with a User Agent such as a Web browser, it is common that the each document has only one page. The viewport used to view the page determines the size of the page. When pages are placed on non-interactive media, such as sheets of paper, pages correspond to one or more of the surfaces of the paper. The size of the paper determines the size of the page. In this specification, there is only one kind of page-master, the fo:simple-page-master An fo:simple-page-master A region specification is used as a master, the region-master region-viewport-area region-reference-area Note: The regions on the page are analogous to "frames" in an HTML document. Typically, at least one of these regions is of indefinite length in one of its dimensions. For languages with a lr-tb (or rl-tb) writing-mode Each region is defined by a region formatting object. Each region formatting object has a name and a definite position. In addition, the region's height width The specification of the region determines the size and position of region-viewport-areas generated using the region formatting object. The positioning of the viewport is relative to its page-area parent. For version 1.1 of this Recommendation, a page-master will consist of the following regions: "region-body" (one or more) and four other regions, one on each side of the body. To allow the side regions to correspond to the current writing-mode writing-mode writing-mode writing-mode writing-mode Some types of region have conditional sub-regions associated with them, and the associated region-reference-areas are divided up by having child areas corresponding to the sub-regions, including a "main-reference-area" for the region. For region-masters to which the column-count span Pages are generated by the formatter's processing of fo:page-sequence Each fo:page-sequence fo:page-sequence-master fo:page-sequence-master fo:page-sequence fo:page-sequence master-reference fo:page-sequence-master There are two kinds of flows fo:static-content fo:flow fo:static-content fo:flow fo:flow fo:page-sequence fo:page-sequence-master The children of a flow are a sequence of block-level flow objects. Each flow has a name that is given by its " flow-name fo:page-sequence The assignment of flows to regions on a page-master is determined by a flow-map fo:page-sequence fo:page-sequence Flow-maps are specified by fo:flow-map fo:page-sequence flow-map-reference flow-map-reference flow-name region-name To avoid requiring users to generate region-names, the regions all have default values for the " region-name In addition, an fo:static-content flow-name fo:static-content 6.12.1.3 Conditional Sub-Regions The areas that are descendants of a page-area are constrained by the page-master used to generate the page-area and the flows that are assigned to the regions specified on the page-master. For fo:flow fo:static-content fo:static-content flow-name xsl-before-float-separator xsl-before-float fo:static-content flow-name xsl-footnote-separator xsl-footnote The result tree structure is shown below. Figure 39. A typical use of flow maps are where there are two or more flows that each, independently of each other, flow into separate regions on the pages. Another one is when the flow is flowed from one region into another region on the same page and continuing onto further pages. A third use is when two or more flows are "concatenated"; each flow beginning where the previous one ends. Figure 40. In this case the flows are specified as: <fo:flow flow-name="A"> <fo:block>In the second century of the Christian Aera, the empire of Rome ... </fo:block> </fo:flow> and <fo:flow flow-name="B"> <fo:block>Quo usque tandem abutere, Catilina, patientia nostra? ... </fo:block> </fo:flow> The regions are specified with region-name="R" region-name="S" <fo:flow-map flow-map-name="E1"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="B"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="S"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> Figure 41. In this case the flow map is specified as follows: <fo:flow-map flow-map-name="E2"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R1"/> <fo:region-name-specifier region-name-reference="R2"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> Figure 42. In this case the flow map is specified as follows: <fo:flow-map flow-map-name="E3"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> <fo:flow-name-specifier flow-name-reference="B"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> Figure 43. In this case the flow map is specified as follows: <fo:flow-map flow-map-name="E4"> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="A"/> <fo:flow-name-specifier flow-name-reference="B"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="R1"/> <fo:region-name-specifier region-name-reference="R2"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> Large initial capital letters are often used for the first paragraph of a new section or chapter. Many scripts have precise alignment conventions for how the initial letter should be positioned relative to the text in the paragraph. There are three main types of initial letter. The first of these is called a "raised initial"; it is set in a larger size then the main text, and space must be left for it in the block direction. No special support is needed for raised initials, as an fo:inline The second sort is a margin initial; it protrudes into the margin in the inline direction, and is often larger than the paragraph text. This is treated as a special case of the third sort of initial capital, because of its vertical alignment requirements. The third sort of initial letter is often called a drop capital (often abbreviated to "drop cap"). The initial letter is large enough that it extends in the block direction to the N 44 Figure 44. Note: The height of the letter D is thus one cap-height plus three line-heights (including vertical spacing); this will not in general be equal to four times the font size, and an implementation may need to use an algorithm such as binary search to discover the correct font size given the number of lines to span. Note: If the line spacing varies over the course of the paragraph, the resulting size of an initial cap is implementation dependent: it must either be positioned using the inherited line spacing where the initial occurs, or must correctly take into account the varying line spacing, and align with the appropriate actual line of text. A way to position objects next to each other. Side-by-side includes complex positioning and breaking rules Multiple separate flows are synchronized in layout. One flow is designated as primary and contains synchronization regions marked up to draw content from the other, secondary flow or flows; this secondary content will be rendered alongside the main flow at the synchronization points. A flow map showing dependencies. <fo:flow-map> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="Arabic-Flow"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="Region-Middle"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment flow-map-dependency-reference=”Arabic-Flow”> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="Armenian-Flow"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="Region-Right"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment flow-map-dependency-reference="Arabic-Flow"> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="Syriac-Flow"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="Region-Left"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> The dependency-content-begin dependency-content-end In the example in figure 45 Figure 45. The following markup might be used: <fo:flow flow-name=”Arabic-Flow”> … <fo:block dependency-content-begin=”Key_A”> And Nadan went to Haiqâr, and said to him, ‘W’allah, O my uncle! The king verily rejoiceth in thee for having done what he commanded thee. </fo:block> <fo:block> And now he hath sent me to thee that thou mayst dismiss the soldiers to their duties and come thyself to him with thy handsbound behind thee, and thy feet chained, that the ambassadors of Pharaoh may see this, and that the king may be feared by them and by their king’. </fo:block> <fo:block> And Nadan took him and went with him to the king. </fo:block> <fo:block dependency-content-end=”Key_A”> Then answered Haiqâr and said, ‘To hear is to obey.’ </fo:block> … </fo:flow> Example : dependency-content-begin and -end properties Once the synchronized content has been composed in the non-synchronized and synchronized flows; the flow composition in the non-synchronized flow is resumed until new synchronization content is identified. Synchronization of flows is generally implemented in a formatter by leaving space between blocks, as can be seen in the left and right columns in Figure 45 Figure 46 Figure 46. The following example shows the the keep-with-dependent-content <fo:block keep-with-dependent-content=”widows” dependent-content-begin=”Key_A”> Text text text … <fo:inline dependent-content-end=”Key_A”> Text text … </fo:inline> Text text text … </fo:block> <fo:block keep-with-dependent-content=”all”> Text text text … <fo:block dependent-content-begin=”Key_B”> Text text … </fo:inline> Text text text … </fo:block> Using this example as the document structure equivalent for the schematic representation in Figure 46 47 Figure 47. Common Usage: This is the top node of the formatting object tree. It holds an fo:layout-master-set fo:declarations fo:bookmark-tree fo:layout-master-set fo:page-sequence fo:page-sequence-wrapper fo:layout-master-set fo:page-sequence fo:page-sequence fo:page-sequence-wrapper fo:root fo:page-sequence-wrapper fo:page-sequence fo:page-sequence-wrapper fo:page-sequence-wrapper fo:page-sequence Note: A document can contain multiple fo:page-sequence fo:page-sequence Areas: Page-viewport-areas are returned by the fo:page-sequence fo:root fo:root Constraints: The children of the root of the area tree consist solely of, and totally of, the page-viewport-areas returned by the fo:page-sequence fo:root fo:page-sequence properly ordered 4.7.1 General Ordering Constraints Contents: ( layout-master-set declarations bookmark-tree layout-master-set page-sequence page-sequence-wrapper It is an error if there is not at least one fo:page-sequence fo:root The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.30.15 media-usage Common Usage: The fo:declarations Areas: The fo:declarations Constraints: None. Contents: ( color-profile The fo:declarations Common Usage: The fo:color-profile color-profile-name The color-profile is identified by the URI specified in the " src When the color-profile is referenced (e.g., via the rgb-icc function 5.12.2 Color Functions If the color-profile is available, the color value identified from the color-profile should be used. If the color-profile is not available, the sRGB ( [sRGB] Areas: The fo:color-profile Constraints: None. Contents: EMPTY The following properties apply to this formatting object: 7.33.16 src 7.19.2 color-profile-name 7.19.3 rendering-intent Common Usage: The fo:page-sequence fo:page-sequence fo:page-sequence fo:page-sequence-master master-reference fo:page-sequence fo:page-sequence Areas: The fo:page-sequence fo:page-sequence fo:simple-page-master fo:flow-map All areas generated by an fo:page-sequence The page-viewport-areas identify one of the sides as a page binding edge. This recommendation does not specify the mechanism for selecting which side is the page binding edge. Note: If the User Agent can determine that the result is to be bound, then the page binding edge of any given page is the edge on which that page is intended to be bound. Commonly the page binding edge of a page with an odd folio-number is the start-edge of that page and the binding-edge of a page with an even folio-number is the end-edge of that page. The binding can be a simple as stapling or may be as complex as producing a book using an imposition scheme. For each formatting object descendant D fo:change-bar-begin F 6.13.2 fo:change-bar-begin fo:page-sequence A D A margin padding border-end-color change-bar-color F border-end-style change-bar-style F border-end-width change-bar-width F block-progression-dimension A block-progression-dimension The change bar area is positioned to be adjacent to the nearest ancestor area C A A C change-bar-offset F C change-bar-placement F Trait Derivation: The reference-orientation writing-mode reference-orientation writing-mode fo:page-sequence Note: The value may be given as an explicit value or the from-page-master-region function may be used to obtain the value specified on the layout formatting object being used to generate the region viewport/reference area pair. Constraints: Each page-viewport-area/page-reference-area pair is generated using a page-master that satisfies the constraints of the page-sequence-master identified by the master-reference fo:page-sequence master-reference The areas generated by the fo:page-sequence fo:page-sequence The areas returned to the fo:page-sequence Completeness fo:page-sequence fo:page-sequence 4.7.2 Line-building 4.7.3 Inline-building Flow-map association fo:page-sequence Areas returned from an fo:static-content flow-name xsl-before-float-separator fo:region-body xsl-before-float fo:static-content flow-name xsl-footnote-separator fo:region-body xsl-footnote If the flow-map-reference fo:flow-map fo:layout-master-set flow-map-name flow-map-reference fo:page-sequence flow-map-reference 6.4.32 fo:flow-map Area-class association fo:page-sequence All areas of area-class xsl-footnote fo:static-content flow-name xsl-footnote-separator all areas of area-class xsl-before-float fo:static-content flow-name xsl-before-float-separator all other areas must be descendants of a region-reference-area and further they must be descendants of a main-reference-area child of that region-reference-area if it has one. Stacking Flow-assignment ordering 4.7.1 General Ordering Constraints fo:page-sequence fo:flow fo:static-content If the flow-map in effect for a page-sequence has a flow-assignment child with flow-source-list S T S flow-name-reference F 1 F m T region-name-reference R 1 R n C A B C A B A B A B flow-name F i F j i j i j the ancestor page-reference-area of A B A B A region-name R k B region-name R l k l k l A B A B If a title-area is generated the following constraints must be satisfied: Completeness fo:title fo:page-sequence fo:page-sequence 4.7.2 Line-building 4.7.3 Inline-building Stacking fo:title The default ordering constraint of section 4.7.1 General Ordering Constraints fo:title Contents: ( title folio-prefix folio-suffix static-content flow The following properties apply to this formatting object: 7.10.1 country 7.30.7 flow-map-reference 7.29.1 format 7.10.6 language 7.29.4 letter-value 7.29.2 grouping-separator 7.29.3 grouping-size 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.30.11 initial-page-number 7.30.10 force-page-count 7.30.13 master-reference 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: The fo:page-sequence-wrapper fo:page-sequence Areas: The fo:page-sequence-wrapper fo:page-sequence-wrapper fo:page-sequence-wrapper Trait Derivation: Except for " id index-class index-key fo:page-sequence-wrapper Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:page-sequence-wrapper fo:page-sequence-wrapper fo:page-sequence-wrapper fo:page-sequence Note: Because an fo:page-sequence-wrapper fo:page-sequence id index-key index-class fo:page-sequence-wrapper id id Contents: ( layout-master-set page-sequence page-sequence-wrapper The following properties apply to this formatting object: 7.33.8 id 7.25.1 index-class 7.25.2 index-key Common Usage: The fo:layout-master-set Areas: The fo:layout-master-set fo:layout-master-set fo:page-sequence Constraints: The value of the master-name fo:layout-master-set Contents: ( simple-page-master page-sequence-master flow-map Common Usage: The fo:page-sequence-master fo:page-sequence-master fo:page-sequence Note: There are several ways of specifying a potential sequence of pages. One can specify a sequence of references to particular page-masters. This yields a bounded sequence of potential pages. Alternatively, one can specify a repeating sub-sequence of one or more page-masters. This sub-sequence can be bounded or unbounded. Finally one can intermix the two kinds of sub-sequence-specifiers. Areas: The fo:page-sequence-master fo:page-sequence Constraints: The children of the fo:page-sequence-master sub-sequence-specifiers fo:page-sequence-master fo:page-sequence-master It is an error if the entire sequence of sub-sequence-specifiers children is exhausted while some areas returned by an fo:flow Contents: ( single-page-master-reference repeatable-page-master-reference repeatable-page-master-alternatives The following properties apply to this formatting object: 7.30.12 master-name Common Usage: An fo:single-page-master-reference fo:page-sequence-master fo:single-page-master-reference Areas: The fo:single-page-master-reference fo:page-sequence Constraints: The fo:single-page-master-reference fo:simple-page-master master-name master-reference fo:single-page-master-reference The sub-sequence of pages mapped to this sub-sequence-specifier satisfies the constraints of this sub-sequence-specifier if (a) the sub-sequence of pages consists of a single page and (b) that page is constrained to have been generated using the fo:simple-page-master fo:single-page-master-reference Contents: EMPTY The following properties apply to this formatting object: 7.30.13 master-reference Common Usage: An fo:repeatable-page-master-reference Areas: The fo:repeatable-page-master-reference fo:page-sequence Constraints: The fo:repeatable-page-master-reference fo:simple-page-master master-name master-reference fo:repeatable-page-master-reference The sub-sequence of pages mapped to this sub-sequence-specifier satisfies the constraints of this sub-sequence-specifier if (a) the sub-sequence of pages consists of zero or more pages, (b) each page is generated using the fo:simple-page-master fo:repeatable-page-master-reference maximum-repeats If no region-master child of the page-master referred to by this formatting object has a region-name fo:page-sequence Contents: EMPTY The following properties apply to this formatting object: 7.30.13 master-reference 7.30.14 maximum-repeats Common Usage: The fo:repeatable-page-master-alternatives Typical conditions include testing whether the page which is generated using the alternative is: The first or last page in a page-sequence; Blank The nth page in a page-sequence or a page cycle. The full set of conditions allows different page-masters to be used for the first page, for odd and even pages, for blank pages, etc. Note: Because the conditions are tested in order from the beginning of the sequence of children, the last alternative in the sequence usually has a condition that is always true and this alternative references the page-master that is used for all pages that do not receive some specialized layout. Areas: The fo:repeatable-page-master-alternatives fo:page-sequence Constraints: The children of the fo:repeatable-page-master-alternatives fo:conditional-page-master-reference alternatives The sub-sequence of pages mapped to this sub-sequence-specifier satisfies the constraints of this sub-sequence-specifier if (a) the sub-sequence of pages consists of zero or more pages, (b) each page is generated using the fo:simple-page-master fo:repeatable-page-master-alternatives true true maximum-repeats Contents: ( conditional-page-master-reference The following properties apply to this formatting object: 7.30.14 maximum-repeats 7.30.23 sequence-repeats Common Usage: The fo:conditional-page-master-reference Areas: The fo:conditional-page-master-reference fo:page-sequence Constraints: The fo:conditional-page-master-reference fo:simple-page-master master-name master-reference fo:conditional-page-master-reference There are three traits, page-position odd-or-even blank-or-not-blank true fo:conditional-page-master-reference true Note: Since the properties from which these traits are derived are not inherited and the initial value of all the properties makes the corresponding sub-condition true true The sub-condition corresponding to the page-position true fo:conditional-page-master-reference referencing page-sequence fo:page-sequence fo:page-sequence-master fo:conditional-page-master-reference The sub-condition corresponding to the odd-or-even true odd-or-even fo:conditional-page-master-reference The sub-condition corresponding to the blank-or-not-blank true fo:conditional-page-master-reference fo:flow fo:conditional-page-master-reference fo:flow break-after break-before fo:flow Note: A "blank page" is a page generated under (2) of the sub-condition corresponding to " blank-or-not-blank Contents: EMPTY The following properties apply to this formatting object: 7.30.13 master-reference 7.30.18 page-position 7.30.16 odd-or-even 7.30.1 blank-or-not-blank Common Usage: The fo:page-master is used in the generation of pages and specifies the geometry of the page. The page may be subdivided into an arbitrary number of regions, each called an fo:region. Note: The region has similar behaviour to a region-body, this means that an fo:page-master is formed by an arbitrary number of body-like regions. Regions are positioned absoulutely into the page and have a concept of z-index. Areas: The fo:page-master formatting object generates no area directly. It is used in the generation of pages by an fo:page-sequence. When the fo:page-master is used to generate a page, a viewport/reference pair is generated, consisting of a page-viewport-area and a page-reference-area. The page-viewport-area represents the physical bounds of the output medium. The page-reference-area represents the portion of the page on which content is intended to appear; that is, the area inside the page margins. In addition, when the fo:page-master is used to generate a page, viewport/reference pairs that correspond to the regions that are the children of the fo:page-master are also generated. Figure 48. Trait Derivation: Same as fo:simple-page-master Constraints: Same as fo:simple-page-master Contents: (region)+ The following properties apply to this formatting object: 7.11 Common Margin Properties-Block 7.22.5 bleed-box 7.30.12 master-name 7.30.17 page-height 7.30.19 page-width 7.22.3 reference-orientation 7.22.6 trim-box 7.32.7 writing-mode Common Usage: The fo:simple-page-master Note: For example, if the writing-mode fo:simple-page-master left right Note: The simple-page-master is intended for systems that wish to provide a simple page layout facility. Future versions of this Recommendation may support more complex page layouts constructed using the fo:page-master Areas: The fo:simple-page-master fo:page-sequence When the fo:simple-page-master In addition, when the fo:simple-page-master fo:simple-page-master 6.4.17 fo:region-body 6.4.18 fo:region-before 6.4.19 fo:region-after 6.4.20 fo:region-start 6.4.21 fo:region-end writing-mode Figure 49. The spacing between the outer four regions and each fo:region-body extent fo:region-body Trait Derivation: The reference-orientation writing-mode 6.4.7 fo:page-sequence writing-mode reference-orientation padding Constraints: When a page-master is used in the generation of a page, the block-progression-dimension inline-progression-dimension page-height page-width page-height page-width page-height bottom The traits derived from the " margin-top margin-bottom margin-left margin-right Note: The reference points for the page-viewport-area content-rectangle are in terms of the "top", " bottom left right writing-mode The value of the folio-number fo:page-sequence initial-page-number folio-number The format letter-value grouping-separator grouping-size country language format [XSLT] fo:page-number Constraints applicable to regions: There are a number of constraints that apply to all the regions that are specified within a given fo:simple-page-master If the block-progression-dimension block-progression-dimension overflow If all the flows assigned to the corresponding region are fo:static-content block-progression-dimension If all the flows assigned to the corresponding region are fo:flow If the value of the media-usage paginate overflow visible hidden error-if-overflow block-progression-dimension block-progression-dimension If the value of the media-usage bounded-in-one-dimension unbounded overflow scroll auto block-progression-dimension Contents: ( region-body region-before region-after region-start region-end The following properties apply to this formatting object: 7.11 Common Margin Properties-Block 7.30.12 master-name 7.30.17 page-height 7.30.19 page-width 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: Used in constructing a simple-page-master. This region specifies a viewport/reference pair that is located in the "center" of the fo:simple-page-master overflow Note: Typically, for paged media and when no explicit flow map is specified, the areas returned by the fo:flow fo:page-sequence fo:region-body fo:flow fo:flow Note: The body region should be sized and positioned within the fo:simple-page-master fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:region-body fo:region-body fo:region-body The spacing between the last four regions and the fo:region-body extent x fo:region-body The fo:region-body column-count Areas: The fo:region-body fo:simple-page-master fo:region-body overflow The position and size of the region-viewport-area is specified relative to the content-rectangle of the page-reference-area generated by fo:simple-page-master margin-top margin-bottom margin-left margin-right padding border-width The region-reference-area generated using an fo:region-body writing-mode fo:region-body direction In addition to the viewport/reference pair, when the region-body is used to generate areas, at least one and up to three additional reference-areas are generated. These reference-areas are the optional before-float-reference-area footnote-reference-area main-reference-area left padding border Note: If there is no before-float-reference-area or footnote-reference-area child of the region-reference-area, then the content-rectangle of the main-reference-area is coterminous with the content-rectangle of the region-reference-area. The main-reference-area has as its children a sequence of span-reference-areas border padding inline-progression-dimension Each span-reference-area has one or more reference-area children, designated as normal-flow-reference-areas column-count column-count span column-count span column-count column-count For each span-reference-area, the number N column-count It is an error to specify a column-count overflow The inline-progression-dimension N column-gap inline-progression-dimension N inline-progression-dimension column-in-size = (body-in-size - ( N column-gap N The block-progression-dimension Note: As noted above, the block-progression-dimension The normal-flow-reference-areas are positioned within the span-reference-area as follows: The first column is positioned with the before-edge and start-edge of its content-rectangle coincident with the before-edge and start-edge of the content-rectangle of the span-reference-area. The content-rectangle of the J J column-gap N Note: If the writing-mode right All areas generated by using the fo:region-body Trait Derivation: The reference-orientation writing-mode 6.4.7 fo:page-sequence reference-orientation writing-mode The remaining traits on the region-viewport-area and region-reference-area are set according to the normal rules for determining the values of traits. The traits on the span-reference-areas and on the normal-flow-reference-areas are determined in the same manner as described in 5 Property Refinement / Resolution Constraints: The constraints applicable to all regions (see 6.4.16 fo:simple-page-master The inline-progression-dimension inline-progression-dimension start-indent end-indent reference-orientation The block-progression-dimension block-progression-dimension space-before space-after reference-orientation The values of the space-before start-indent The constraints on the size and position of the region-reference-area generated using the fo:region-body 6.4.16 fo:simple-page-master Contents: EMPTY The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.22.1 clip 7.30.2 column-count 7.30.3 column-gap 7.15.5 display-align 7.22.2 overflow 7.30.21 region-name 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: Used in constructing a simple-page-master. This region specifies a viewport/reference pair that is located on the "before" side of the page-reference-area. In lr-tb writing-mode overflow Areas: The fo:region-before The values of the padding border-width The before-edge of the content-rectangle of this region-viewport-area is positioned coincident with the before-edge of the content-rectangle of the page-reference-area generated using the parent fo:simple-page-master block-progression-dimension extent fo:region-before The inline-progression-dimension precedence fo:region-before precedence true inline-progression-dimension float precedence fo:region-before false float fo:region-before extent fo:region-before The region-reference-area lies on a canvas underneath the region-viewport-area. The size of the region-reference-area depends on the setting of the overflow overflow writing-mode Trait Derivation: The reference-orientation writing-mode 6.4.7 fo:page-sequence reference-orientation writing-mode The remaining traits on the region-viewport-area and region-reference-area are set according to the normal rules for determining the values of traits. Constraints: The constraints on the size and position of the region-reference-area generated using the fo:region-before 6.4.16 fo:simple-page-master Contents: EMPTY The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties 7.22.1 clip 7.15.5 display-align 7.30.5 extent 7.22.2 overflow 7.30.20 precedence 7.30.21 region-name 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: Used in constructing a simple-page-master. This region specifies a viewport/reference pair that is located on the "after" side of the page-reference-area. In lr-tb writing-mode overflow Areas: The fo:region-after The values of the padding border-width The after-edge of the content-rectangle of this region-viewport-area is positioned coincident with the after-edge of the content-rectangle of the page-reference-area generated using the parent fo:simple-page-master block-progression-dimension extent fo:region-after The inline-progression-dimension precedence fo:region-after precedence true inline-progression-dimension float precedence fo:region-after false float fo:region-after extent fo:region-after The region-reference-area lies on a canvas underneath the region-viewport-area. The size of the region-reference-area depends on the setting of the overflow overflow writing-mode Trait Derivation: The reference-orientation writing-mode 6.4.7 fo:page-sequence reference-orientation writing-mode The remaining traits on the region-viewport-area and region-reference-area are set according to the normal rules for determining the values of traits. Constraints: The constraints on the size and position of the region-reference-area generated using the fo:region-after 6.4.16 fo:simple-page-master Contents: EMPTY The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties 7.22.1 clip 7.15.5 display-align 7.30.5 extent 7.22.2 overflow 7.30.20 precedence 7.30.21 region-name 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: Used in constructing a simple-page-master. This region specifies a viewport/reference pair that is located on the "start" side of the page-reference-area. In lr-tb writing-mode left overflow Areas: The fo:region-start The values of the padding border-width The start-edge of the content-rectangle of this region-viewport-area is positioned coincident with the start-edge of the content-rectangle of the page-reference-area generated using the parent fo:simple-page-master inline-progression-dimension extent fo:region-start The block-progression-dimension precedence fo:region-before fo:region-after precedence false precedence fo:region-before fo:region-after false block-progression-dimension float precedence true float fo:region-start extent fo:region-start precedence true The region-reference-area lies on a canvas underneath the region-viewport-area. The size of the region-reference-area depends on the setting of the overflow overflow writing-mode Trait Derivation: The reference-orientation writing-mode 6.4.7 fo:page-sequence reference-orientation writing-mode The remaining traits on the region-viewport-area and region-reference-area are set according to the normal rules for determining the values of traits. Constraints: The constraints on the size and position of the region-reference-area generated using the fo:region-start 6.4.16 fo:simple-page-master Contents: EMPTY The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties 7.22.1 clip 7.15.5 display-align 7.30.5 extent 7.22.2 overflow 7.30.21 region-name 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: Used in constructing a simple-page-master. This region specifies a viewport/reference pair that is located on the "end" side of the page-reference-area. In lr-tb writing-mode right overflow Areas: The fo:region-end The values of the padding border-width The end-edge of the content-rectangle of this region-viewport-area is positioned coincident with the end-edge of the content-rectangle of the page-reference-area generated using the parent fo:simple-page-master inline-progression-dimension extent fo:region-end The block-progression-dimension precedence fo:region-before fo:region-after precedence false precedence fo:region-before fo:region-after false block-progression-dimension float precedence true float fo:region-end extent fo:region-end precedence true The region-reference-area lies on a canvas underneath the region-viewport-area. The size of the region-reference-area depends on the setting of the overflow overflow writing-mode Trait Derivation: The reference-orientation writing-mode 6.4.7 fo:page-sequence reference-orientation writing-mode The remaining traits on the region-viewport-area and region-reference-area are set according to the normal rules for determining the values of traits. Constraints: The constraints on the size and position of the region-reference-area generated using the fo:region-end 6.4.16 fo:simple-page-master Contents: EMPTY The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties 7.22.1 clip 7.15.5 display-align 7.30.5 extent 7.22.2 overflow 7.30.21 region-name 7.22.3 reference-orientation 7.32.7 writing-mode Common Usage: Common Usage: Used in constructing a page-master, the behavior of each fo:region is similar to the behavior of fo:region-body of XSL-FO 1.1. A region specifies a viewport/reference pair that is located in an absoulte position within the fo:page-master. The "overflow"trait controls how much of the underlying region-reference-area is visible; that is, whether the region-reference-area is clipped by its parent region-viewport-area. Note: Typically, for paged media, the areas returned by the fo:flow formatting object in a fo:page-sequence fo:region-body fo:flow The fo:region column-count Areas: Same as fo:region-body Trait Derivation: Same as fo:region-body Constraints: Same as fo:region-body Contents: (shape-name-specifier, shape-path-specifier?, shape-background-specifier*, shape-border-specifier*) Example <fo:page-master master-name="only" page-height="11in" page-width="8.5in" margin-top="3pt" margin-bottom="3pt" margin-left="3pt" margin-right="3pt">
<fo:region absolute-position="absolute" top="0.8636in" left="1.125in" width="6.75in" height="7.75in" region-name="region_A" z-index="0" wrap="shape" wrap-sides="both" wrap-path="shape"> ... shape reference specifier(s) ... </fo:region>
<fo:region absolute-position="absolute" top="1.3in" left="1.4in" width="3.6in" height="5.4in" region-name="region_B" z-index="1"> ... shape reference specifier(s) ... </fo:region>
</fo:page-master> The following properties apply to this formatting object: 7.6 Common Absolute Position Properties 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.14 Common Wrap Properties 7.22.1 clip 7.30.2 column-count 7.30.3 column-gap 7.15.5 display-align 7.16.6 height 7.22.2 overflow 7.30.21 region-name 7.22.3 reference-orientation 7.16.14 width 7.32.7 writing-mode 7.33.18 z-index The shape assignment model allows a region to point to one or more regions that are used to define: content path: where the region's content is bound to wrap wrapping path: where the region's intruded content is bound to wrap around border: one or more shapes used to define a border that is beyond standard FO border capabilities or it is designed ad-hoc background: one or more shapes used to define a background effect that is beyond standard FO background capabilities This draft does not yet cover the interactions between non-rectangular shapes and footnotes. Shape assignment model illustration Figure 50. Example 3. Full Shape and Region use and re-use. <fo:layout-master-set> <fo:shape shape-name="hexagon"> <svg:svg xmlns:svg="http://www.w3.org/2000/svg"> <svg:path d="M ... z " /> </svg:svg> </fo:shape>
<fo:shape shape-name="intruder-bag"> <svg:svg xmlns:svg="http://www.w3.org/2000/svg"> <svg:path d="M ... z " /> </svg:svg> </fo:shape>
<fo:shape shape-name="border-bag"> <svg:svg xmlns:svg="http://www.w3.org/2000/svg"> <svg:path d="M ... z " /> </svg:svg>> </fo:shape>
<fo:shape shape-name="bag"> <svg:svg xmlns:svg="http://www.w3.org/2000/svg"> <svg:path d="M ... z " /> </svg:svg> </fo:shape>
<fo:page-master master-name="only" page-height="11in" page-width="8.5in" margin-top="3pt" margin-bottom="3pt" margin-left="3pt" margin-right="3pt">
<fo:region absolute-position="absolute" top="0.8636in" left="1.125in" width="10in" height="12in" region-name="region_A" z-index="0">
<fo:shape-name-specifier shape-name-reference="bag" width="100%" height="100%" display-align="center" />
<fo:shape-path-specifier shape-name-reference="intruder-bag" width="100%" height="100%" display-align="center" />
<fo:shape-border-specifier shape-name-reference="border-bag" width="100%" height="100%" display-align="center" />
<fo:fo:shape-background-specifier shape-name-reference="hexagon" width="80%" height="80%" relative-position="relative" top="6in" left="6in" />
<fo:fo:shape-background-specifier shape-name-reference="hexagon" width="60%" height="60%" relative-position="relative" top="4in" left="4in" />
<fo:fo:shape-background-specifier shape-name-reference="hexagon" width="40%" height="40%" relative-position="relative" top="2in" left="2in" />
<fo:fo:shape-background-specifier shape-name-reference="hexagon" width="20%" height="20%" relative-position="relative" top="1in" left="1in" />
</fo:region> </fo:page-master>
</fo:layout-master-set> The fo:region-body The extent in the inline-direction of each extension-region is indicated in the extent fo:extension-region-start fo:extension-region-end Figure 51 Figure 51. An example declaration of these regions is shown below: <fo:simple-page-master master-name="only" page-height="29.7cm" page-width="21cm" margin-top="1cm" margin-bottom="2cm" margin-left="2.5cm" margin-right="2.5cm"> <fo:region-body margin-top="3cm" margin-bottom="1.5cm" margin-left="2cm" margin-right="2cm"/> <fo:extension-region-start extent="1cm" distance="0.5cm"/> <fo:extension-region-end extent="1cm" distance="0.5cm"/> <fo:region-before precedence="true" extent="3cm"/> <fo:region-after precedence="true" extent="1.5cm"/> <fo:region-start extent="1cm"/> <fo:region-end extent="1cm"/> </fo:simple-page-master> The elements fo:extension-region-start fo:extension-region-end It is an error if a marginalia is contained in a page whose fo:simple-page-master fo:extension-region-start fo:extension-region-end Common Usage: Used to define a rectangular region that extends from the region-body along the "start" direction to contain marginalia, if they exist. Areas: The extension-region-start specifies a viewport/reference pair that is located on the "start" side of the region-body, meaning that the before edge of the extension-region is aligned with the before-edge of the region-body and the end-edge of this region is parallel to the start-edge of the region-body, at a distance specified by the "distance"attribute. Constraints: None. Contents: Empty. Common Usage: Used to define a rectangular region that extends from the fo:region-body fo:marginalia The fo:extension-region-end distance Constraints: None. Contents: Empty. Common Usage: The fo:shape-path-specifier is used to specify the intrusion path created from this region when intruding other regions. Contents EMPTY The following properties apply to this formatting object: [shape-name-reference similar to flow-name-reference] No such property defined 7.13 Common Relative Position Properties 7.15.5 display-align 7.16.6 height 7.16.14 width Common Usage: The fo:shape-background-specifier is used to specify the backround shape design. Contents: EMPTY The following properties apply to this formatting object: [shape-name-reference similar to flow-name-reference] No such property defined 7.13 Common Relative Position Properties 7.15.5 display-align 7.16.6 height 7.16.14 width Common Usage: The fo:shape-border-specifier is used to specify the backround shape design. Contents: EMPTY The following properties apply to this formatting object: [shape-name-reference similar to flow-name-reference] No such property defined 7.13 Common Relative Position Properties 7.16.6 height 7.16.14 width Common Usage: The content of the fo:flow Areas: The fo:flow fo:flow fo:flow fo:flow Constraints: The flow-map determines the assignment of the content of the fo:flow Contents: ( %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.30.8 flow-name Common Usage: The fo:static-content This content is repeated, in its entirety, on every page to which it is assigned. Areas: The fo:static-content fo:static-content fo:static-content fo:static-content Constraints: The flow-map determines the assignment of the content of the fo:static-content The fo:static-content 4.7.1 General Ordering Constraints fo:static-content P C S P C fo:static-content S Contents: ( %block; The following properties apply to this formatting object: 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.30.8 flow-name Common Usage: The fo:title fo:title Areas: This formatting object returns the sequence of areas returned by the children of this formatting object. Constraints: The sequence of returned areas must be the concatenation of the sub-sequences of areas returned by each of the flow children of the fo:title Contents: (#PCDATA| %inline; An fo:title fo:float fo:footnote fo:marker Additionally, an fo:title fo:block-container The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.19.1 color 7.17.4 line-height 7.33.17 visibility Common Usage: The fo:flow-map Areas: The fo:flow-map fo:page-sequence Each fo:flow-assignment fo:flow fo:flow fo:page-sequence fo:flow Note: This is independent of the actual sequence of pages, which is generated as it has always been generated using the fo:simple-page-master fo:page-sequence-master master-reference fo:page-sequence For each fo:flow-assignment fo:flow-map fo:flow-source-list fo:flow-target-list fo:flow-map assigns fo:flow-name-specifier fo:region-name-specifier Constraints: Many of the constraints that a flow-map induces are expressed in 6.4.7 fo:page-sequence The children of the fo:flow-map fo:flow-assignment flow-name fo:flow-assignment fo:flow-map region-name fo:flow-assignment fo:flow-map Implicit flow-map: <fo:flow-map> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="xsl-region-body"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="xsl-region-body"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="xsl-region-before"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="xsl-region-before"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="xsl-region-after"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="xsl-region-after"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="xsl-region-start"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="xsl-region-start"/> </fo:flow-target-list> </fo:flow-assignment> <fo:flow-assignment> <fo:flow-source-list> <fo:flow-name-specifier flow-name-reference="xsl-region-end"/> </fo:flow-source-list> <fo:flow-target-list> <fo:region-name-specifier region-name-reference="xsl-region-end"/> </fo:flow-target-list> </fo:flow-assignment> </fo:flow-map> Contents: ( flow-assignment The following properties apply to this formatting object: 7.30.6 flow-map-name Common Usage: The fo:flow-assignment Areas: The fo:flow-assignment fo:page-sequence Constraints: The children of the fo:flow-assignment Contents: ( flow-source-list flow-target-list Common Usage: The fo:flow-source-list fo:flow-assignment Areas: The fo:flow-source-list fo:page-sequence Constraints: The children of the fo:flow-source-list fo:flow fo:static-content Contents: ( flow-name-specifier Common Usage: The fo:flow-name-specifier Areas: The fo:flow-name-specifier fo:page-sequence Constraints: The flow-name-reference Contents: EMPTY The following properties apply to this formatting object: 7.30.9 flow-name-reference Common Usage: The fo:flow-target-list fo:flow-assignment Areas: The fo:flow-target-list fo:page-sequence Constraints: The children of the fo:flow-target-list Contents: ( region-name-specifier Common Usage: The fo:region-name-specifier Areas: The fo:region-name-specifier fo:page-sequence Constraints: The region-name-reference Contents: EMPTY The following properties apply to this formatting object: 7.30.22 region-name-reference The fo:block fo:block The following example shows the use of fo:block Input sample: <doc> <chapter> <title>Chapter title</title> <section> <title>First section title</title> <paragraph>Section one's first paragraph.</paragraph> <paragraph>Section one's second paragraph.</paragraph> </section> <section> <title>Second section title</title> <paragraph>Section two's only paragraph.</paragraph> </section> </chapter> </doc> In this example the chapter title appears at the top of the page (its " space-before Space between chapter title and first section title is (8pt,8pt,8pt): the chapter title's " space-after precedence space-before Space between the first section title and section one's first paragraph is (6pt,6pt,6pt): the section title's " space-after precedence space-before Space between the two paragraphs is (6pt,8pt,10pt): the " space-after precedence space-before space-after space-before Space between the second paragraph of the first section and the title of the second section is (12pt,12pt,12pt): the " space-after precedence space-before space-after space-before The indent on the first line of the first paragraph in section one and the only paragraph in section two is zero; the indent on the first line of the second paragraph in section one is 2pc. XSL Stylesheet: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="chapter"> <fo:block break-before="page"> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="chapter/title"> <fo:block text-align="center" space-after="8pt" space-before="16pt" space-after.precedence="3"> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="section"> <xsl:apply-templates/> </xsl:template>
<xsl:template match="section/title"> <fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3"> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="paragraph[1]" priority="1"> <fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt"> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="paragraph"> <fo:block text-indent="2pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt"> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:block break-before="page">
<fo:block text-align="center" space-after="8pt" space-before="16pt" space-after.precedence="3">Chapter title </fo:block>
<fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3">First section title </fo:block>
<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Section one's first paragraph. </fo:block>
<fo:block text-indent="2pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Section one's second paragraph. </fo:block>
<fo:block text-align="center" space-after="6pt" space-before="12pt" space-before.precedence="0" space-after.precedence="3">Second section title </fo:block>
<fo:block text-indent="0pc" space-after="7pt" space-before.minimum="6pt" space-before.optimum="8pt" space-before.maximum="10pt">Section two's only paragraph. </fo:block>
</fo:block> Common Usage: The fo:block From the requirement documents, user requirement is to rotate a block or block-container through n degrees. This has not yet been developed Areas: The fo:block normal fo:block page-level-out-of-line reference-level-out-of-line fo:block fo:block 4.7.2 Line-building Trait Derivation: The .minimum, .optimum, and .maximum components of the half-leading line-height text-altitude text-depth precedence line-height Note: The usage of the half-leading is described in 4.5 Line-areas Constraints: No area may have more than one normal child area returned by the same fo:block The children of each normal area generated by an fo:block 4.7.2 Line-building In addition the constraints imposed by the traits derived from the properties applicable to this formatting object must be satisfied. The geometric constraints are rigorously defined in 4 Area Model Contents: (#PCDATA| %inline; %block; In addition this formatting object may have a sequence of zero or more fo:marker fo:initial-property-set The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.10 Common Hyphenation Properties 7.11 Common Margin Properties-Block 7.13 Common Relative Position Properties 7.21.1 break-after 7.21.2 break-before 7.20.1 clear 7.19.1 color 7.32.5 text-depth 7.32.4 text-altitude 7.17.1 hyphenation-keep 7.17.2 hyphenation-ladder-count 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.20.3 intrusion-displace 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.3 last-line-end-indent 7.17.7 linefeed-treatment 7.17.4 line-height 7.17.5 line-height-shift-adjustment 7.17.6 line-stacking-strategy 7.21.6 orphans 7.17.12 white-space-treatment 7.22.4 span 7.17.8 text-align 7.17.9 text-align-last 7.17.10 text-indent 7.33.17 visibility 7.31.3 border-collapse 7.17.11 white-space-collapse 7.21.7 widows 7.17.13 wrap-option Common Usage: The fo:block-container reference-orientation Note: The use of this flow object is not required for changing the inline-progression-direction only; in that case the Unicode BIDI algorithm and the fo:bidi-override From the requirement documents, user requirement is to rotate a block or block-container through n degrees. This has not yet been developed Areas: The fo:block-container block-progression-dimension inline-progression-dimension fo:block-container fo:block-container fo:block-container Note: In the case that the block-progression-dimension.maximum is other than "auto", then overflow overflow If the absolute-position Trait Derivation: The reference-orientation writing-mode fo:block-container reference-orientation inline-progression-dimension fo:block-container block-progression-dimension overflow Note: As a property value applies to each of the areas generated by this flow object the size can vary from instance to instance if the value is "auto" or a <length-range>. Constraints: The children of each reference-area generated by an fo:block-container block-area fo:block-container properly stacked properly ordered Any reference-level-out-of-line fo:block-container 6.12.2 fo:float Contents: ( %block; In addition an fo:block-container absolutely positioned fo:marker The following properties apply to this formatting object: 7.6 Common Absolute Position Properties 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.16.3 block-progression-dimension 7.21.1 break-after 7.21.2 break-before 7.20.1 clear 7.22.1 clip 7.15.5 display-align 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.20.3 intrusion-displace 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.22.2 overflow 7.22.3 reference-orientation 7.22.4 span 7.16.14 width 7.32.7 writing-mode 7.33.18 z-index Common Usage: The fo:alternative-copyfit-content It might be a child of a fo:flow fo:block-container fo:table-cell Areas: The fo:alternative-copyfit-content fo:alternative-copyfit-content Contents: (%block;)* Example: <fo:flow flow-name="A"> <fo:alternative-copyfit-content> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt">Crucis rosa ut hoc sien qua non res veni.</fo:block> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Etiam tristique, nulla a pulvinar hendrerit nihil tortor urna auctor etim domine secularia cali sed ut quotie ire in domince hoc fantus quis eius rei rei. </fo:block> </fo:alternative-copyfit-content>
<fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Lorem maecenas blandit ac, neque sed ut pulvinar, lectus sagittis sapien per risus vel. Ligula sapien sed morbi cras tellus commodo. Si qua ex docet dei etris crucis</fo:block> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> curabitur magna nis, faucibus sed ornare sed, congue eu dui. Pellentesque habitant morbi tristique senectus et netus et malessecularia uada fames ac turpis egestas. </fo:block> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Nunc sit amet dolor sed sem congue mattis sed ut arcu. Mauris id magna sit amet elit aliquam.</fo:block> <fo:block>Pellentesque habitant morbi tristique senectus et netus et malesuada fames.</fo:block> </fo:flow> The following properties apply to this formatting object: Open issue Deferred. Likely to be resolved using a function similar to xsl:choose to select content based on formatter feedback. Open issue Should copyfit content be allowed in static content. Inline-level formatting objects are most commonly used to format putting the first line of a paragraph into small-caps, turning a normally inline formatting object, fo:external-graphic fo:block formatting a running footer containing the word "Page" followed by a page number. Input sample: <doc> <p>This is the text of a paragraph that is going to be presented with the first line in small-caps.</p> </doc> XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="p"> <fo:block> <fo:initial-property-set font-variant="small-caps"/> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> Result instance: elements and attributes in the fo: namespace <fo:block> <fo:initial-property-set font-variant="small-caps"> </fo:initial-property-set>This is the text of a paragraph that is going to be presented with the first line in small-caps. </fo:block> Input sample: <doc> <figure> <photo image="TH0317A.jpg"/> <caption>C'ieng Tamlung of C'ieng Mai</caption> </figure> </doc> In this example the image (an fo:external-graphic XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="figure"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="photo"> <fo:block text-align="center"> <fo:external-graphic src="'url({@image})'"/> </fo:block> </xsl:template>
<xsl:template match="caption"> <fo:block space-before="3pt" text-align="center" start-indent="10mm" end-indent="10mm"> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> fo: element and attribute tree: <fo:block> <fo:block text-align="center"> <fo:external-graphic src="'url(TH0317A.jpg)'"/> </fo:block>
<fo:block space-before="3pt" text-align="center" start-indent="10mm" end-indent="10mm">C'ieng Tamlung of C'ieng Mai</fo:block> </fo:block> Input sample: <!DOCTYPE doc SYSTEM "pgref.dtd"> <doc> <chapter id="x"><title>Chapter</title> <p>Text</p> </chapter> <chapter><title>Chapter</title> <p>For a description of X see <ref refid="x"/>.</p> </chapter> </doc> In this example each page has a running footer containing the word "Page" followed by the page number. The "ref" element generates the word "page" followed by the page number of the page on which the referenced by the "refid" attribute was placed. XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="doc"> <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="page" page-height="297mm" page-width="210mm" margin-top="20mm" margin-bottom="10mm" margin-left="25mm" margin-right="25mm"> <fo:region-body margin-top="0mm" margin-bottom="15mm" margin-left="0mm" margin-right="0mm"/> <fo:region-after extent="10mm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page"> <fo:static-content flow-name="xsl-region-after"> <fo:block> <xsl:text>Page </xsl:text> <fo:page-number/> </fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <xsl:apply-templates/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template>
<xsl:template match="chapter/title"> <fo:block id="{generate-id(.)}"> <xsl:number level="multiple" count="chapter" format="1. "/> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="ref"> <xsl:text>page </xsl:text> <fo:page-number-citation refid="{generate-id(id(@refid)/title)}"/> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:root> <fo:layout-master-set> <fo:simple-page-master master-name="page" page-height="297mm" page-width="210mm" margin-top="20mm" margin-bottom="10mm" margin-left="25mm" margin-right="25mm"> <fo:region-body margin-top="0mm" margin-bottom="15mm" margin-left="0mm" margin-right="0mm"/> <fo:region-after extent="10mm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page"> <fo:static-content flow-name="xsl-region-after"> <fo:block>Page <fo:page-number/> </fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body"> <fo:block id="N5">1. Chapter</fo:block> <fo:block>Text</fo:block> <fo:block id="N13">2. Chapter</fo:block> <fo:block>For a description of X see page <fo:page-number-citation refid="N5"/> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> Input sample: <doc> <chapter><title>Chapter</title> <p>Text</p> <section><title>Section</title> <p>Text</p> </section> <section><title>Section</title> <p>Text</p> </section> </chapter> <chapter><title>Chapter</title> <p>Text</p> <section><title>Section</title> <p>Text</p> </section> <section><title>Section</title> <p>Text</p> </section> </chapter> </doc> In this example the table of contents is formatted with a dot leader between the heading text and the page number. XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="doc"> <!-- create the table of contents --> <xsl:apply-templates select="chapter/title" mode="toc"/> <!-- do the document --> <xsl:apply-templates/> </xsl:template>
<xsl:template match="chapter/title" mode="toc"> <fo:block text-align-last="justify"> <fo:basic-link internal-destination="{generate-id(.)}"> <xsl:number level="multiple" count="chapter" format="1. "/> <xsl:apply-templates/> </fo:basic-link> <xsl:text> </xsl:text> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"/> <xsl:text> </xsl:text> <fo:page-number-citation ref-id="{generate-id(.)}"/> </fo:block> <xsl:apply-templates select="../section/title" mode="toc"/> </xsl:template>
<xsl:template match="section/title" mode="toc"> <fo:block start-indent="10mm" text-align-last="justify"> <fo:basic-link internal-destination="{generate-id(.)}"> <xsl:number level="multiple" count="chapter|section" format="1.1 "/> <xsl:apply-templates/> </fo:basic-link> <xsl:text> </xsl:text> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"/> <xsl:text> </xsl:text> <fo:page-number-citation ref-id="{generate-id(.)}"/> </fo:block> </xsl:template>
<xsl:template match="chapter/title"> <fo:block id="{generate-id(.)}"> <xsl:number level="multiple" count="chapter" format="1. "/> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="section/title"> <fo:block id="{generate-id(.)}"> <xsl:number level="multiple" count="chapter|section" format="1.1 "/> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:block text-align-last="justify"> <fo:basic-link internal-destination="N4">1. Chapter </fo:basic-link> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"> </fo:leader> <fo:page-number-citation ref-id="N4"> </fo:page-number-citation> </fo:block> <fo:block start-indent="10mm" text-align-last="justify"> <fo:basic-link internal-destination="N11">1.1 Section </fo:basic-link> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"> </fo:leader> <fo:page-number-citation ref-id="N11"> </fo:page-number-citation> </fo:block> <fo:block start-indent="10mm" text-align-last="justify"> <fo:basic-link internal-destination="N19">1.2 Section </fo:basic-link> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"> </fo:leader> <fo:page-number-citation ref-id="N19"> </fo:page-number-citation> </fo:block> <fo:block text-align-last="justify"> <fo:basic-link internal-destination="N28">2. Chapter </fo:basic-link> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"> </fo:leader> <fo:page-number-citation ref-id="N28"> </fo:page-number-citation> </fo:block> <fo:block start-indent="10mm" text-align-last="justify"> <fo:basic-link internal-destination="N35">2.1 Section </fo:basic-link> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"> </fo:leader> <fo:page-number-citation ref-id="N35"> </fo:page-number-citation> </fo:block> <fo:block start-indent="10mm" text-align-last="justify"> <fo:basic-link internal-destination="N43">2.2 Section </fo:basic-link> <fo:leader leader-length.minimum="12pt" leader-length.optimum="40pt" leader-length.maximum="100%" leader-pattern="dots"> </fo:leader> <fo:page-number-citation ref-id="N43"> </fo:page-number-citation> </fo:block>
<fo:block id="N4">1. Chapter </fo:block>
<fo:block>Text </fo:block>
<fo:block id="N11">1.1 Section </fo:block>
<fo:block>Text </fo:block>
<fo:block id="N19">1.2 Section </fo:block>
<fo:block>Text </fo:block>
<fo:block id="N28">2. Chapter </fo:block>
<fo:block>Text </fo:block>
<fo:block id="N35">2.1 Section </fo:block>
<fo:block>Text </fo:block>
<fo:block id="N43">2.2 Section </fo:block>
<fo:block>Text </fo:block> Common Usage: The fo:bidi-override Areas: The fo:bidi-override normal inline-area fo:bidi-override normal page-level-out-of-line reference-level-out-of-line fo:bidi-override Trait Derivation: The direction writing-mode direction unicode-bidi 5.5.3 Writing-mode and Direction Properties Constraints: No area may have more than one normal child area returned by the same fo:bidi-override The children of each normal area returned by an fo:bidi-override 4.7.3 Inline-building Contents: (#PCDATA| %inline; %block; In addition this formatting object may have a sequence of zero or more fo:marker An fo:bidi-override fo:leader fo:inline fo:footnote fo:inline-container The following properties apply to this formatting object: 7.7 Common Aural Properties 7.9 Common Font Properties 7.13 Common Relative Position Properties 7.19.1 color 7.32.1 direction 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.18.2 letter-spacing 7.17.4 line-height 7.33.15 score-spaces 7.32.6 unicode-bidi 7.18.8 word-spacing Common Usage: The fo:character character When the result tree is interpreted as a tree of formatting objects, a character fo:character character character Note: In a stylesheet the explicit creation of an fo:character Unicode Tag Characters need not be supported. Note: Unicode Version 3.1, in fact, states that they are not to be used "with any [UNICODE TR20] Areas: The fo:character normal inline-area Note: Cases where more than one inline-area character Constraints: The dimensions of the areas are determined by the font metrics for the glyph. When formatting an fo:character treat-as-word-space inline-progression-dimension Note: Such methods typically make use of a word space value stored in the font, or a formatter defined word space value. Contents: EMPTY The following properties apply to this formatting object: 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.10 Common Hyphenation Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.18.7 treat-as-word-space 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.18.1 character 7.19.1 color 7.15.8 dominant-baseline 7.32.5 text-depth 7.32.4 text-altitude 7.32.2 glyph-orientation-horizontal 7.32.3 glyph-orientation-vertical 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.18.2 letter-spacing 7.17.4 line-height 7.33.15 score-spaces 7.18.3 suppress-at-line-break 7.18.4 text-decoration 7.18.5 text-shadow 7.18.6 text-transform 7.33.17 visibility 7.18.8 word-spacing Common Usage: The fo:initial-property-set fo:block Note: It is analogous to the CSS first-line pseudo-element. In future versions of this Recommendation a property controlling the number of lines, or the "depth" that these initial properties apply to may be added. Areas: The fo:initial-property-set is-first fo:block fo:initial-property-set Trait Derivation: The traits on the fo:initial-property-set fo:block fo:inline fo:block Constraints: None. Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.13 Common Relative Position Properties 7.19.1 color 7.18.2 letter-spacing 7.17.4 line-height 7.33.15 score-spaces 7.18.4 text-decoration 7.18.5 text-shadow 7.18.6 text-transform 7.18.8 word-spacing Common Usage: The fo:external-graphic Areas: The fo:external-graphic large-allocation-rectangle 4.2.3 Geometric Definitions Note: An fo:external-graphic fo:block A " line-stacking-strategy max-height line-height fo:external-graphic Constraints: The viewport's size is determined by the block-progression-dimension inline-progression-dimension The content size of a graphic is determined by taking the intrinsic size of the graphic and scaling content-height content-width scaling allowed-height-scale allowed-width-scale content-height content-width Once scaled, the reference-area is aligned with respect to the viewport-area using the text-align display-align overflow In the case when the graphics format Note: For example, a size of 1/96" as the size of one pixel for rasterized images may be used. Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.16.1 allowed-height-scale 7.16.2 allowed-width-scale 7.15.4 baseline-shift 7.16.3 block-progression-dimension 7.22.1 clip 7.16.4 content-height 7.33.7 content-type 7.16.5 content-width 7.15.5 display-align 7.15.8 dominant-baseline 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.4 line-height 7.22.2 overflow 7.16.12 scaling 7.16.13 scaling-method 7.33.16 src 7.17.8 text-align 7.16.14 width Common Usage: The fo:instream-foreign-object fo:instream-foreign-object Note: A common format Areas: The fo:instream-foreign-object large-allocation-rectangle 4.2.3 Geometric Definitions Constraints: The viewport's size is determined by the block-progression-dimension inline-progression-dimension The content size of an instream-foreign-object is determined by taking the intrinsic size of the object and scaling content-height content-width scaling allowed-height-scale allowed-width-scale content-height content-width Once scaled, the reference-area is aligned with respect to the viewport-area using the text-align display-align overflow In the case when the instream-foreign-object does not specify an intrinsic size of the object, the size is determined in an implementation defined manner. Contents: The fo:instream-foreign-object The fo:instream-foreign-object The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.16.1 allowed-height-scale 7.16.2 allowed-width-scale 7.15.4 baseline-shift 7.16.3 block-progression-dimension 7.22.1 clip 7.16.4 content-height 7.33.7 content-type 7.16.5 content-width 7.15.5 display-align 7.15.8 dominant-baseline 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.4 line-height 7.22.2 overflow 7.16.12 scaling 7.16.13 scaling-method 7.17.8 text-align 7.16.14 width Common Usage: The fo:inline background Areas: The fo:inline normal inline-area fo:inline normal page-level-out-of-line reference-level-out-of-line fo:inline Constraints: No area may have more than one normal child area returned by the same fo:inline The children of each normal area returned by an fo:inline 4.7.3 Inline-building In addition the constraints imposed by the traits derived from the properties applicable to this formatting object must be satisfied. The geometric constraints are rigorously defined in 4 Area Model Contents: (#PCDATA| %inline; %block; In addition this formatting object may have a sequence of zero or more fo:marker An fo:inline fo:footnote fo:inline fo:leader fo:inline fo:footnote fo:inline-container The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.16.3 block-progression-dimension 7.19.1 color 7.15.8 dominant-baseline 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.4 line-height 7.18.4 text-decoration 7.33.17 visibility 7.16.14 width 7.17.13 wrap-option 7.31.3 border-collapse Common Usage: The fo:inline-container Note: The use of this flow object is not required for bi-directional text; in this case the Unicode BIDI algorithm and the fo:bidi-override Areas: The fo:inline-container block-progression-dimension inline-progression-dimension fo:inline-container fo:inline-container fo:inline-container Note: In the case that the block-progression-dimension.maximum is other than "auto", then overflow overflow If the absolute-position Trait Derivation: The reference-orientation writing-mode fo:inline-container reference-orientation inline-progression-dimension fo:inline-container block-progression-dimension overflow Note: As a property value applies to each of the areas generated by this flow object the size can vary from instance to instance if the value is "auto" or a <length-range>. The values in the baseline-table of this object are calculated as follows: baseline If the writing mode has a block-progression-direction that is parallel to the block-progression-direction of the parent: the alignment-point is at the position of the dominant-baseline If the writing mode has a block-progression-direction that is not parallel to the block-progression-direction of the parent: the alignment-point is at the position that is half way between the before-edge and after-edge of the content rectangle. before-edge The alignment-point is at the position of the before-edge of the allocation rectangle. text-before-edge The alignment-point is at the position that is the closest to the before-edge of the allocation rectangle selected from the two candidate edges. If the writing mode has a block-progression-direction that is parallel to the block-progression-direction of the parent the candidate edges are the before-edge and the after-edge of the content rectangle; if it is not, the candidate edges are the start-edge and the end-edge of the content rectangle. middle The alignment-point is at the position that is half way between the before-edge and after-edge of the allocation rectangle. after-edge The alignment-point is at the position of the after-edge of the allocation rectangle. text-after-edge The alignment-point is at the position that is the closest to the after-edge of the allocation rectangle selected from the two candidate edges. If the writing mode has a block-progression-direction that is parallel to the block-progression-direction of the parent the candidate edges are the before-edge and the after-edge of the content rectangle; if it is not, the candidate edges are the start-edge and the end-edge of the content rectangle. ideographic The alignment-point is at the position that is 7/10 of the distance from the before-edge of the allocation rectangle to the after-edge of the allocation rectangle. alphabetic The alignment-point is at the position that is 6/10 of the distance from the before-edge of the allocation rectangle to the after-edge of the allocation rectangle. hanging The alignment-point is at the position that is 2/10 of the distance from the before-edge of the allocation rectangle to the after-edge of the allocation rectangle. mathematical The alignment-point is at the position that is 5/10 of the distance from the before-edge of the allocation rectangle to the after-edge of the allocation rectangle. Constraints: No area may have more than one normal child area returned by the same fo:inline-container The children of each reference-area generated by an fo:inline-container block-area fo:inline-container properly stacked properly ordered Any reference-level-out-of-line fo:inline-container 6.12.2 fo:float Contents: ( %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.16.3 block-progression-dimension 7.22.1 clip 7.15.5 display-align 7.15.8 dominant-baseline 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.4 line-height 7.22.2 overflow 7.22.3 reference-orientation 7.16.14 width 7.32.7 writing-mode Common Usage: The fo:leader in table-of-contents to generate sequences of "." glyphs that separate titles from page numbers to create entry fields in fill-in-the-blank forms to create horizontal rules for use as separators Areas: The fo:leader inline-area Trait Derivation: If the value of the leader-pattern block-progression-dimension rule-thickness Constraints: If the leader's minimum length is too long to place in the line-area, the leader will begin a new line. If it is too long to be placed in a line by itself, it will overflow overflow overflow The fo:leader fo:leader leader-pattern Note: If the value of the leader-pattern fo:leader The inline-area generated by the fo:leader leader-length.minimum leader-length.maximum For lines-areas that have been specified to be justified, the justified line-area must honor the leader-alignment fo:leader If the value of the leader-pattern The inline-area generated by the fo:leader fo:leader leader-pattern width space-start space-end leader-pattern-width leader-alignment Note: If it is desired that the leader should stretch to fill all available space on a line, the maximum length of the leader should be specified to be at least as large as the column width. Note: The alignment of the leader may be script Note: An fo:leader fo:block Contents: (#PCDATA| %inline; The content must not contain an fo:leader fo:inline-container fo:block-container fo:float fo:footnote fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.19.1 color 7.15.8 dominant-baseline 7.32.5 text-depth 7.32.4 text-altitude 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.23.1 leader-alignment 7.23.4 leader-length 7.23.2 leader-pattern 7.23.3 leader-pattern-width 7.23.5 rule-style 7.23.6 rule-thickness 7.18.2 letter-spacing 7.17.4 line-height 7.18.5 text-shadow 7.33.17 visibility 7.18.8 word-spacing Common Usage: The fo:page-number Areas: The fo:page-number inline-area Constraints: The content of the inline-area depends on the reference-page reference-page-sequence fo:page-number reference-page reference-page-sequence fo:page-sequence fo:page-number The child areas of this inline-area are the same as the result of formatting a result-tree fragment consisting of the content of any fo:folio-prefix reference-page-sequence fo:character character character fo:folio-suffix reference-page-sequence The folio-number string is obtained by converting the folio-number for the reference-page reference-page-sequence Note: The conversion properties are: 7.29.1 format 7.29.2 grouping-separator 7.29.3 grouping-size 7.29.4 letter-value 7.10.1 country 7.10.6 language Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.15.8 dominant-baseline 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.18.2 letter-spacing 7.17.4 line-height 7.33.15 score-spaces 7.32.4 text-altitude 7.18.4 text-decoration 7.32.5 text-depth 7.18.5 text-shadow 7.18.6 text-transform 7.33.17 visibility 7.18.8 word-spacing 7.17.13 wrap-option Common Usage: The fo:page-number-citation normal Note: It may be used to provide the page-numbers in the table of contents, cross-references, and index entries. Areas: The fo:page-number-citation inline-area Constraints: The cited page id ref-id fo:page-number-citation The child areas of the generated inline-area are the same as the result of formatting the result-tree fragment, defined in 6.6.10 fo:page-number cited page reference-page fo:page-sequence cited-page reference-page-sequence Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.15.8 dominant-baseline 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.18.2 letter-spacing 7.17.4 line-height 7.33.13 ref-id 7.33.15 score-spaces 7.32.4 text-altitude 7.18.4 text-decoration 7.32.5 text-depth 7.18.5 text-shadow 7.18.6 text-transform 7.33.17 visibility 7.18.8 word-spacing 7.17.13 wrap-option Common Usage: The fo:page-number-citation-last Note: It may be used to provide the page-numbers in the table of contents, cross-references, and, when combined with fo:page-number-citation Areas: The fo:page-number-citation-last inline-area Constraints: The cited page page-citation-strategy fo:page-number-citation-last The child areas of the generated inline-area are the same as the result of formatting the result-tree fragment, defined in 6.6.10 fo:page-number cited page reference-page fo:page-sequence cited-page reference-page-sequence Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.15.8 dominant-baseline 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.18.2 letter-spacing 7.17.4 line-height 7.33.10 page-citation-strategy 7.33.13 ref-id 7.33.15 score-spaces 7.32.4 text-altitude 7.18.4 text-decoration 7.32.5 text-depth 7.18.5 text-shadow 7.18.6 text-transform 7.33.17 visibility 7.18.8 word-spacing 7.17.13 wrap-option Common Usage: The fo:folio-prefix Areas: The fo:folio-prefix Constraints: None. Contents: (#PCDATA| %inline; An fo:folio-prefix fo:page-number fo:page-number-citation fo:page-number-citation-last Common Usage: The fo:folio-suffix Areas: The fo:folio-suffix Constraints: None. Contents: (#PCDATA| %inline; An fo:folio-suffix fo:page-number fo:page-number-citation fo:page-number-citation-last Common Usage: The fo:scaling-value-citation fo:external-graphic Note: It may be used to provide the scale used in applications where a graphic is normally shown at true size, but is scaled down if it does not fit. Areas: The fo:scaling-value-citation inline-area Constraints: The cited fo:external-graphic fo:external-graphic id ref-id fo:scaling-value-citation The applied scale-factor fo:external-graphic intrinsic-scale-value scale-option width height Note: In the case when the graphics format The applied scale-factor string Note: The conversion properties are: 7.29.1 format 7.29.2 grouping-separator 7.29.3 grouping-size 7.29.4 letter-value 7.10.1 country 7.10.6 language The child areas of the generated inline-area are the same as the result of formatting a result-tree fragment consisting of fo:character character character Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.10.1 country 7.15.8 dominant-baseline 7.29.1 format 7.29.2 grouping-separator 7.29.3 grouping-size 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.10.6 language 7.18.2 letter-spacing 7.29.4 letter-value 7.17.4 line-height 7.33.9 intrinsic-scale-value 7.33.13 ref-id 7.33.15 score-spaces 7.33.14 scale-option 7.32.4 text-altitude 7.18.4 text-decoration 7.32.5 text-depth 7.18.5 text-shadow 7.18.6 text-transform 7.33.17 visibility 7.18.8 word-spacing 7.17.13 wrap-option Common usage: The fo:ruby Areas: The fo:ruby formatting object generates one or more normal inline-area areas. The fo:ruby returns these areas, together with any page-level-out-of-line areas, and reference-level-out-of-line areas returned by the children of the fo:ruby. Constraints: No area may have more than one normal child area returned by the same fo:ruby formatting object. The children of each normal area returned by an fo:ruby must satisfy the constraints specified in 4.7.3 Inline-building In addition the constraints imposed by the traits derived from the properties applicable to this formatting object must be satisfied. The geometric constraints are rigorously defined in 4 Area Model. Contents: ((fo:ruby-base, (fo:ruby-text | (fo:ruby-parenthesis, fo:ruby-text, fo:ruby-parenthesis)) | (fo:ruby-base-container, fo:ruby-text-container, fo:ruby-text-container?)) In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.9 Common Font Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.16.3 block-progression-dimension 7.19.1 color 7.15.8 dominant-baseline 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.4 line-height 7.18.4 text-decoration 7.33.17 visibility 7.16.14 width 7.17.13 wrap-option 7.27.5 ruby-align 7.27.6 ruby-overhang 7.27.1 ruby-position 7.27.10 ruby-proportion 7.27.11 ruby-mode Common Usage: The fo:ruby-base formatting object is used to contain a string of text that has ruby annotations. Areas: The fo:ruby-base formatting object generates and returns one or more normal inline-area Constraints: No area may have more than one normal child area returned by the same fo:ruby-base formatting object. The children of the normal area returned by an fo:ruby-base must satisfy the constraints specified in 4.7.3 Inline-building Contents: (#PCDATA|%inline;)* The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.9 Common Font Properties 7.13 Common Relative Position Properties 7.19.1 color 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.18.2 letter-spacing 7.17.4 line-height 7.33.15 score-spaces 7.18.8 word-spacing Common Usage: The fo:ruby-text formatting object is used to contain a string of text that is a ruby annotation. Areas: The fo:ruby-text formatting object generates one normal annotation-area. The fo:ruby-text returns this area. Constraints: No area may have more than one normal child area returned by the same fo:ruby-text formatting object. The children of each normal area returned by an fo:ruby-text must satisfy the constraints specified in 4.7.3 Inline-building In addition the constraints imposed by the traits derived from the properties applicable to this formatting object must be satisfied. The geometric constraints are rigorously defined in 4 Area Model Contents: #PCDATA The following properties apply to this formatting object: 7.9 Common Font Properties 7.19.1 color 7.18.2 letter-spacing 7.33.15 score-spaces 7.18.4 text-decoration 7.18.5 text-shadow 7.18.6 text-transform 7.18.8 word-spacing 7.27.9 ruby-size 7.27.10 ruby-proportion Common Usage: The fo:ruby-parenthesis formatting object is used to contain a string of text that is used to denote the beginning or end of ruby text when user agents do not have other ways to present ruby text distinctively from the base text. Parentheses (or similar characters) can provide an acceptable fallback. In this situation, ruby text will only degrade to be rendered inline and enclosed in the fallback parentheses. This is the least inappropriate rendering under the condition that only inline rendering is available. The fo:ruby-parenthesis formatting object cannot be used with complex ruby formatting objects. Areas: When generating annotation areas for ruby is not possible, the fo:ruby-parenthesis formatting object generates one or more normal inline-areas. The fo:ruby-parenthesis Constraints: No area may have more than one normal child area returned by the same fo:ruby-parenthesis The children of each normal area returned by an fo:ruby-parenthesis 4.7.2 Line-building In addition the constraints imposed by the traits derived from the properties applicable to this formatting object must be satisfied. The geometric constraints are rigorously defined in 4 Area Model Contents: (#PCDATA) The following properties apply to this formatting object: 7.9 Common Font Properties 7.19.1 color 7.18.2 letter-spacing 7.33.15 score-spaces 7.18.4 text-decoration 7.18.5 text-shadow 7.18.6 text-transform 7.18.8 word-spacing 7.27.9 ruby-size 7.27.10 ruby-proportion Common Usage: The fo:ruby-base formatting object is used to contain one or more strings of text that have ruby annotations. Areas: The fo:ruby-base-container formatting object does not generate any areas. The fo:ruby-base-container formatting object returns the sequence of areas created by concatenating the sequences of areas returned by each of the children of the fo:ruby-base-container. Constraints: No area may have more than one normal child area returned by the same fo:ruby-base-container formatting object. The children of each normal area returned by an fo:ruby must satisfy the constraints specified in 4.7.2 Line-building Contents: (fo:ruby-base)+ Common Usage: The fo:ruby-text-container formatting object is used to contain one or more strings of text that are ruby annotations. Areas: The fo:ruby-text-container formatting object does not generate any areas. The fo:ruby-text-container formatting object returns the sequence of areas created by concatenating the sequences of areas returned by each of the children of the fo:ruby-text-container. Constraints: No area may have more than one normal child area returned by the same fo:ruby-text formatting object. The children of each normal area returned by an fo:ruby-text must satisfy the constraints specified in 4.7.2 Line-building In addition the constraints imposed by the traits derived from the properties applicable to this formatting object must be satisfied. The geometric constraints are rigorously defined in 4 Area Model. Contents: (fo:ruby-text)+ The following properties apply to this formatting object: 7.9 Common Font Properties 7.19.1 color 7.18.2 letter-spacing 7.33.15 score-spaces 7.18.4 text-decoration 7.18.5 text-shadow 7.18.6 text-transform 7.18.8 word-spacing 7.27.6 ruby-overhang 7.27.1 ruby-position In Microsoft Excel or spreadsheet, the alignment of text in a cell is usually done based on the data's type, e.g. alphabetic text is usually aligned to the left, numbers are usually aligned to the right, and Boolean values are usually aligned to the center. Do we also need to extend the text-align property to allow automatic alignment? Should decimal alignment could be a special case for number alignment?
Text in the cells with a single table may be numbers and strings with mixed fonts and properties. Do we also need to provide a guide of the fallback mechanism if the alignment point cannot be determined?
Consider a long table that has tens of thousands of rows. Aligning a column with decimal alignment will have huge impact on the performance on the rendering of the table, since the formatter must know the position of the decimal point in the cell in every row of the column before it can start to calculate the appropriate alignment for all the cells.
Also, inspired by the OASIS table model, should we add a new property only available for either table-cell or table-column called text-align-charoff. This property would be used if and only if text-align is given a single-character string as its value. The value for the text-align-charoff property would be the same as the OASIS table model, i.e. specifying a percentage of current column width between the start-edge (as determined based on the writing-mode) and the point at where the character is aligned. For example, the default value "50" would specify that the character is aligned at the center of the column. Text alignment is ordinarily the same for all cells in a column, so the natural choice is to specify the text-align fo:table-column fo:table-cell fo:table-cell text-align The only accepted value for fo:table-column There are nine formatting objects used to construct tables: fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell Figure 52. To specify different instances of what the table header or footer should be like depending on the different boundaries (page, column and region). This also allows specifying that certain headers must be omitted at certain boundaries. In a similar way to selecting page masters, formatting objects for selecting alternative headers and footers for tables are: fo:table-header-alternatives fo:table-footer-alternatives fo:conditional-table-header-reference fo:conditional-table-footer-reference fo:table-header-alternatives fo:table-header fo:table-footer-alternatives fo:table-footer fo:conditional-table-header-reference fo:table-header-alternatives header-position fo:conditional-table-footer-reference fo:table-footer-alternatives footer-position The valid values for both " header-position footer-position fo:conditional-table-footer-reference header-position footer-position Sample XSL FO snippet: <fo:table> <fo:table-header> <fo:table-header-alternatives> <fo:conditional-table-header-reference> ... </fo:conditional-table-header-reference> <fo:conditional-table-header-reference header-position="page"> ... </fo:conditional-table-header-reference> <fo:conditional-table-header-reference header-position="column"> ... </fo:conditional-table-header-reference> ... </fo:table-header-alternatives> </fo:table-header> <fo:table-footer> <fo:table-footer-alternatives> </fo:table-footer-alternatives> </fo:table-footer> <fo:table-body> ... </fo:table-body> </fo:table> fo:conditional-table-layout-reference
It's relatively cumbersome to use different formatting objects that distinguish alternative headers from alternative footers, so a single object could be introduced to represent the concept e.g. a fo:table-layout-alternatives. Its parent object would determine whether this object represents a header or a footer. The reference object would correspondingly be named fo:conditional-table-layout-reference. Allows users to specify that tables can be split horizontally. It is possible to have a column repeated when the table is split horizontally, by specifying a row header. There should be a way to keep the split parts visually next to each other depending on binding edge. In case a table is split over multiple pages and both the rows and columns don’t fit a page, this allow users to specify which table part comes out in which order (rows first or columns first). When printing from spreadsheet applications, printing a table that overflows a single page as series of pages, usually with repeated header rows and columns, is common. Within XSL-FO, overflow behavior is normally specified with the "overflow" property, but the current "overflow" property has similar semantics to CSS and does not sufficiently handle overflow on tables. This overflow behaviour is specified by the table-overflow fo:table Should other values of "overflow" property be allowed for the "table-overflow" property, e.g. "visible", "hidden", "scroll", and "error-if-overflow"? Normally, we would expect the row header and the column header to be repeated during the pagination, but do we need to add another property to allow the user to override the default behavior or to suppress the behavior? Maybe table-omit-header-at-break and table-omit-footer-at-break apply to the alternatives and/or conditional references. In paged media, a table cell may be split, either vertically or horizontally or both, because another table cell in the same row or column overflows its available area. Additionally, a table cell that spans multiple rows or columns may be split because the rows or columns that it spans are paginated on separate pages. The overflow fo:table-cell fo:table-cell When the value is "repeat", the content of the fo:table-cell column lines may extend down or to the right of the table to visually indicate that the table continues. When this happens, any vertical border should be extended beyond the bottom border for the last row or right column on the page. This applies to pagination of tables split vertically, horizontally or both vertically and horizontally. For this purpose XSL-FO defines the following properties: border-break border-before-break border-after-break border-start-break border-end-break Their allowed values are: auto, hidden and extend. When the value is extend, the respective border is extended till the end of the area. When the border-collapse border-break Figure 53. Do we need to set the "border-break" style at the fo:table-row level and fo:table-column level, or at table-cell level as proposed here? When the "border-collapse" property is set to be "collapse", which value of the "border-break" value takes higher priority? "extend"? Adjacent borders. The border-collapse fo:table-cell fo:block fo:inline Border breaks Properties border-break-style border-start-break-style border-end-break-style border-before-break-style border-after-break-style border-style CSS border conflict The current specification of XSL-FO restricts number-rows-spanned number-columns-spanned number-rows-spanned number-columns-spanned http://www.w3.org/TR/html4/struct/tables.html#adef-colspan extends the multi-column facility of XSL-FO 2.1 by adding the ability to have columns of different widths, different colours, etc. and by allowing any fo:block-container to have columns. Column spanning. Requirement: See the XSL-FO 2.0 Requirements Document, section 2.2.11.2 Add support for spanning over less than the total number of columns. Spanning columns in nested formatting objects Allow the span property to have effect when specified on formatting objects that are not direct children of an fo:flow. Strong vs. weak spanning Give control over how the text flows when spanning columns over the entire page. In the following images, the numbers note the reading order of the specific location within the page. Figure 54. Multiple columns of different widths Allow specifying multiple columns of different widths. Multi-column layout in all regions and block-containers
Allow specifying multiple columns in all regions and also in block-containers, not just the region-body. Input sample: <doc> <table> <caption><p>Caption for this table</p></caption> <tgroup cols="3" width="325pt"> <colspec colwidth="100pt"/> <colspec colwidth="150pt"/> <colspec colwidth="75pt"/> <tbody> <row> <entry><p>Cell 1</p></entry> <entry><p>Cell 2</p></entry> <entry><p>Cell 3</p></entry> </row> </tbody> </tgroup> </table> </doc> The table and its caption is centered in the available space between the following indents: start-indent end-indent XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:attribute-set name="inside-table"> <xsl:attribute name="start-indent">0pt</xsl:attribute> <xsl:attribute name="text-align">start</xsl:attribute> </xsl:attribute-set>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="table"> <fo:table-and-caption text-align="center" start-indent="100pt"> <xsl:apply-templates/> </fo:table-and-caption> </xsl:template>
<xsl:template match="caption"> <fo:table-caption xsl:use-attribute-sets="inside-table"> <xsl:apply-templates/> </fo:table-caption> </xsl:template>
<xsl:template match="tgroup"> <fo:table width="{@width}" table-layout="fixed"> <xsl:apply-templates/> </fo:table> </xsl:template>
<xsl:template match="colspec"> <fo:table-column column-width="{@colwidth}"> <xsl:attribute name="column-number"> <xsl:number count="colspec"/> </xsl:attribute> </fo:table-column> </xsl:template>
<xsl:template match="tbody"> <fo:table-body xsl:use-attribute-sets="inside-table"> <xsl:apply-templates/> </fo:table-body> </xsl:template>
<xsl:template match="row"> <fo:table-row> <xsl:apply-templates/> </fo:table-row> </xsl:template>
<xsl:template match="entry"> <fo:table-cell> <xsl:apply-templates/> </fo:table-cell> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:table-and-caption text-align="center" start-indent="100pt">
<fo:table-caption start-indent="0pt" text-align="start"> <fo:block>Caption for this table </fo:block> </fo:table-caption>
<fo:table width="325pt" table-layout="fixed">
<fo:table-column column-width="100pt" column-number="1"> </fo:table-column> <fo:table-column column-width="150pt" column-number="2"> </fo:table-column> <fo:table-column column-width="75pt" column-number="3"> </fo:table-column>
<fo:table-body start-indent="0pt" text-align="start">
<fo:table-row>
<fo:table-cell> <fo:block>Cell 1 </fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Cell 2 </fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Cell 3 </fo:block> </fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:table-and-caption> This example is using a simple, "Oasis-table-model-like", markup for the table elements. The column-widths are specified using full relative column-width Input sample: <doc> <table> <tgroup cols="3"> <colspec colname="col1" colwidth="1*"/> <colspec colname="col2" colwidth="2*+2pi"/> <colspec colname="col3" colwidth="72"/> <tbody> <row> <entry colnum="1" valign="top"><p>Cell 1</p></entry> <entry colnum="2" valign="middle" align="center"><p>Cell 2</p></entry> <entry colnum="3" align="center"><p>Cell 3</p></entry> </row> </tbody> </tgroup> </table> </doc> XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="table"> <fo:table width="12cm" table-layout="fixed"> <xsl:apply-templates/> </fo:table> </xsl:template>
<xsl:template match="colspec"> <fo:table-column> <xsl:attribute name="column-number"> <xsl:number count="colspec"/> </xsl:attribute> <xsl:attribute name="column-width"> <xsl:call-template name="calc.column.width"> <xsl:with-param name="colwidth"> <xsl:value-of select="@colwidth"/> </xsl:with-param> </xsl:call-template> </xsl:attribute> </fo:table-column> </xsl:template>
<xsl:template match="tbody"> <fo:table-body> <xsl:apply-templates/> </fo:table-body> </xsl:template>
<xsl:template match="row"> <fo:table-row> <xsl:apply-templates/> </fo:table-row> </xsl:template>
<xsl:template match="entry"> <fo:table-cell column-number="{@colnum}"> <xsl:if test="@valign"> <xsl:choose> <xsl:when test="@valign='middle'"> <xsl:attribute name="display-align">center</xsl:attribute> </xsl:when> <xsl:when test="@valign='top'"> <xsl:attribute name="display-align">before</xsl:attribute> </xsl:when> <xsl:when test="@valign='bottom'"> <xsl:attribute name="display-align">after</xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="display-align">before</xsl:attribute> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:if test="@align"> <xsl:attribute name="text-align"> <xsl:value-of select="@align"/> </xsl:attribute> </xsl:if> <xsl:apply-templates/> </fo:table-cell> </xsl:template>
<xsl:template name="calc.column.width"> <!-- ** * <p>Calculate an XSL FO table column-width specification from a * full relative table column-width specification.</p> * * <p>Table column-widths are in the following basic * forms:</p> * * <ul> * <li><b>99.99units</b>, a fixed length-specifier.</li> * <li><b>99.99</b>, a fixed length-specifier without any units.</li> * <li><b>99.99*</b>, a relative length-specifier.</li> * <li><b>99.99*+99.99units</b>, a combination of both.</li> * </ul> * * <p>The units are points (pt), picas (pi), centimeters (cm), * millimeters (mm), and inches (in). These are the same units as XSL, * except that XSL abbreviates picas "pc" instead of "pi". If a length * specifier has no units, the default unit (pt) is assumed.</p> * * <p>Relative length-specifiers are represented in XSL with the * proportional-column-width() function.</p> * * <p>Here are some examples:</p> * * <ul> * <li>"36pt" becomes "36pt"</li> * <li>"3pi" becomes "3pc"</li> * <li>"36" becomes "36pt"</li> * <li>"3*" becomes "proportional-column-width(3)"</li> * <li>"3*+2pi" becomes "proportional-column-width(3)+2pc"</li> * <li>"1*+2" becomes "proportional-column-width(1)+2pt"</li> * </ul> * * @param colwidth The column width specification. * * @returns The XSL column width specification. * --> <xsl:param name="colwidth">1*</xsl:param>
<!-- Ok, the colwidth could have any one of the following forms: --> <!-- 1* = proportional width --> <!-- 1unit = 1.0 units wide --> <!-- 1 = 1pt wide --> <!-- 1*+1unit = proportional width + some fixed width --> <!-- 1*+1 = proportional width + some fixed width -->
<!-- If it has a proportional width, translate it to XSL --> <xsl:if test="contains($colwidth, '*')"> <xsl:text>proportional-column-width(</xsl:text> <xsl:value-of select="substring-before($colwidth, '*')"/> <xsl:text>)</xsl:text> </xsl:if>
<!-- Now get the non-proportional part of the specification --> <xsl:variable name="width-units"> <xsl:choose> <xsl:when test="contains($colwidth, '*')"> <xsl:value-of select="normalize-space(substring-after($colwidth, '*'))"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space($colwidth)"/> </xsl:otherwise> </xsl:choose> </xsl:variable>
<!-- Now the width-units could have any one of the following forms: --> <!-- = <empty string> --> <!-- 1unit = 1.0 units wide --> <!-- 1 = 1pt wide --> <!-- with an optional leading sign -->
<!-- Get the width part by blanking out the units part and discarding --> <!-- white space. --> <xsl:variable name="width" select="normalize-space(translate($width-units, '+-0123456789.abcdefghijklmnopqrstuvwxyz', '+-0123456789.'))"/>
<!-- Get the units part by blanking out the width part and discarding --> <!-- white space. --> <xsl:variable name="units" select="normalize-space(translate($width-units, 'abcdefghijklmnopqrstuvwxyz+-0123456789.', 'abcdefghijklmnopqrstuvwxyz'))"/>
<!-- Output the width --> <xsl:value-of select="$width"/>
<!-- Output the units, translated appropriately --> <xsl:choose> <xsl:when test="$units = 'pi'">pc</xsl:when> <xsl:when test="$units = '' and $width != ''">pt</xsl:when> <xsl:otherwise><xsl:value-of select="$units"/></xsl:otherwise> </xsl:choose> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:table width="12cm" table-layout="fixed"> <fo:table-column column-number="1" column-width="proportional-column-width(1)"> </fo:table-column> <fo:table-column column-number="2" column-width="proportional-column-width(2)+2pc"> </fo:table-column> <fo:table-column column-number="3" column-width="72pt"> </fo:table-column> <fo:table-body> <fo:table-row> <fo:table-cell column-number="1" display-align="before"> <fo:block>Cell 1 </fo:block> </fo:table-cell> <fo:table-cell column-number="2" display-align="center" text-align="center"> <fo:block>Cell 2 </fo:block> </fo:table-cell> <fo:table-cell column-number="3" text-align="center"> <fo:block>Cell 3 </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> Common Usage: The fo:table-and-caption Note: An fo:table-and-caption fo:inline-container Note: This formatting object corresponds to the CSS anonymous box that encloses the table caption and the table. Areas: The fo:table-and-caption normal block-area fo:table-and-caption page-level-out-of-line reference-level-out-of-line fo:table-and-caption Constraints: No area may have more than one normal child area returned by the same fo:table-and-caption The children of the areas generated by the fo:table-and-caption caption-side text-align Contents: ( table-caption table In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.13 Common Relative Position Properties 7.21.1 break-after 7.21.2 break-before 7.31.7 caption-side 7.20.1 clear 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.20.3 intrusion-displace 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.8 text-align Common Usage: The fo:table The fo:table The table content is divided into a header (optional), footer (optional), and one or more bodies. Properties specify if the headers and footers should be repeated at a break in the table. Each of these parts occupies one or more rows in the table grid. Areas: The fo:table normal block-area fo:table-header table-omit-header-at-break fo:table-body fo:table-footer table-omit-footer-at-break fo:table page-level-out-of-line reference-level-out-of-line fo:table The areas generated and returned by the fo:table Areas, with only background Note: The spanned columns ( fo:table-column number-columns-spanned Areas returned by the fo:table-cell These areas have a z-index http://www.w3.org/TR/2008/REC-CSS2-20080411/tables.html#table-layers" Note: A cell that is spanned may have a different background Trait Derivation: The column-progression-direction and row-progression-direction are determined by the writing-mode The method for deriving the border border-collapse If the value of the " border-collapse border width border-separation background fo:table border border If the value of the " border-collapse border Note: By specifying "collapse-with-precedence" and an appropriately high precedence border fo:table border Constraints: No area may have more than one normal child area returned by the same fo:table The content of the fo:table-header fo:table-footer table-omit-header-at-break table-omit-footer-at-break fo:table The inline-progression-dimension table-layout inline-progression-dimension inline-progression-dimension="auto" table-layout="auto" The automatic table layout shall be used. inline-progression-dimension="auto" table-layout="fixed" The automatic table layout shall be used. inline-progression-dimension=<length> or <percentage> table-layout="auto" The automatic table layout shall be used. inline-progression-dimension=<length> or <percentage> table-layout="fixed" The fixed table layout shall be used. The automatic table layout and fixed table layout is defined in 17.5.2 of the CSS2 specification ( http://www.w3.org/TR/2008/REC-CSS2-20080411/tables.html#width-layout" The method for determining the block-progression-dimension block-progression-dimension Note: The CSS2 specification explicitly does not specify what the behavior should be if there is a mismatch between an explicitly specified table block-progression-dimension Note: The use of the "proportional-column-width()" function is only permitted when the fixed table layout is used. If the use of proportional column widths are desired on a table of an unknown explicit width inline-progression-dimension width table-layout inline-progression-dimension Note: The result of using a percentage for the width It is an error if two or more table-cells overlap, for example because two or more table-cells attempt to span Table-cells must each be entirely contained both horizontally and vertically in a single table-body, table-header or table-footer. It is therefore an error if table-cells attempt to span table-layout number-rows-spanned number-columns-spanned Contents: ( table-column table-header table-footer table-body In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.13 Common Relative Position Properties 7.16.3 block-progression-dimension 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.3 border-collapse 7.31.4 border-end-precedence 7.31.5 border-separation 7.31.6 border-start-precedence 7.21.1 break-after 7.21.2 break-before 7.20.1 clear 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.20.3 intrusion-displace 7.16.6 height 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.31.16 table-layout 7.31.17 table-omit-footer-at-break 7.31.18 table-omit-header-at-break 7.16.14 width 7.32.7 writing-mode Common Usage: The fo:table-column column-width Areas: The fo:table-column background fo:table 6.7.3 fo:table fo:table-column Note: More details, in particular the use of an fo:table-column number-columns-spanned fo:table Constraints: None. Contents: EMPTY The following properties apply to this formatting object: 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.31.8 column-number 7.31.9 column-width 7.31.12 number-columns-repeated 7.31.13 number-columns-spanned 7.33.17 visibility Common Usage: The fo:table-caption fo:table-and-caption Areas: The fo:table-caption normal reference-area fo:table-caption page-level-out-of-line fo:table-caption Constraints: For the case when the value of the caption-side inline-progression-dimension inline-progression-dimension When the value is "start" or "end" the inline-progression-dimension inline-progression-dimension When the value is "top", " bottom left right 5.3 Computing the Values of Corresponding Properties If the caption is to be positioned before the table, the areas generated by the fo:table-caption fo:table-caption keep-with-next If the caption is to be positioned after the table, the areas generated by the fo:table-caption fo:table-caption keep-with-previous No area may have more than one normal child area returned by the same fo:table-caption The children of each normal area returned by an fo:table-caption block-area fo:table-caption properly stacked properly ordered Any reference-level-out-of-line fo:table-caption 6.12.2 fo:float Contents: ( %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.13 Common Relative Position Properties 7.16.3 block-progression-dimension 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.20.3 intrusion-displace 7.21.3 keep-together 7.16.14 width Common Usage: The fo:table-header Areas: The fo:table-header fo:table-header fo:table-header Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:table-header fo:table-header Contents: ( table-header-alternatives table-row table-cell The fo:table-header fo:table-row fo:table-cell starts-row ends-row In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.33.17 visibility Common Usage: The fo:table-footer Areas: The fo:table-footer fo:table-footer fo:table-footer Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:table-footer fo:table-footer Contents: ( table-row table-cell The fo:table-footer fo:table-row fo:table-cell starts-row ends-row In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.33.17 visibility Common Usage: The fo:table-body Areas: The fo:table-body fo:table-body fo:table-body Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:table-body fo:table-body Contents: ( table-row table-cell The fo:table-body fo:table-row fo:table-cell starts-row ends-row In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.33.17 visibility Common Usage: The fo:table-row Areas: The fo:table-row fo:table-row fo:table-row fo:table-row background fo:table 6.7.3 fo:table Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:table-row fo:table-row The method for determining the height row-height Contents: ( table-cell In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.16.3 block-progression-dimension 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.21.1 break-after 7.21.2 break-before 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.6 height 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.33.17 visibility Common Usage: The fo:table-cell The " starts-row ends-row Areas: The fo:table-cell normal reference-area fo:table-cell page-level-out-of-line fo:table-cell Trait Derivation: The method for deriving the border border-collapse If the value of the border-collapse border width border-separation background fo:table border border border If the value of the border-collapse border border border border precedence border border width If the value of the border-collapse border border border border border border border width border border Borders with the ' border-style precedence border Borders with a style of 'none' have the lowest priority. Only if the border border border If none of the styles is 'hidden' and at least one of them is not 'none', then narrow borders are discarded in favor of wider ones. If the remaining border border-width If border Constraints: A table-cell occupies one or more grid units in the row-progression-direction and column-progression-direction. The content-rectangle of the cell is the size of the portion of the grid the cell occupies minus, for each of the four sides: If the value of the border-collapse border-separation If the value of the border-collapse The cell padding. The method for determining the block-progression-dimension row-height No area may have more than one normal child area returned by the same fo:table-cell The children of each normal area returned by an fo:table-cell block-area fo:table-cell properly stacked properly ordered Any reference-level-out-of-line fo:table-cell 6.12.2 fo:float Contents: ( %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.16.3 block-progression-dimension 7.31.8 column-number 7.15.5 display-align 7.15.9 relative-align 7.31.10 empty-cells 7.31.11 ends-row 7.16.6 height 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.16.7 inline-progression-dimension 7.31.13 number-columns-spanned 7.31.14 number-rows-spanned 7.31.15 starts-row 7.16.14 width Common Usage: The fo:table-header-alternatives This formatting object allows a user to specify different instances of a table header depending on the different boundary conditions (page, column and region). This also allows certain headers to be omitted at certain boundaries. Areas: The fo:table-header-alternatives fo:table-header-alternatives fo:table-header-alternatives Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:table-header-alternatives fo:table-header-alternatives header-position Contents: ( conditional-table-header-reference Common Usage: The fo:table-footer-alternatives This formatting object allows a user to specify different instances of a table footer depending on the different boundary conditions (page, column and region). This also allows certain footers to be omitted at certain boundaries. Areas: The fo:table-footer-alternatives fo:table-footer-alternatives fo:table-footer-alternatives Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:table-footer-alternatives fo:table-footer-alternatives footer-position Contents: ( conditional-table-footer-reference Common Usage The fo:conditional-table-header-reference Areas: The fo:conditional-table-header-reference Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:conditional-table-header-reference fo:conditional-table-header-reference Contents: ( table-row table-cell The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.33.17 visibility 7.31.19 header-position Common Usage The fo:conditional-table-footer-reference Areas: The fo:conditional-table-footer-reference Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:conditional-table-footer-reference fo:conditional-table-footer-reference Contents: ( table-row table-cell The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties Note background background-attachment background-color background-image background-repeat background-position-horizontal background-position-vertical border-collapse border border-before-color border-before-style border-before-width border-after-color border-after-style border-after-width border-start-color border-start-style border-start-width border-end-color border-end-style border-end-width border-top-color border-top-style border-top-width border-bottom-color border-bottom-style border-bottom-width border-left-color border-left-style border-left-width border-right-color border-right-style border-right-width 7.13 Common Relative Position Properties 7.31.1 border-after-precedence 7.31.2 border-before-precedence 7.31.4 border-end-precedence 7.31.6 border-start-precedence 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.33.17 visibility 7.31.20 footer-position There are four formatting objects used to construct lists: fo:list-block fo:list-item fo:list-item-label fo:list-item-body Figure 55. The fo:list-block role The children of the fo:list-block fo:list-item fo:list-item-label fo:list-item-body The fo:list-item role The fo:list-item-label role fo:block character The fo:list-item-body role fo:block The placement, in the block-progression-direction, of the label with respect to the body is made in accordance with the " vertical-align fo:list-item The specification of the list geometry in the inline-progression-direction is achieved by: Specifying appropriate values of the " provisional-distance-between-starts provisional-label-separation provisional-distance-between-starts provisional-label-separation end-indent start-indent Specifying end-indent fo:list-item-label Specifying start-indent fo:list-item-body Note: These list specific functions are defined in 7.33.12 provisional-label-separation 7.33.11 provisional-distance-between-starts The start-indent end-indent The list-items are contained in an "ol" "item" The style is to enumerate the items alphabetically with a dot after the letter. Input sample: <ol> <item>List item 1.</item> <item>List item 2.</item> <item>List item 3.</item> </ol> XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="ol"> <fo:list-block provisional-distance-between-starts="15mm" provisional-label-separation="5mm"> <xsl:apply-templates/> </fo:list-block> </xsl:template>
<xsl:template match="ol/item"> <fo:list-item> <fo:list-item-label start-indent="5mm" end-indent="label-end()"> <fo:block> <xsl:number format="a."/> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block> <xsl:apply-templates/> </fo:block> </fo:list-item-body> </fo:list-item> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:list-block provisional-distance-between-starts="15mm" provisional-label-separation="5mm">
<fo:list-item> <fo:list-item-label start-indent="5mm" end-indent="label-end()"> <fo:block>a. </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>List item 1. </fo:block> </fo:list-item-body> </fo:list-item>
<fo:list-item> <fo:list-item-label start-indent="5mm" end-indent="label-end()"> <fo:block>b. </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>List item 2. </fo:block> </fo:list-item-body> </fo:list-item>
<fo:list-item> <fo:list-item-label start-indent="5mm" end-indent="label-end()"> <fo:block>c. </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>List item 3. </fo:block> </fo:list-item-body> </fo:list-item>
</fo:list-block> "dl" In this example the stylesheet processes HTML-style "dl" "dt" "dd" fo:list-block Balanced pairs of "dt" "dd" fo:list-item "dt" "dd" Multiple "dt" fo:list-item-label Multiple DDs are: Output as individual FO list-items with an empty list-item-label if the stylesheet variable $allow-naked-dd true Are grouped together into a single FO list-item-body if $allow-naked-dd false In other words, given a structure like this: <doc> <dl> <dt>term</dt> <dd>definition</dd> <dt>term</dt> <dt>term</dt> <dd>definition</dd> <dt>term</dt> <dd>definition</dd> <dd>definition</dd> </dl> </doc> If $allow-naked-dd true <fo:list-block provisional-distance-between-starts="35mm" provisional-label-separation="5mm"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>term </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>term </fo:block> <fo:block>term </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>term </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> If $allow-naked-dd false <fo:list-block provisional-distance-between-starts="35mm" provisional-label-separation="5mm"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>term </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>term </fo:block> <fo:block>term </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block>term </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block>definition </fo:block> <fo:block>definition </fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:include href="dtdd.xsl"/>
<xsl:template match="doc"> <xsl:apply-templates/> </xsl:template>
<xsl:template match="dl"> <xsl:call-template name="process.dl"/> </xsl:template>
<xsl:template match="dt|dd"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> Included stylesheet "dtdd.xsl" <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:variable name="allow-naked-dd" select="true()"/>
<xsl:template name="process.dl"> <fo:list-block provisional-distance-between-starts="35mm" provisional-label-separation="5mm"> <xsl:choose> <xsl:when test="$allow-naked-dd"> <xsl:call-template name="process.dl.content.with.naked.dd"/> </xsl:when> <xsl:otherwise> <xsl:call-template name="process.dl.content"/> </xsl:otherwise> </xsl:choose> </fo:list-block> </xsl:template>
<xsl:template name="process.dl.content.with.naked.dd"> <xsl:param name="dts" select="./force-list-to-be-empty"/> <xsl:param name="nodes" select="*"/>
<xsl:choose> <xsl:when test="count($nodes)=0"> <!-- Out of nodes, output any pending DTs --> <xsl:if test="count($dts)>0"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <xsl:apply-templates select="$dts"/> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"/> </fo:list-item> </xsl:if> </xsl:when>
<xsl:when test="name($nodes[1])='dd'"> <!-- We found a DD, output the DTs and the DD --> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <xsl:apply-templates select="$dts"/> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <xsl:apply-templates select="$nodes[1]"/> </fo:list-item-body> </fo:list-item> <xsl:call-template name="process.dl.content.with.naked.dd"> <xsl:with-param name="nodes" select="$nodes[position()>1]"/> </xsl:call-template> </xsl:when>
<xsl:when test="name($nodes[1])='dt'"> <!-- We found a DT, add it to the list of DTs and loop --> <xsl:call-template name="process.dl.content.with.naked.dd"> <xsl:with-param name="dts" select="$dts|$nodes[1]"/> <xsl:with-param name="nodes" select="$nodes[position()>1]"/> </xsl:call-template> </xsl:when>
<xsl:otherwise> <!-- This shouldn't happen --> <xsl:message> <xsl:text>DT/DD list contained something bogus (</xsl:text> <xsl:value-of select="name($nodes[1])"/> <xsl:text>).</xsl:text> </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template>
<xsl:template name="process.dl.content"> <xsl:param name="dts" select="./force-list-to-be-empty"/> <xsl:param name="dds" select="./force-list-to-be-empty"/> <xsl:param name="output-on"></xsl:param> <xsl:param name="nodes" select="*"/>
<!-- The algorithm here is to build up a list of DTs and DDs, --> <!-- outputing them only on the transition from DD back to DT -->
<xsl:choose> <xsl:when test="count($nodes)=0"> <!-- Out of nodes, output any pending elements --> <xsl:if test="count($dts)>0 or count($dds)>0"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <xsl:apply-templates select="$dts"/> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <xsl:apply-templates select="$dds"/> </fo:list-item-body> </fo:list-item> </xsl:if> </xsl:when>
<xsl:when test="name($nodes[1])=$output-on"> <!-- We're making the transition from DD back to DT --> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <xsl:apply-templates select="$dts"/> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <xsl:apply-templates select="$dds"/> </fo:list-item-body> </fo:list-item>
<!-- Reprocess this node (and the rest of the node list) --> <!-- resetting the output-on state to nil --> <xsl:call-template name="process.dl.content"> <xsl:with-param name="nodes" select="$nodes"/> </xsl:call-template> </xsl:when>
<xsl:when test="name($nodes[1])='dt'"> <!-- We found a DT, add it to the list and loop --> <xsl:call-template name="process.dl.content"> <xsl:with-param name="dts" select="$dts|$nodes[1]"/> <xsl:with-param name="dds" select="$dds"/> <xsl:with-param name="nodes" select="$nodes[position()>1]"/> </xsl:call-template> </xsl:when>
<xsl:when test="name($nodes[1])='dd'"> <!-- We found a DD, add it to the list and loop, noting that --> <!-- the next time we cross back to DT's, we need to output the --> <!-- current DT/DDs. --> <xsl:call-template name="process.dl.content"> <xsl:with-param name="dts" select="$dts"/> <xsl:with-param name="dds" select="$dds|$nodes[1]"/> <xsl:with-param name="output-on">dt</xsl:with-param> <xsl:with-param name="nodes" select="$nodes[position()>1]"/> </xsl:call-template> </xsl:when>
<xsl:otherwise> <!-- This shouldn't happen --> <xsl:message> <xsl:text>DT/DD list contained something bogus (</xsl:text> <xsl:value-of select="name($nodes[1])"/> <xsl:text>).</xsl:text> </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template>
</xsl:stylesheet> The "dtdd.xsl" stylesheet may be customized in the following ways: Set the value of $allow-naked-dd "dd" Change "dt" Change "dd" In the, perhaps unlikely, event that the documents may contain an element named "force-list-to-be-empty" In the stylesheet using the "dtdd.xsl" stylesheet change the "dl" Common Usage: The fo:list-block format Areas: The fo:list-block normal block-area fo:list-block page-level-out-of-line reference-level-out-of-line fo:list-block Constraints: No area may have more than one normal child area returned by the same fo:list-block The children of each normal area returned by an fo:list-block block-area fo:list-block properly stacked properly ordered Contents: ( list-item In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.13 Common Relative Position Properties 7.21.1 break-after 7.21.2 break-before 7.20.1 clear 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.20.3 intrusion-displace 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.33.11 provisional-distance-between-starts 7.33.12 provisional-label-separation Common Usage: The fo:list-item Areas: The fo:list-item normal block-area fo:list-item page-level-out-of-line reference-level-out-of-line fo:list-item Constraints: No area may have more than one normal child area returned by the same fo:list-item The children of each normal area returned by an fo:list-item block-area fo:list-item-label fo:list-item-body properly ordered fo:list-item-label properly stacked fo:list-item-body properly stacked The children of each normal area returned by an fo:list-item fo:list-item-label fo:list-item-body relative-align In the inline-progression-direction these areas are positioned in the usual manner for properly stacked areas. It is an error if the content-rectangles of the areas overlap. The block-progression-dimension fo:list-item space-before space-after fo:list-item Note: These areas are not reference-areas, hence the indents on all objects within them are measured relative to the reference-area that holds the content of the fo:list-block Contents: ( list-item-label list-item-body In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.11 Common Margin Properties-Block 7.13 Common Relative Position Properties 7.21.1 break-after 7.21.2 break-before 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.20.3 intrusion-displace 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.15.9 relative-align Common Usage: The fo:list-item-body Areas: The fo:list-item-body fo:list-item-body fo:list-item-body Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:list-item-body fo:list-item-body Contents: ( %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.3 keep-together Common Usage: The fo:list-item-label Areas: The fo:list-item-label fo:list-item-label fo:list-item-label Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:list-item-label fo:list-item-label Contents: ( %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.21.3 keep-together Dynamic effects, whereby user actions (including User Agent state) can influence the behavior and/or representation of portions of a document, can be achieved through the use of the formatting objects included in this section: One-directional single-target links. The ability to switch between the display of two or more formatting object subtrees. This can be used for, e.g., expandable/collapsible table of contents, display of an icon or a full table or graphic. The ability to switch between different property values, such as color font-weight The switching between subtrees is achieved by using the following three formatting objects: fo:multi-switch fo:multi-case fo:multi-toggle Figure 56. The role fo:multi-switch fo:multi-case fo:multi-case fo:multi-toggle switch-to case-title fo:multi-case starting-state fo:multi-case Switching between different property values is achieved by using the fo:multi-properties fo:multi-property-set fo:multi-property-set active-state Input sample: <doc> <chapter><title>Chapter</title> <p>Text</p> <section><title>Section</title> <p>Text</p> </section> <section><title>Section</title> <p>Text</p> </section> </chapter> <chapter><title>Chapter</title> <p>Text</p> <section><title>Section</title> <p>Text</p> </section> <section><title>Section</title> <p>Text</p> </section> </chapter> </doc> In this example the chapter and section titles are extracted into a table of contents placed at the front of the result. The chapter titles are preceded by an icon indicating either collapsed or expanded state. The section titles are only shown in the expanded state. Furthermore, there are links from the titles in the table of contents to the corresponding titles in the body of the document. The two states are achieved by, for each chapter title, using an fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-case switch-to The links in the table of contents are achieved by adding a unique id fo:basic-link XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="doc"> <!-- create the table of contents --> <xsl:apply-templates select="chapter/title" mode="toc"/> <!-- do the document --> <xsl:apply-templates/> </xsl:template>
<xsl:template match="chapter/title" mode="toc"> <fo:multi-switch> <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show"> <fo:block> <fo:multi-toggle switch-to="expanded"> <fo:external-graphic href="plus-icon.gif"/> </fo:multi-toggle> <fo:basic-link internal-destination="{generate-id(.)}"> <xsl:number level="multiple" count="chapter" format="1. "/> <xsl:apply-templates mode="toc"/> </fo:basic-link> </fo:block> </fo:multi-case> <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide"> <fo:block> <fo:multi-toggle switch-to="collapsed"> <fo:external-graphic href="minus-icon.gif"/> </fo:multi-toggle> <fo:basic-link internal-destination="{generate-id(.)}"> <xsl:number level="multiple" count="chapter" format="1. "/> <xsl:apply-templates mode="toc"/> </fo:basic-link> </fo:block> <xsl:apply-templates select="../section/title" mode="toc"/> </fo:multi-case> </fo:multi-switch> </xsl:template>
<xsl:template match="section/title" mode="toc"> <fo:block start-indent="10mm"> <fo:basic-link internal-destination="{generate-id(.)}"> <xsl:number level="multiple" count="chapter|section" format="1.1 "/> <xsl:apply-templates/> </fo:basic-link> </fo:block> </xsl:template>
<xsl:template match="chapter/title"> <fo:block id="{generate-id(.)}"> <xsl:number level="multiple" count="chapter" format="1. "/> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="section/title"> <fo:block id="{generate-id(.)}"> <xsl:number level="multiple" count="chapter|section" format="1.1 "/> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:multi-switch> <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show"> <fo:block> <fo:multi-toggle switch-to="expanded"> <fo:external-graphic href="plus-icon.gif"> </fo:external-graphic> </fo:multi-toggle> <fo:basic-link internal-destination="N4">1. Chapter </fo:basic-link> </fo:block> </fo:multi-case> <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide"> <fo:block> <fo:multi-toggle switch-to="collapsed"> <fo:external-graphic href="minus-icon.gif"> </fo:external-graphic> </fo:multi-toggle> <fo:basic-link internal-destination="N4">1. Chapter </fo:basic-link> </fo:block> <fo:block start-indent="10mm"> <fo:basic-link internal-destination="N11">1.1 Section </fo:basic-link> </fo:block> <fo:block start-indent="10mm"> <fo:basic-link internal-destination="N19">1.2 Section </fo:basic-link> </fo:block> </fo:multi-case> </fo:multi-switch> <fo:multi-switch> <fo:multi-case case-name="collapsed" case-title="collapsed" starting-state="show"> <fo:block> <fo:multi-toggle switch-to="expanded"> <fo:external-graphic href="plus-icon.gif"> </fo:external-graphic> </fo:multi-toggle> <fo:basic-link internal-destination="N28">2. Chapter </fo:basic-link> </fo:block> </fo:multi-case> <fo:multi-case case-name="expanded" case-title="expanded" starting-state="hide"> <fo:block> <fo:multi-toggle switch-to="collapsed"> <fo:external-graphic href="minus-icon.gif"> </fo:external-graphic> </fo:multi-toggle> <fo:basic-link internal-destination="N28">2. Chapter </fo:basic-link> </fo:block> <fo:block start-indent="10mm"> <fo:basic-link internal-destination="N35">2.1 Section </fo:basic-link> </fo:block> <fo:block start-indent="10mm"> <fo:basic-link internal-destination="N43">2.2 Section </fo:basic-link> </fo:block> </fo:multi-case> </fo:multi-switch>
<fo:block id="N4">1. Chapter </fo:block> <fo:block>Text </fo:block> <fo:block id="N11">1.1 Section </fo:block> <fo:block>Text </fo:block> <fo:block id="N19">1.2 Section </fo:block> <fo:block>Text </fo:block> <fo:block id="N28">2. Chapter </fo:block> <fo:block>Text </fo:block> <fo:block id="N35">2.1 Section </fo:block> <fo:block>Text </fo:block> <fo:block id="N43">2.2 Section </fo:block> <fo:block>Text </fo:block> Input sample: <p>Follow this <xlink:mylink xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR" xlink:title="An Example" xlink:show="new" xlink:actuate="onRequest">link</xlink:mylink> to access all TRs of the W3C.</p> In this example an fo:basic-link fo:multi-property-set fo:basic-link fo:multi-properties fo:multi-property-set XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="xlink:mylink" xmlns:xlink="http://www.w3.org/1999/xlink"> <xsl:variable name="show"><xsl:value-of select="@xlink:show"/> </xsl:variable> <fo:multi-properties text-decoration="underline"> <fo:multi-property-set active-state="link" color="blue"/> <fo:multi-property-set active-state="visited" color="red"/> <fo:multi-property-set active-state="active" color="green"/> <fo:multi-property-set active-state="hover" text-decoration="blink"/> <fo:multi-property-set active-state="focus" color="yellow"/> <fo:wrapper color="merge-property-values()" text-decoration="merge-property-values()"> <fo:basic-link external-destination="http://www.w3.org/TR" show-destination="{$show}"> <xsl:attribute name="role"> <xsl:value-of select="@xlink:title"/> </xsl:attribute> <xsl:apply-templates/> </fo:basic-link> </fo:wrapper> </fo:multi-properties> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:block>Follow this <fo:multi-properties text-decoration="underline"> <fo:multi-property-set active-state="link" color="blue"> </fo:multi-property-set> <fo:multi-property-set active-state="visited" color="red"> </fo:multi-property-set> <fo:multi-property-set active-state="active" color="green"> </fo:multi-property-set> <fo:multi-property-set active-state="hover" text-decoration="blink"> </fo:multi-property-set> <fo:multi-property-set active-state="focus" color="yellow"> </fo:multi-property-set> <fo:wrapper color="merge-property-values()" text-decoration="merge-property-values()"> <fo:basic-link external-destination="http://www.w3.org/TR" show-destination="new" role="An Example">link </fo:basic-link> </fo:wrapper> </fo:multi-properties> to access all TRs of the W3C. </fo:block> Common Usage: The fo:basic-link Areas: The fo:basic-link normal fo:basic-link normal page-level-out-of-line reference-level-out-of-line fo:basic-link Note: An fo:basic-link fo:block Constraints: One of the external-destination internal-destination internal-destination No area may have more than one normal child area returned by the same fo:basic-link The children of each normal area returned by an fo:basic-link 4.7.3 Inline-building Contents: (#PCDATA| %inline; %block; In addition this formatting object may have a sequence of zero or more fo:marker The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.8 Common Border, Padding, and Background Properties 7.12 Common Margin Properties-Inline 7.13 Common Relative Position Properties 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.15.4 baseline-shift 7.24.5 destination-placement-offset 7.15.8 dominant-baseline 7.24.6 external-destination 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.24.7 indicate-destination 7.24.8 internal-destination 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.17.4 line-height 7.24.9 show-destination 7.24.13 target-processing-context 7.24.12 target-presentation-context 7.24.14 target-stylesheet Common Usage: The fo:multi-switch fo:multi-case fo:multi-toggle The direct children of an fo:multi-switch fo:multi-case fo:multi-case Each fo:multi-case fo:multi-toggle fo:multi-case fo:multi-switch Note: An fo:multi-switch Areas: The fo:multi-switch fo:multi-switch fo:multi-case fo:multi-case Trait Derivation: The currently-visible-multi-case fo:multi-case starting-state fo:multi-case fo:multi-toggle fo:multi-switch currently-visible-multi-case fo:multi-case switch-to fo:multi-toggle currently-visible-multi-case fo:multi-case fo:multi-toggle fo:multi-switch Constraints: The order of the sequence of areas returned by the fo:multi-switch fo:multi-case Note: Any number of the fo:multi-case starting-state If no fo:multi-case starting-state fo:multi-case Note: If no multi-case is displayed, the entire fo:multi-switch Contents: ( multi-case The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.24.2 auto-restore 7.33.8 id 7.25.1 index-class 7.25.2 index-key Common Usage: The fo:multi-case fo:multi-switch fo:multi-switch Areas: The fo:multi-case fo:multi-case fo:multi-case Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:multi-case fo:multi-case Contents: (#PCDATA| %inline; %block; An fo:multi-case fo:multi-switch fo:multi-case fo:multi-case fo:marker fo:multi-toggle fo:multi-case This restriction applies recursively. Note: For example, an fo:multi-case fo:multi-switch fo:multi-case fo:multi-case fo:multi-switch The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.24.10 starting-state 7.24.3 case-name 7.24.4 case-title Common Usage: The fo:multi-toggle fo:multi-case switch-to fo:multi-toggle case-name fo:multi-case Areas: The fo:multi-toggle fo:multi-toggle fo:multi-toggle fo:multi-toggle switch-to fo:multi-toggle Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:multi-toggle fo:multi-toggle Activating an area returned by an fo:multi-toggle currently-visible-multi-case fo:multi-switch 7.24.11 switch-to switch-to fo:multi-case Contents: (#PCDATA| %inline; %block; An fo:multi-toggle fo:multi-case The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.24.11 switch-to Common Usage: The fo:multi-properties Note: An fo:multi-properties format color text-decoration The direct children of an fo:multi-properties fo:multi-property-set fo:wrapper fo:wrapper fo:multi-properties fo:multi-property-set Areas: The fo:multi-properties fo:multi-properties fo:multi-properties Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:multi-properties fo:multi-properties Contents: ( multi-property-set wrapper The properties that should take a merged value shall be specified with a value of "merge-property-values()". This function, when applied on an fo:wrapper fo:multi-properties fo:multi-property-set The following properties apply to this formatting object: 7.5 Common Accessibility Properties Common Usage: The fo:multi-property-set fo:wrapper fo:multi-property-set Areas: The fo:multi-property-set Constraints: None. Contents: EMPTY The following properties apply to this formatting object: 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.24.1 active-state The formatting objects and properties for indexing enable the generation of lists of page numbers associated with specific items in the formatting object tree, such as for use in back-of-the-book indexes. There are two kinds of such objects and properties: those that associate index keys with formatting objects throughout the tree and formatting objects that are used in the back-of-the-book index to assemble page references to the pages where the areas from formatting objects with a particular index key occur. Further formatting properties and objects control the way in which these page references are grouped and arranged into ranges. There are two properties for associating index keys with formatting objects: " index-key index-class fo:index-range-begin fo:index-range-end Cited page items associated with a particular index key are obtained using the fo:index-key-reference fo:index-page-citation-list fo:index-page-number-prefix fo:index-page-number-suffix fo:index-page-citation-list-separator fo:index-page-citation-range-separator fo:index-key-reference <fo:block>Eiffel Tower <fo:index-page-citation-list> <fo:index-key-reference ref-index-key="Eiffel Tower;;"/> </fo:index-page-citation-list> </fo:block> The structure and content of the generated list of page numbers can be further controlled through the use of index classes to distinguish different types of index entries or to distinguish entries present in different parts of the document. For example, different classes could be used to distinguish index entries for figures from normal entries or to distinguish entries within one section, e.g. the preface, of a document from entries from another section, e.g. the main body, in order to control the construction of page ranges. The fo:index-page-number-prefix fo:index-page-number-suffix Note: The formatting objects for indexing only provide facilities for generating the list of page numbers for individual index keys. Assembling the index entries; identifying all the entries, sorting them, and creating the formatting objects, e.g. fo:block The following example document is used throughout this section to describe the indexing process and how the various options change the presentation of the index. The source document uses typical XML markup for representing back-of-the-book index entries. The document consists of a preface, four chapters, a glossary, and an index. The formatting style for this document specifies that the preface, body chapters, and glossary all use different page numbers as shown below. Component Numbered pages Ordinal page numbers Title Page Recto/Verso n/a 1-2 Table of Contents iii/iv 3/4 List of Figures v/vi 5/6 Preface vii/x 7-10 Chapter 1 1-3/4 11-13/14 Chapter 2 5-12 (pg 4 is blank) 15-22 Chapter 3 13-17/18 23-27/28 Chapter 4 19-24 (pg 18 is blank) 29-34 Glossary G-1 to G-4 35-38 Index I-1 to ... 39-... The composite page numbers (e.g., "G-1") used in the glossary are created using an fo:folio-prefix <fo:page-sequence id="glossary" initial-page-number="1"> <fo:page-number-folio-prefix> <fo:inline>G-</fo:inline> </fo:page-number-folio-prefix> <fo:flow>...</fo:flow> </fo:page-sequence> Throughout the document, there are a number of index terms for the Eiffel Tower. This example uses explicit markup in the source Each individual reference to the tower is identified: <indexterm><primary>Eiffel Tower</primary></indexterm> Some of these terms identify a preferred description of the tower: <indexterm significance="preferred"> <primary>Eiffel Tower</primary></indexterm> For a long description of the tower, individual terms mark the beginning and end of the span: <indexterm id="ei.idx" class="startofrange"> <primary>Eiffel Tower</primary></indexterm> ... <indexterm startref="ei.idx" class="endofrange"/> Two of the terms occur inside figures: <figure id="tower1"> <head>The Eiffel Tower</head> <indexterm><primary>Eiffel Tower</primary></indexterm> ... </figure> The first step in generating an index is to transfer the index term information from the source document into the formatting objects. It is the location of this information in the formatting object tree that will determine what pages appear in the index. Any formatting object to which the " id index-key index-key To simplify this example, point anchors will be generated for each term (as opposed to placing " index-key Consider the following templates: <xsl:template match="indexterm[@significance='preferred']" priority="100"> <fo:wrapper> <xsl:attribute name="index-key"> <xsl:value-of select="primary"/> <xsl:text>;</xsl:text> <xsl:value-of select="secondary"/> <xsl:text>;</xsl:text> <xsl:value-of select="tertiary"/> <xsl:text>;preferred</xsl:text> </xsl:attribute> </fo:wrapper> </xsl:template>
<xsl:template match="indexterm[@class='startofrange']" priority="75"> <fo:index-range-begin id="{@id}"/> <xsl:attribute name="index-key"> <xsl:value-of select="primary"/> <xsl:text>;</xsl:text> <xsl:value-of select="secondary"/> <xsl:text>;</xsl:text> <xsl:value-of select="tertiary"/> </xsl:attribute> </xsl:template>
<xsl:template match="indexterm[@class='endofrange']" priority="75"> <fo:index-range-end ref-id="{@startref}"> </fo:index-range-end> </xsl:template>
<xsl:template match="figure/indexterm" priority="50"> <fo:wrapper> <xsl:attribute name="index-key"> <xsl:value-of select="primary"/> <xsl:text>;</xsl:text> <xsl:value-of select="secondary"/> <xsl:text>;</xsl:text> <xsl:value-of select="tertiary"/> <xsl:text>;figure</xsl:text> </xsl:attribute> </fo:wrapper> </xsl:template>
<xsl:template match="indexterm"> <fo:wrapper> <xsl:attribute name="index-key"> <xsl:value-of select="primary"/> <xsl:text>;</xsl:text> <xsl:value-of select="secondary"/> <xsl:text>;</xsl:text> <xsl:value-of select="tertiary"/> </xsl:attribute> </fo:wrapper> </xsl:template> Applied to the example index terms, these templates will produce a set of index key associations, e.g. (interspersed among the other formatting objects): [E 9] <fo:wrapper index-key="Eiffel Tower;;"/> [F 10] <fo:wrapper index-key="Eiffel Tower;;"/> [G 11] <fo:wrapper index-key="Eiffel Tower;;"/> [H 13] <fo:index-range-begin id="ei.idx" index-key="Eiffel Tower;;"/> [Y 15] <fo:wrapper index-key="Eiffel Tower;;"/> [C 15] <fo:wrapper index-key="Eiffel Tower;;;figure"/> [K 16] <fo:index-range-end ref-id="ei.idx"/> [L 18] <fo:index-range-begin id="ei2.idx" index-key="Eiffel Tower;;"/> [A 19] <fo:wrapper index-key="Eiffel Tower;;;preferred"/> [O 21] <fo:index-range-end ref-id="ei2.idx"/> [B 23] <fo:wrapper index-key="Eiffel Tower;;;preferred"/> [D 25] <fo:wrapper index-key="Eiffel Tower;;;figure"/> [P 27] <fo:wrapper index-key="Eiffel Tower;;"/> [Q 29] <fo:wrapper index-key="Eiffel Tower;;"/> [R 30] <fo:wrapper index-key="Eiffel Tower;;"/> [S 31] <fo:wrapper index-key="Eiffel Tower;;"/> [T 32] <fo:wrapper index-key="Eiffel Tower;;"/> [U 33] <fo:wrapper index-key="Eiffel Tower;;"/> [V 34] <fo:wrapper index-key="Eiffel Tower;;"/> [X 37] <fo:wrapper index-key="Eiffel Tower;;"/> In the list above a label has been added for each formatting object consisting of a letter and the ordinal page number (see below). These are carried through below to make referencing and reading the example easier. These formatting objects are spread throughout the document, appearing in the formatting object tree where each index page reference is desired. Naturally, in a real document, there would be many more of these formatting objects, one or more for each term that will appear in the index. Assembling a properly collated and sorted index is accomplished using the general stylesheet mechanisms. These details are not considered here. Note: Index cross references ("see" and "see also" entries) are not associated with page numbers, so they do not use the indexing formatting objects. This section describes the formatting objects used for collating and sorting the lists of page number citations associated with each entry The fo:index-page-citation-list fo:index-key-reference fo:index-key-reference fo:index-key-reference fo:index-page-citation-list For this example, the formatting style is to distinguish pages that have the principal description of an item by using bold page numbers and to enclose in square brackets the page numbers where the index key occured in a figure. The following formatting objects accomplish this: <fo:index-page-citation-list merge-sequential-page-numbers="merge"/> <fo:index-key-reference ref-index-key="Eiffel Tower;;;preferred" font-weight="bold" id="XB"/> <fo:index-key-reference ref-index-key="Eiffel Tower;;;figure" font-style="italic" id="XI"> <fo:index-page-number-prefix> <fo:inline>[</fo:inline> </fo:index-page-number-prefix> <fo:index-page-number-suffix> <fo:inline>]</fo:inline> </fo:index-page-number-suffix> </fo:index-key-reference> <fo:index-key-reference ref-index-key="Eiffel Tower;;" id="XX"/> </fo:index-page-citation-list> In this index page citation list, three different groups of page citations, represented by references to three different, but related, keys, are merged into a single result list of page citations. Note: The " id fo:index-key-reference This section describes how the index items in the example are processed to produce the final lists of formatted page numbers and page ranges. For the purpose of the example, assume that the following index classes are used; the preface specifies index-class="preface" index-class="chapter" index-class="glossary" Each fo:index-key-reference In this example the following sets of pages are referenced by the three fo:index-key-reference Key Ordinal page numbers Eiffel Tower;;;preferred 19, 23 Eiffel Tower;;;figure 15, 25 Eiffel Tower;; 9, 10, 11, 13-16, 15, 18-21, 27, 29, 30, 31, 32, 33, 34, 37 Note: Formatting differences, e.g. ordinal page number 9 formats as "ix" and ordinal page number 37 formats as "G-3", will be considered later. Within each fo:index-key-reference 6.10.6 fo:index-key-reference Key Ordinal page numbers Eiffel Tower;;;preferred 19, 23 Eiffel Tower;;;figure 15, 25 Eiffel Tower;; 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 27, 29, 30, 31, 32, 33, 34, 37 For the purpose of processing by the fo:index-page-citation-list fo:index-key-reference [A] (19, fo:wrapper, chapter, XB) [B] (23, fo:wrapper, chapter, XB) [C] (15, fo:wrapper, chapter, XI) [D] (25, fo:wrapper, chapter, XI) [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) [H] (13, fo:index-range-begin, chapter, XX) [I] (14, null, chapter, XX) [J] (15, null, chapter, XX) [K] (16, fo:index-range-end, chapter, XX) [L] (18, fo:index-range-begin, chapter, XX) [M] (19, null, chapter, XX) [N] (20, null, chapter, XX) [O] (21, fo:index-range-end, chapter, XX) [P] (27, fo:wrapper, chapter, XX) [Q] (29, fo:wrapper, chapter, XX) [R] (30, fo:wrapper, chapter, XX) [S] (31, fo:wrapper, chapter, XX) [T] (32, fo:wrapper, chapter, XX) [U] (33, fo:wrapper, chapter, XX) [V] (34, fo:wrapper, chapter, XX) [X] (37, fo:wrapper, glossary, XX) Note: In the case of ranges, the first page in the range is associated with the start of the range and the last page is associated with the end of the range. Intermediate pages don't refer to any particular location on the page, they just refer to that page as a whole. The next section describes the abstract steps in processing an fo:index-page-citation-list merge-pages-across-index-key-references 6.10.1.2.2 merge-pages-across-index-key-references="merge" merge-pages-across-index-key-references Step A in the processing of fo:index-page-citation-list 6.10.7 fo:index-page-citation-list fo:index-key-reference merge-pages-across-index-key-references The following set of tuples represents the case when merge-pages-across-index-key-references fo:index-key-reference [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) [H] (13, fo:index-range-begin, chapter, XX) [I] (14, null, chapter, XX) [J] (15, null, chapter, XX) [C] (15, fo:wrapper, chapter, XI) [K] (16, fo:index-range-end, chapter, XX) [L] (18, fo:index-range-begin, chapter, XX) [A] (19, fo:wrapper, chapter, XB) [M] (19, null, chapter, XX) [N] (20, null, chapter, XX) [O] (21, fo:index-range-end, chapter, XX) [B] (23, fo:wrapper, chapter, XB) [D] (25, fo:wrapper, chapter, XI) [P] (27, fo:wrapper, chapter, XX) [Q] (29, fo:wrapper, chapter, XX) [R] (30, fo:wrapper, chapter, XX) [S] (31, fo:wrapper, chapter, XX) [T] (32, fo:wrapper, chapter, XX) [U] (33, fo:wrapper, chapter, XX) [V] (34, fo:wrapper, chapter, XX) [X] (37, fo:wrapper, glossary, XX) Step B is performed if merge-sequential-page-numbers 6.10.7 fo:index-page-citation-list If merge-ranges-across-index-key-references [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) ([H] (13, fo:index-range-begin, chapter, XX), [K] (16, fo:index-range-end, chapter, XX)) [C] (15, fo:wrapper, chapter, XI) ([L] (18, fo:index-range-begin, chapter, XX), [O] (21, fo:index-range-end, chapter, XX)) [A] (19, fo:wrapper, chapter, XB) [B] (23, fo:wrapper, chapter, XB) [D] (25, fo:wrapper, chapter, XI) [P] (27, fo:wrapper, chapter, XX) ([Q] (29, fo:wrapper, chapter, XX), [V] (34, fo:wrapper, chapter, XX)) [X] (37, fo:wrapper, glossary, XX) If merge-ranges-across-index-key-references [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) ([H] (13, fo:index-range-begin, chapter, XX), [K] (16, fo:index-range-end, chapter, XX)) ([L] (18, fo:index-range-begin, chapter, XX), [O] (21, fo:index-range-end, chapter, XX)) [B] (23, fo:wrapper, chapter, XB) [D] (25, fo:wrapper, chapter, XI) [P] (27, fo:wrapper, chapter, XX) ([Q] (29, fo:wrapper, chapter, XX), [V] (34, fo:wrapper, chapter, XX)) [X] (37, fo:wrapper, glossary, XX) Step C consists of formatting the cited page items and cited page item ranges as actual page numbers and ranges, taking into account any index page number prefix and suffix and using the appropriate index page citation list separator and index page citation range separator. The following shows steps A and B when merge-pages-across-index-key-references In step A tuple [C] is merged with tuple [J] and tuple [M] is merged with tuple [A]: [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) [H] (13, fo:index-range-begin, chapter, XX) [I] (14, null, chapter, XX) [C] (15, fo:wrapper, chapter, XI) [K] (16, fo:index-range-end, chapter, XX) [L] (18, fo:index-range-begin, chapter, XX) [A] (19, fo:wrapper, chapter, XB) [N] (20, null, chapter, XX) [O] (21, fo:index-range-end, chapter, XX) [B] (23, fo:wrapper, chapter, XB) [D] (25, fo:wrapper, chapter, XI) [P] (27, fo:wrapper, chapter, XX) [Q] (29, fo:wrapper, chapter, XX) [R] (30, fo:wrapper, chapter, XX) [S] (31, fo:wrapper, chapter, XX) [T] (32, fo:wrapper, chapter, XX) [U] (33, fo:wrapper, chapter, XX) [V] (34, fo:wrapper, chapter, XX) [X] (37, fo:wrapper, glossary, XX) In step B, if merge-ranges-across-index-key-references [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) [H] (13, fo:index-range-begin, chapter, XX) [I] (14, null, chapter, XX) [C] (15, fo:wrapper, chapter, XI) [K] (16, fo:index-range-end, chapter, XX) [L] (18, fo:index-range-begin, chapter, XX) [A] (19, fo:wrapper, chapter, XB) [N] (20, null, chapter, XX) [O] (21, fo:index-range-end, chapter, XX) [B] (23, fo:wrapper, chapter, XB) [D] (25, fo:wrapper, chapter, XI) [P] (27, fo:wrapper, chapter, XX) ([Q] (29, fo:wrapper, chapter, XX), [V] (34, fo:wrapper, chapter, XX)) [X] (37, fo:wrapper, glossary, XX) If merge-ranges-across-index-key-references [E] ( 9, fo:wrapper, preface, XX) [F] (10, fo:wrapper, preface, XX) [G] (11, fo:wrapper, chapter, XX) ([H] (13, fo:index-range-begin, chapter, XX), [K] (16, fo:index-range-end, chapter, XX)) ([L] (18, fo:index-range-begin, chapter, XX), [O] (21, fo:index-range-end, chapter, XX)) [B] (23, fo:wrapper, chapter, XB) [D] (25, fo:wrapper, chapter, XI) [P] (27, fo:wrapper, chapter, XX) ([Q] (29, fo:wrapper, chapter, XX), [V] (34, fo:wrapper, chapter, XX)) [X] (37, fo:wrapper, glossary, XX) The final set of page numbers that will appear in the example index entry depends on the values of the merge-pages-across-index-key-references merge-ranges-across-index-key-references index-class index-class merge-pages-across-index-key-references merge-ranges-across-index-key-references Resulting index pages leave-separate/leave-separate ix, x, 1, 3-6, [5] 9 13 [15] leave-separate/merge ix, x, 1, 3-6, 8-11, 13 [15] merge/leave-separate ix, x, 1, 3, 4, [5] 9 13 [15] merge/merge ix, x, 1, 3-6, 8-11, 13 [15] If the index terms from the preface, chapter, and appendix pages are index-class merge-pages-across-index-key-references merge-ranges-across-index-key-references Resulting index pages leave-separate/leave-separate ix-1, 3-6, [5] 9 13 [15] leave-separate/merge ix-1, 3-6, 8-11, 13 [15] merge/leave-separate ix-1, 3, 4, [5] 9 13 [15] merge/merge ix-1, 3-6, 8-11, 13 [15] Common Usage: The fo:index-page-number-prefix fo:index-key-reference Areas: The fo:index-page-number-prefix fo:index-page-citation-list Constraints: None. Contents: (#PCDATA| %inline; Common Usage: The fo:index-page-number-suffix fo:index-key-reference Areas: The fo:index-page-number-suffix fo:index-page-citation-list Constraints: None. Contents: (#PCDATA| %inline; Common Usage: The fo:index-range-begin fo:index-range-end All formatting objects following (in document order) this fo:index-range-begin fo:index-range-end fo:index-range-begin Areas: The fo:index-range-begin Constraints: Each fo:index-range-begin id index-key An fo:index-range-begin fo:index-range-end ref-id fo:index-range-end id fo:index-range-begin Following this fo:index-range-begin fo:index-range-end fo:index-range-end fo:index-range-end Contents: EMPTY The following properties apply to this formatting object: 7.33.8 id 7.25.2 index-key 7.25.1 index-class Common Usage: The fo:index-range-end fo:index-range-begin 6.10.4 fo:index-range-begin Areas: The fo:index-range-end Constraints: Preceding this fo:index-range-end fo:index-range-begin fo:index-range-begin fo:index-range-end Contents: EMPTY The following properties apply to this formatting object: 7.33.13 ref-id Common Usage: The fo:index-key-reference A cited page item a reference to a page area a reference to an fo:index-key-reference an index class. Areas: The fo:index-key-reference fo:index-page-citation-list Constraints: Each fo:index-key-reference index-key ref-index-key fo:index-key-reference fo:index-key-reference If the matched index-key fo:index-range-begin fo:index-range-begin For each formatting object containing a matching index-key Note: For example, if the matched index-key fo:block fo:index-range-begin fo:index-range-end Within each fo:index-key-reference fo:index-range-begin fo:index-range-end fo:index-range-begin fo:index-range-end Note: Duplicates are removed irrespective of index-class. Contents: ( index-page-number-prefix index-page-number-suffix The following properties apply to this formatting object: 7.25.3 page-number-treatment 7.25.7 ref-index-key Common Usage: The fo:index-page-citation-list fo:index-key-reference fo:index-key-reference fo:index-page-citation-list Areas: The fo:index-page-citation-list normal inline-area Trait Derivation: The traits used for formatting the individual parts of the list of page numbers and ranges is described below. Constraints: Note: Although the constraints are described as performing a series of steps, this is solely for the convenience of exposition and does not imply they must be implemented as separate steps in any conforming implementation. A conforming implementation must only achieve the same effect. Step A: Cited page items from all the child fo:index-key-reference merge-pages-across-index-key-references fo:index-key-reference merge-pages-across-index-key-references 7.25.6 merge-pages-across-index-key-references Step B: consists of merging sequences of three or more sequential cited page items into a cited page item range. It is performed only if the value of merge-sequential-page-numbers Several conditions influence whether or not any two cited page items from the complete set of cited page items are considered sequential. Two cited page items are sequential if and only if all of the following conditions hold: The cited page items refer to page-viewport-areas that are consecutive children of the root of the area tree. They have the same index-class Either the cited page items are generated by the same fo:index-key-reference merge-ranges-across-index-key-references Step C: consists of formatting the cited page items and cited page item ranges into the list of formatted page numbers and ranges. The result is the same as formatting a sequence of result tree fragments corresponding to individual page numbers, any index page number prefix or suffix, range and list separators. For each cited page item, from fo:index-key-reference R If R fo:index-page-number-prefix fo:inline fo:index-page-number-prefix fo:inline R keep-with-next.within-line An fo:inline 6.6.10 fo:page-number reference-page fo:page-sequence reference-page-sequence fo:inline R page-number-treatment fo:inline fo:basic-link If R fo:index-page-number-suffix fo:inline fo:index-page-number-suffix fo:inline R keep-with-previous.within-line For each cited page item range the result areas are the same as the result of formatting: The first cited page item in the range in the same way as a cited page item; see above. If the fo:index-page-citation-list fo:index-page-citation-range-separator fo:inline fo:index-page-citation-range-separator fo:inline fo:index-page-citation-range-separator keep-with-previous.within-line keep-with-next.within-line Otherwise an fo:character character keep-with-previous.within-line keep-with-next.within-line fo:index-page-citation-list The last cited page item in the range in the same way as a cited page item; see above. After each formatted page item or range, except the last, a separator is inserted. The result areas are the same as the result of formatting: If the fo:index-page-citation-list fo:index-page-citation-list-separator fo:index-page-citation-list-separator fo:inline fo:index-page-citation-list-separator Otherwise an fo:character character keep-with-previous.within-line fo:character character fo:index-page-citation-list Contents: ( index-page-citation-list-separator index-page-citation-range-separator index-key-reference The following properties apply to this formatting object: 7.25.5 merge-sequential-page-numbers 7.25.4 merge-ranges-across-index-key-references 7.25.6 merge-pages-across-index-key-references Common Usage: The fo:index-page-citation-list-separator Areas: The fo:index-page-citation-list-separator fo:index-page-citation-list Constraints: None. Contents: (#PCDATA| %inline; Common Usage: The fo:index-page-citation-range-separator Areas: The fo:index-page-citation-range-separator fo:index-page-citation-list Constraints: None. Contents: (#PCDATA| %inline; Common Usage: The fo:bookmark-tree Areas: This formatting object returns the sequence of areas returned by the children of this formatting object. Constraints: The sequence of returned areas must be the concatenation of the sub-sequences of areas returned by each of the flow children of the fo:bookmark-tree Contents: ( bookmark Common Usage: The fo:bookmark Note: The fo:bookmark fo:basic-link Areas: The fo:bookmark fo:bookmark Constraints: One of the external-destination internal-destination internal-destination No area may have more than one normal child area returned by the same fo:bookmark The children of each normal area returned by an fo:bookmark 4.7.3 Inline-building The property " starting-state Contents: ( bookmark-title bookmark The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.24.6 external-destination 7.24.8 internal-destination 7.24.10 starting-state Common Usage: The fo:bookmark-title Note: The fo:bookmark-title fo:inline Areas: The fo:bookmark-title fo:bookmark-title Trait Derivation: Even though the white-space-treatment linefeed-treatment white-space-collapse fo:bookmark-title Constraints: No area may have more than one normal child area returned by the same fo:bookmark-title The children of each normal area returned by an fo:bookmark-title 4.7.3 Inline-building Contents: (#PCDATA) The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.19.1 color 7.9.6 font-style Note 7.9.8 font-weight Note The fo:float fo:float fo:float float 6.12.1.3 Conditional Sub-Regions fo:float Second, the fo:float float fo:float float Flowing normal content flowing alongside side-floats is realized by increasing the start-intrusion-adjustment or the end-intrusion-adjustment of normal child areas of the parent reference-area of the side-float. The " clear clear The fo:footnote fo:footnote fo:inline fo:footnote-body The actual areas generated by the descendants of the fo:footnote-body fo:list-block fo:footnote-body The region-body has two conditional sub-regions which implicitly specify corresponding reference-areas called before-float-reference-area footnote-reference-area The conditionally generated areas borrow space in the block-progression-dimension height writing-mode left There may be limits on how much space conditionally generated areas can borrow from the region-reference-area. It is left The block-progression-dimension block-progression-dimension inline-progression-dimension width writing-mode inline-progression-dimension Each conditionally generated reference-area may additionally contain a sequence of areas used to separate the reference-area from the main-reference-area. The sequence of areas is the sequence returned by formatting an fo:static-content format If there is an fo:static-content flow-name fo:static-content If there is an fo:static-content flow-name fo:static-content An interactive user agent may choose to create "hot links" to the footnotes from the footnote-citation, or create "hot links" to the before-floats from an implicit citation, instead of realizing conditional sub-regions. The generation of areas with area-class "xsl-before-float" or "xsl-footnote" is specified in the descriptions of the formatting objects that initially return areas with those area-classes. Input sample: <doc> <p>C'ieng pieces were made in northern towns, such as C'ieng Mai. They were typically of tamlung weight.</p> <figure> <photo image="TH0317A.jpg"/> <caption>C'ieng Tamlung of C'ieng Mai</caption> </figure> </doc> In this example the figures are placed as floats at the before side (top in a lr-tb writing-mode XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="figure"> <fo:float float="before"> <xsl:apply-templates/> </fo:float> </xsl:template>
<xsl:template match="photo"> <fo:block text-align="center"> <fo:external-graphic src="{@image}"/> </fo:block> </xsl:template>
<xsl:template match="caption"> <fo:block space-before="3pt" text-align="center" start-indent="10mm" end-indent="10mm"> <xsl:apply-templates/> </fo:block> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:block>C'ieng pieces were made in northern towns, such as C'ieng Mai. They were typically of tamlung weight. </fo:block>
<fo:float float="before">
<fo:block text-align="center"> <fo:external-graphic src="TH0317A.jpg"> </fo:external-graphic> </fo:block>
<fo:block space-before="3pt" text-align="center" start-indent="10mm" end-indent="10mm">C'ieng Tamlung of C'ieng Mai </fo:block>
</fo:float> Input sample: <doc> <p>Some Pod Duang were restruck<fn>Berglund, A., Thai Money, from Earliest Times to King Rama V, p. 203.</fn> during the reign of King Rama V.</p> </doc> In this example the footnotes are numbered consecutively throughout the document. The footnote callout is the number of the footnote, followed by a ")", as a superscript. The footnote itself is formatted using list formatting objects with the footnote number as the label and the footnote text as the body. XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="fn"> <fo:footnote> <fo:inline font-size="0.83em" baseline-shift="super"> <xsl:number level="any" count="fn" format="1)"/> </fo:inline> <fo:footnote-body> <fo:list-block provisional-distance-between-starts="20pt" provisional-label-separation="5pt"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block font-size="0.83em" line-height="0.9em"> <xsl:number level="any" count="fn" format="1)"/> </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block font-size="0.83em" line-height="0.9em"> <xsl:apply-templates/> </fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> </fo:footnote-body> </fo:footnote> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <fo:block>Some Pod Duang were restruck <fo:footnote> <fo:inline font-size="0.83em" baseline-shift="super">1) </fo:inline> <fo:footnote-body> <fo:list-block provisional-distance-between-starts="20pt" provisional-label-separation="5pt"> <fo:list-item> <fo:list-item-label end-indent="label-end()"> <fo:block font-size="0.83em" line-height="0.9em">1) </fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block font-size="0.83em" line-height="0.9em">Berglund, A., Thai Money, from Earliest Times to King Rama V, p. 203. </fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> </fo:footnote-body> </fo:footnote> during the reign of King Rama V. </fo:block> Common Usage: The fo:float Areas: The fo:float float fo:float float Areas with area-class "xsl-side-float" are reference areas. An area with area-class "xsl-before-float" is placed as a child of a before-float-reference-area. The optional area with area-class "xsl-anchor" is not generated if the " float fo:float float The area with area-class "xsl-anchor" has no children, and is an inline-area, except where this would violate the constraints that (a.) any area's children must be either block-areas or inline-areas, but not a mixture, and (b.) the children of a line-area may not consist only of anchor areas. In the case where an inline-area would violate these constraints, the fo:float Constraints: The normal inline-area generated by the fo:float fo:float keep-with-previous inline-progression-dimension The term anchor-area fo:float side-float No area may have more than one child block-area with the same area-class returned by the same fo:float Areas with area-class "xsl-before-float" must be properly ordered within the area tree relative to other areas with the same area-class. The padding-, border-, and content-rectangles of the block-areas generated by fo:float padding border The following constraints apply to fo:float It is an error if the fo:float fo:block-container fo:float float A block-area with area-class "xsl-before-float" generated by the fo:float fo:float The fo:float fo:float The " clear The following constraints apply to fo:float Each side-float is placed either as a child of the nearest ancestor reference-area of the anchor-area or as a child of a later reference-area in the same reference-area chain. Side-floats that are siblings in the area-tree may overlap their content rectangles. The description in section 9.5 of [CSS2] fo:float All references to left right writing-mode float writing-mode All references to top and bottom writing-mode The phrase "current line box" shall be interpreted to mean the line-area containing the anchor-area generated by the float. If the anchor-area is a block-area then the "current line box" does not exist. Side-floats derive their length in the inline-progression-dimension A side-float may add to the intrusion adjustment of any inline-overlapping block-area whose nearest ancestor reference-area is the parent of the side-float. See 4.4.3 Intrusion Adjustments The user agent may make its own determination, after taking into account the intrusion adjustments caused by one or more overlapping side-floats, that the remaining space in the inline-progression-direction is insufficient for the next side-float or normal block-area. The user agent may address this by causing the next side-float or normal block-area to " clear clear Note: The user agent may determine sufficiency of space by using a fixed length, or by some heuristic such as whether an entire word fits into the available space, or by some combination, in order to handle text and images. Contents: ( %block; An fo:float fo:float fo:footnote fo:marker Additionally, an fo:float fo:block-container The following properties apply to this formatting object: 7.20.2 float 7.20.1 clear 7.33.8 id 7.25.1 index-class 7.25.2 index-key Common Usage: The fo:marginalia formatting obiect is intended to be used to produce marginalia, positioned in a separate area external to the start-edge or end-edge of the region-body. Areas: The fo:marginalia formatting object does not generate any areas. The fo:marginalia formatting object returns the areas generated and returned by its child fo:inline formatting object. The fo:inline element is optional. Note: The fo:inline If the fo:inline Additionally the fo:marginalia Constraints: An fo:marginalia fo:marginalia fo:float fo:footnote fo:marker fo:marginalia fo:block-container The term "marginalia-body-area" is defined to mean the first area generated and returned by the fo:marginalia-body, child of the fo:marginalia. The term "anchor-area" is defined to mean the line area parent of the area generated by the fo:inline fo:marginalia fo:marginalia These terms are used to specify how to align a marginalia with the text it refers to, setting the marginalia-relative-align Contents: (inline?,marginalia-body) The following properties apply to this formatting object: 7.30.25 marginalia-destination-area Used to indicate the marginalia-reference-area where the block-areas generated by the fo:marginalia-body Possible values of this attribute are: "start": the content of the marginalia will be placed in the extension-region-start region "end": the content of the marginalia will be placed in the extension-region-end region "inside": the content of the marginalia will be placed in the extension-region-end region of an even page and in the extension-region-start of an odd page region "outside": the content of the marginalia will be placed in the extension-region-start region of an even page and in the extension-region-end of an odd page 7.15.10 marginalia-relative-align Used to indicate the alignment of the marginalia with respect to the text it refers to. This property specifies the alignment, in the block-direction, between two areas. Possible values of this attribute are: "before": the before-edge of the marginalia-body-area is placed aligned with the before-edge of the anchor-area. "baseline": the distance between the baseline of the marginalia-body-area is the same as the distance between the baseline of the anchor-area. Common Usage: The fo:marginalia-body is used to generate marginalia content. Areas: The fo:marginalia-body Constraints: The fo:marginalia-body fo:marginalia The position of a marginalia in the page (i.e., the corresponding marginalia-reference-area) is indicated in the marginalia-destination-area fo:marginalia Areas with area-class equal to "xsl-marginalia "are defined to be "stackable", indicating that they are supposed to be stacked, in the block-direction within their marginalia-reference-area. In addition a "special stacking rule" has to be applied for placing marginalia in the marginalia-reference-area. The term "marginalia-body-area" is defined to mean the first area generated and returned by the fo:marginalia-body. The term "anchor-area" is defined to mean the line area parent of the area generated by the fo:inline fo:marginalia fo:marginalia The offset of the before-edge of the marginalia-body-area from the before-edge of the marginalia-reference-area cannot be smaller than the offset of the before-edge of the anchor-area from the before-edge of the region-reference-area. This constraint makes marginalia anchored to the text they refer to. The marginalia-relative-align fo:marginalia Contents: ( %block; The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key Common Usage: The fo:footnote Areas: The fo:footnote fo:footnote fo:inline Additionally the fo:footnote fo:footnote-body Constraints: The term anchor-area fo:inline fo:footnote A block-area returned by the fo:footnote fo:footnote The second block-area and any additional block-areas returned by an fo:footnote fo:footnote It is an error if the fo:footnote fo:block-container fo:footnote-body fo:footnote fo:footnote Contents: ( inline footnote-body An fo:footnote fo:float fo:footnote fo:marker Additionally, an fo:footnote fo:block-container The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key Common Usage: The fo:footnote-body Areas: The fo:footnote-body Constraints: The fo:footnote-body fo:footnote No area may have more than one child block-area returned by the same fo:footnote-body Areas with area-class "xsl-footnote" must be properly ordered within the area tree relative to other areas with the same area-class. Contents: ( %block; The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.33.8 id 7.25.1 index-class 7.25.2 index-key The following example shows the use of the fo:wrapper Input sample: <doc> <p>This is an <emph>important word</emph> in this sentence that also refers to a <code>variable</code>.</p> </doc> The "emph" elements are to be presented using a bold font and the "code" elements using a Courier font. XSL Stylesheet: <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version='1.0'>
<xsl:template match="p"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template>
<xsl:template match="emph"> <fo:wrapper font-weight="bold"> <xsl:apply-templates/> </fo:wrapper> </xsl:template>
<xsl:template match="code"> <fo:wrapper font-family="Courier"> <xsl:apply-templates/> </fo:wrapper> </xsl:template>
</xsl:stylesheet> fo: element and attribute tree: <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">This is an <fo:wrapper font-weight="bold">important word</fo:wrapper> in this sentence that also refers to a <fo:wrapper font-family="Courier">variable</fo:wrapper>. </fo:block> The following example shows how to use the fo:retrieve-table-marker bottom bottom Input sample: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <numbers> <number>1</number> <number>2</number> <!-- and so on... --> <number>11</number> <number>12</number> </numbers> XSL Stylesheet: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> <xsl:strip-space elements="*"/>
<xsl:template match="numbers"> <fo:table> <fo:table-column/> <fo:table-footer> <fo:table-row> <fo:table-cell font-weight="bold"> <fo:block> <fo:retrieve-table-marker retrieve-class-name="subtotal-caption" retrieve-position-within-table="last-ending"/> <fo:retrieve-table-marker retrieve-class-name="subtotal" retrieve-position-within-table="last-ending"/> </fo:block> </fo:table-cell> </fo:table-row> <fo:retrieve-table-marker retrieve-class-name="continued" retrieve-position-within-table="last-ending"/> </fo:table-footer> <fo:table-body> <fo:marker marker-class-name="continued"> <fo:table-row> <fo:table-cell> <fo:block>Table continued...</fo:block> </fo:table-cell> </fo:table-row> </fo:marker> <fo:marker marker-class-name="subtotal-caption"> Subtotal: </fo:marker> <xsl:apply-templates/> </fo:table-body> </fo:table> </xsl:template>
<xsl:template match="number"> <fo:table-row> <fo:marker marker-class-name="subtotal"> <xsl:value-of select="sum(preceding::number)+text()"/> </fo:marker> <xsl:if test="position() = last()"> <fo:marker marker-class-name="continued"/> <fo:marker marker-class-name="subtotal-caption"> Total: </fo:marker> </xsl:if> <fo:table-cell> <fo:block> <xsl:apply-templates/> </fo:block> </fo:table-cell> </fo:table-row> </xsl:template>
</xsl:stylesheet> Result Instance: elements and attributes in the fo: namespace <?xml version="1.0" encoding="UTF-8"?> <fo:table> <fo:table-column/> <fo:table-footer> <fo:table-row> <fo:table-cell font-weight="bold"> <fo:block> <fo:retrieve-table-marker retrieve-position-within-table="last-ending" retrieve-class-name="subtotal-caption"/> <fo:retrieve-table-marker retrieve-position-within-table="last-ending" retrieve-class-name="subtotal"/> </fo:block> </fo:table-cell> </fo:table-row> <fo:retrieve-table-marker retrieve-class-name="continued" retrieve-position-within-table="last-ending"/> </fo:table-footer> <fo:table-body> <fo:marker marker-class-name="continued"> <fo:table-row> <fo:table-cell> <fo:block>Table continued...</fo:block> </fo:table-cell> </fo:table-row> </fo:marker> <fo:marker marker-class-name="subtotal-caption"> Subtotal: </fo:marker> <fo:table-row> <fo:marker marker-class-name="subtotal">1</fo:marker> <fo:table-cell> <fo:block>1</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:marker marker-class-name="subtotal">3</fo:marker> <fo:table-cell> <fo:block>2</fo:block> </fo:table-cell> </fo:table-row> <!-- and so on... --> <fo:table-row> <fo:marker marker-class-name="subtotal">66</fo:marker> <fo:table-cell> <fo:block>11</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:marker marker-class-name="subtotal">78</fo:marker> <fo:marker marker-class-name="continued"/> <fo:marker marker-class-name="subtotal-caption"> Total: </fo:marker> <fo:table-cell> <fo:block>12</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> The following is meant as a note that shows by another example how the retrieve-table-marker funtions, and how the retrieve scope area set gets determined depending on the properties specified on the fo:retrieve-table-marker Consider this XSL-FO result instance: <fo:root xmlns:fo=http://www.w3.org/1999/XSL/Format> <fo:layout-master-set> <fo:simple-page-master master-name="page "> <fo:region-body region-name=" body" column-count="2"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page" <fo:flow flow-name=" body"> <fo:table> <fo:table-column/> <fo:table-header>...</fo:table-header> <fo:table-footer> <fo:table-row> <fo:table-cell> <fo:block> <fo:retrieve-table-marker retrieve-class-name="marker-name" retrieve-position-within-table="See table for values..." retrieve-boundary-within-table="See table for values..."/> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-footer> <fo:table-body> <fo:table-row> <fo:table-cell> <!-- cell 1 --> <fo:marker marker-class-name="marker-name"> <!-- marker 1 --> ... </fo:marker> ... </fo:table-cell> </fo:table-row> <!-- and so on ... --> <fo:table-row> <fo:table-cell> <!-- cell 14 --> <fo:marker marker-class-name="marker-name"> <!-- marker 14 --> ... </fo:marker> ... </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </fo:flow> </fo:page-sequence> </fo:root> Say the XSL-FO instance results in a paginated document with two page, that can be represented by this illustration: The following table shows the behaviour for retrieve-table-marker 1 depending on the values for the properties: retrieve-boundary-within-table retrieve scope area set primary retrieve scope area retrieve-position-within-table selected fo-marker table A1 A1 first-starting 1 first-including-carryover 1 last-starting 4 last-ending 3 table-fragment A1 A1 first-starting 1 first-including-carryover 1 last-starting 4 last-ending 3 page A1 A1 first-starting 1 first-including-carryover 1 last-starting 4 last-ending 3 The following table shows the behaviour for retrieve-table-marker 2 depending on the values for the properties: retrieve-boundary-within-table retrieve scope area set primary retrieve scope area retrieve-position-within-table selected fo-marker table A1, A2 A2 first-starting 5 first-including-carryover 4 last-starting 7 last-ending 7 table-fragment A2 A2 first-starting 5 first-including-carryover 4 last-starting 7 last-ending 7 page A1, A2 A2 first-starting 5 first-including-carryover 4 last-starting 7 last-ending 7 The following table shows the behaviour for retrieve-table-marker 3 depending on the values for the properties: retrieve-boundary-within-table retrieve scope area set primary retrieve scope area retrieve-position-within-table selected fo-marker table A1, A2, A3 A3 first-starting 8 first-including-carryover 8 last-starting 11 last-ending 10 table-fragment A3 A3 first-starting 8 first-including-carryover 8 last-starting 11 last-ending 10 page A3 A3 first-starting 8 first-including-carryover 8 last-starting 11 last-ending 10 The following table shows the behaviour for retrieve-table-marker 4 depending on the values for the properties: retrieve-boundary-within-table retrieve scope area set primary retrieve scope area retrieve-position-within-table selected fo-marker table A1, A2, A3, A4 A4 first-starting 12 first-including-carryover 11 last-starting 14 last-ending 14 table-fragment A4 A4 first-starting 12 first-including-carryover 11 last-starting 14 last-ending 14 page A3, A4 A4 first-starting 12 first-including-carryover 11 last-starting 14 last-ending 14 Common Usage: The fo:change-bar-begin fo:change-bar-end change-bar-class change-bar-class fo:change-bar-begin fo:change-bar-begin fo:change-bar-end change-bar-class fo:change-bar-begin The change region is decorated with a change bar down either the start or end edge of the column. That is, a change bar is generated along side of the areas generated within the region-body's non-conditional reference area by the formatting objects "under the change bar influence". All formatting objects after (in document order) this fo:change-bar-begin fo:change-bar-end fo:change-bar-begin The position, thickness, style, and color of the generated change bar is determined by the respective properties (see each property definition). Areas: The fo:change-bar-begin fo:page-sequence Constraints: An fo:change-bar-begin fo:change-bar-end change-bar-class fo:change-bar-begin fo:change-bar-end fo:change-bar-begin fo:change-bar-end Following this fo:change-bar-begin fo:change-bar-end fo:change-bar-end fo:change-bar-end The generated change bar areas run continuously down the start or end edge of the column within the region body. Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.33.1 change-bar-class 7.33.2 change-bar-color 7.33.3 change-bar-offset 7.33.4 change-bar-placement 7.33.5 change-bar-style 7.33.6 change-bar-width 7.33.18 z-index Common Usage: The fo:change-bar-end fo:change-bar-begin 6.13.2 fo:change-bar-begin Areas: The fo:change-bar-end fo:page-sequence Constraints: Preceding this fo:change-bar-end fo:change-bar-begin fo:change-bar-begin fo:change-bar-end Contents: EMPTY The following properties apply to this formatting object: 7.5 Common Accessibility Properties 7.7 Common Aural Properties 7.33.1 change-bar-class Common Usage: The fo:wrapper Areas: The fo:wrapper fo:wrapper id index-key fo:wrapper fo:wrapper If the sequence of areas returned to the fo:wrapper id index-key fo:wrapper inline-progression-dimension block-progression-dimension fo:wrapper Trait Derivation: Except for " id index-class index-key fo:wrapper Constraints: The order of concatenation of the sequences of areas returned by the children of the fo:wrapper fo:wrapper Contents: (#PCDATA| %inline; %block; An fo:wrapper fo:wrapper An fo:wrapper fo:marker An fo:wrapper fo:multi-properties fo:multi-properties This restriction applies recursively. Note: For example an fo:wrapper fo:wrapper fo:wrapper The following properties apply to this formatting object: 7.33.8 id 7.25.1 index-class 7.25.2 index-key Common Usage: The fo:marker fo:retrieve-marker fo:retrieve-table-marker dictionary headers showing the first and last word defined on the page. headers showing the page's chapter and section titles. subtotals e.g. that give a subtotal of numbers in rows up to the last row on the current page. table-continued captions that show whether or not a table is continued after the current page, or was a continuation from a previous page. The fo:marker Areas: The fo:marker fo:static-content fo:retrieve-marker fo:retrieve-table-marker retrieve-class-name marker-class-name fo:marker Constraints: An fo:marker fo:flow Note: Property values set on an fo:marker fo:marker fo:retrieve-marker fo:retrieve-table-marker It is an error if two or more fo:marker marker-class-name Contents: (#PCDATA| %inline; %block; An fo:marker fo:retrieve-marker fo:retrieve-table-marker fo:marker fo:marker fo:marker fo:retrieve-marker fo:retrieve-table-marker The following properties apply to this formatting object: 7.26.1 marker-class-name Common Usage: The fo:retrieve-marker fo:marker dictionary headers showing the first and last word defined on the page. headers showing the page's chapter and section titles. Areas: The fo:retrieve-marker fo:marker Trait Derivation: The properties and traits specified on the ancestors of the fo:retrieve-marker fo:marker fo:retrieve-marker Constraints: An fo:retrieve-marker fo:static-content The fo:retrieve-marker fo:marker fo:retrieve-marker The properties of the fo:retrieve-marker fo:marker fo:marker fo:marker fo:marker fo:flow fo:marker fo:marker Every area in the hierarchy is considered preferential to, or "better" than, any area below it in the hierarchy. When comparing two areas to determine which one is better, the terms "first" and "last" refer to the pre-order traversal order of the area tree. The term "containing page" is used here to mean the page that contains the first area generated or returned by the children of the retrieved fo:marker An area that has an attached fo:marker marker-class-name retrieve-class-name fo:retrieve-marker A qualifying area within a page is better than any qualifying area within a preceding page, except that areas do not have a position in the hierarchy if they are within pages that follow the containing page. If the " retrieve-boundary retrieve-boundary If the value of the " retrieve-position If the value of the " retrieve-position If the value of the " retrieve-position If the value of the " retrieve-position If the hierarchy of areas is empty, no formatting objects are retrieved. Contents: EMPTY The following properties apply to this formatting object: 7.26.3 retrieve-class-name 7.26.5 retrieve-position 7.26.4 retrieve-boundary Common Usage: The fo:retrieve-table-marker fo:marker Typical examples include: dictionary headers showing the first and last word defined in the part of the table on the current page. subtotals e.g. that give a subtotal of numbers in rows up to the last row on the current page. For pages with multiple columns and/or multiple regions, the subtotal is to be displayed at the bottom table-continued captions that show if a table is continued after the current page, or was a continuation from a previous page. Areas: The fo:retrieve-table-marker fo:marker Trait Derivation: The properties and traits specified on the ancestors of the fo:retrieve-table-marker fo:marker fo:retrieve-table-marker Constraints: An fo:retrieve-table-marker fo:table-header fo:table-footer fo:table fo:table-header fo:table-footer The fo:retrieve-table-marker fo:marker fo:retrieve-table-marker The fo:table fo:table-body fo:marker fo:table-header fo:table-footer fo:retrieve-table-marker retrieve scope area set retrieve-boundary-within-table retrieve scope area fo:marker primary retrieve scope area The properties of the fo:retrieve-table-marker fo:marker fo:marker fo:marker fo:marker fo:flow fo:marker fo:marker Every area in the hierarchy is considered preferential to, or "better" than, any area below it in the hierarchy. When comparing two areas to determine which one is better, the terms "first" and "last" refer to the pre-order traversal order of the area tree. An area that has an attached fo:marker marker-class-name retrieve-class-name fo:retrieve-table-marker If the value of the " retrieve-position-within-table If the value of the " retrieve-position-within-table If the value of the " retrieve-position-within-table If the value of the " retrieve-position-within-table If the hierarchy of areas is empty, no formatting objects are retrieved. Contents: EMPTY The following properties apply to this formatting object: 7.26.3 retrieve-class-name 7.26.6 retrieve-position-within-table 7.26.2 retrieve-boundary-within-table Common Usage: fo:number Areas: This flow object shall not generate an area Contents: Empty. The following properties apply to this formatting object: 7.28.1 Property reference-name 7.28.12 number-area-extent 7.28.16 level 7.28.5 reset-level 7.28.6 initial-value 7.28.7 interval 7.28.8 reset-value 7.28.9 display-when 7.28.10 display-position 7.28.11 number-align 7.17.8 text-align 7.18.4 text-decoration 7.9.1 font-family 7.9.3 font-size 7.9.6 font-style 7.9.8 font-weight 7.19.1 color 7.8.2 background-color 7.29.1 format 7.28.13 decimal-format 7.29.4 letter-value 7.28.14 ordinal 7.10.1 country 7.10.6 language 7.29.2 grouping-separator 7.29.3 grouping-size Common Usage fo:retrieve-number retrieves the current value of a fo:number fo:number fo:number Areas: The fo:retrieve-number formatting object generates and returns a normal inline-level area. Contents: EMPTY <fo:retrieve-number reference-name = string reference-value = [ expression ] format = [ string ] decimal-format = [ QName ] letter-value = [ "auto" | "alphabetic" | "traditional" | <implementater extension> ] ordinal = [ string ] country = [ "none" | country | "inherit" ] language = [ "none" | language | "inherit" ] grouping-separator = [ char ] grouping-size = [ number ] /> The following sections describe the properties of the XSL formatting objects. A number of properties are copied from the CSS2 specification. In addition, the CSS2 errata all apply. See [CSS2] Properties copied from CSS2 are placed in a box with wide black borders, and properties derived from CSS2 properties are placed in a box with thin black borders. The first nine sets of property definitions have been arranged into groups based on similar functionality and the fact that they apply to many formatting objects. In the formatting object descriptions the group name is referred to rather than referring to the individual properties. Common Accessibility Properties This set of properties are used to support accessibility. Common Absolute Position Properties This set of properties controls the position and size of formatted areas with absolute positioning. Common Aural Properties This group of properties controls the aural rendition of the content of a formatting object. They appear on all formatting objects that contain content and other formatting objects that group other formatting objects and where that grouping is necessary for the understanding of the aural rendition. An example of the latter is fo:table-and-caption Common Border, Padding, and Background Properties This set of properties controls the backgrounds and borders on the block-areas and inline-areas. Common Font Properties This set of properties controls the font selection on all formatting objects that can contain text. Common Hyphenation Properties Control of hyphenation for line-breaking, including language script Common Margin Properties-Block These properties set the spacing and indents surrounding block-level formatting objects. Common Margin Properties-Inline These properties set the spacing surrounding inline-level formatting objects. Common Relative Position Properties This set of properties controls the position of formatted areas with relative positioning. The remaining properties are used on a number of formatting objects. These are arranged into clusters of similar functionality to organize the property descriptions. In the formatting object description the individual properties are referenced. Area Alignment Properties Properties that control the alignment of inline-areas with respect to each other, particularly in relation to the mixing of different baselines for different scripts. In addition, there are two properties: " display-align relative-align Area Dimension Properties Properties that control the dimensions of both block-areas and inline-areas. Block and Line-related Properties Properties that govern the construction of line-areas and the placement of these line-areas within containing block-areas. Character Properties Properties that govern the presentation of text, including word spacing, letter spacing, and word space treatment and suppression. Color-related Properties Properties that govern color and color-model selection. Float-related properties Properties governing the placement of both side-floats (start- and end-floats) and before-floats ("top" floats in "lr-tb" writing-mode Keeps and Breaks Properties Properties that control keeps and breaks across pages, columns, and lines, including widow and orphan control and keeping content together. Layout-related Properties These properties control what is "top" (" reference-orientation overflow Leader and Rule Properties Properties governing the construction of leaders and horizontal rules. Properties for Dynamic Effects Properties governing the presentation and actions associated with links and other dynamic effects. Properties for Indexing Properties governing the creation and presentation of a "back of the book" index. Properties for Markers Properties governing the creation and retrieval of markers. Markers are used typically for "dictionary" headers and footers. Properties for Number to String Conversions Properties used in the construction of page-numbers and other formatter-based numbering. Pagination and Layout Properties These properties govern the sequencing, layout, and instantiation of pages, including: the page size and orientation, sizes of regions on the page-master, the identification and selection of page-masters, division of the body region into columns, and the assignment of content flows to layout regions. Table Properties Properties governing the layout and presentation of tables. Writing-mode-related Properties Properties related to various aspects of "directionality" and writing-mode Miscellaneous Properties These properties did not reasonably fit into any of the other categories. Shorthand Properties Shorthand properties that are part of the complete conformance set. Shorthands expand to the individual properties that may be used in place of shorthands. This section describes how to interpret property descriptions which incorporate the CSS2 definition of the same property. In CSS2, "boxes" are generated by "elements" in the same way that XSL areas are generated by formatting objects. Any references in the CSS2 definition to "boxes" are to be taken as referring to "areas" in the XSL area model, and where "element" appears in a CSS2 definition it should be taken to refer to a "formatting object". The CSS term, positioned element absolute-position relative-position Note: Since in XSL, the " position absolute-position relative-position The position and size of a box are normally taken to refer to the position and size of the area's content-rectangle. Additional correspondences between the CSS2 Box Model and the XSL Area Model are contained in the following table. Box Area top top edge of the content-rectangle padding padding-rectangle content area interior of the content-rectangle padding region between the content-rectangle and the padding-rectangle border region between the padding-rectangle and the border-rectangle background background containing block closest ancestor block-area that is not a line-area (see below for additional information when the "containing block" is used as a reference for percentage calculations) caption area generated by fo:table-caption inline box inline-area line box line-area block box block-area which is not a line-area page box page-area Box margins map to area traits in accordance with the description of how area traits are computed from property values in 5 Property Refinement / Resolution Allowed conversions for percentages, specified on the property definition, is typically in terms of the content-rectangle of some area. That area is determined as follows: For properties defined in CSS2 referring to the "containing block" the content-rectangle of the closest ancestor block-area that is not a line-area is used. For properties defined by XSL, the property definition specifies which area's content-rectangle is used. Exceptions to the rules above for determining which area is used are: When used on fo:root fo:page-sequence fo:title fo:title page-height page-width block-progression-dimension inline-progression-dimension reference-orientation writing-mode fo:title fo:title When used on fo:static-content fo:flow When used on fo:footnote-body fo:float When used on fo:float fo:float When the absolute-position When the absolute-position A relative-position In the case where A A In the case where A F F F If the formatting object generating the identified area generates a sequence of such areas the first area is used for the conversion. The following "datatypes" are used in the definitions of some CSS2 properties. These are not considered datatypes in XSL, as they are merely notational shorthand and expand as follows: Datatype Expansion <padding-width> <length> | <percentage> < border-width thin | medium | thick | <length> < border-style none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset <generic-voice> 'male' | 'female' | 'child' <specific-voice> values are specific instances (e.g., comedian, trinoids, carlos, lani) <margin-width> <length> | <percentage> | auto < background-color shorthand component of background-color < background-image shorthand component of background-image < background-repeat shorthand component of background-repeat < background-attachment shorthand component of background-attachment < background-position shorthand component of background-position < cue-before shorthand component of cue-before < cue-after shorthand component of cue-after < line-height shorthand component of line-height <language-country> <string>: a language country [RFC3066] XSL Definition: Value: <uri-specification> [<uri-specification>]* | none | inherit Initial: none Inherited: no Percentages: N/A Media: all Values have the following meanings: none The source document is transient, unknown, or unspecified. <uri-specification> A URI-specification giving a reference to the (sub)resource used as input to the stylesheet. This property provides a pointer back to the original XML document(s) used to create this formatting object tree, in accordance with the Dublin Core definition of "Source" ("A Reference to a resource from which the present resource is derived." See: http://purl.org/DC/documents/rec-dces-19990702.htm W3C Accessibility guidelines, http://www.w3.org/TR/WCAG20/ http://www.w3.org/TR/ATAG10/ http://www.w3.org/TR/UAAG10/ fo:root The URI-specification is useful for alternate renderers (aural readers, etc.) whenever the structure of the formatting object tree is inappropriate for that renderer. XSL Definition: Value: <string> | <uri-specification> | none | inherit Initial: none Inherited: no Percentages: N/A Media: all Values have the following meanings: none Indicates that no semantic tag is cited by this formatting object. <string> The value is a string representing a semantic identifier that may be used in rendering this formatting object. <uri-specification> A URI-specification, indicating an RDF resource [RDF] This property provides a hint for alternate renderers (aural readers, etc.) as to the role role To aid alternate renderers, the <string> value should be the qualified name (QName [XML Names] [XML Names 1.1] role This property is not inherited, but all subsidiary nodes of this formatting object that do not bear a role A Property Derived from a CSS2 Property. Value: auto | absolute | fixed | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values have the following meanings: auto There is no absolute-positioning constraint. Positioning is in accordance with the relative-position absolute The area's position (and possibly size) is specified with the " left right top bottom fixed The area's position is calculated according to the "absolute" model, but in addition, the area is fixed with respect to some reference. In the case of continuous media, the area is fixed with respect to the viewport (and doesn't move when scrolled). In the case of paged media, the area is fixed with respect to the page, even if that page is seen through a viewport (in the case of a print-preview, for example). Authors may wish to specify "fixed" in a media-dependent way. For instance, an author may want an area to remain at the top of the viewport on the screen, but not at the top of each printed page. The following additional restrictions apply for paged presentations: Only objects with absolute-position For other values any keep and break properties are ignored. The area generated is a descendant of the page-area where the first area from the object would have been placed had the object had absolute-position If the value is "absolute" or "fixed", any normal areas generated by the formatting object have their area-class changed to xsl-absolute xsl-fixed CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12 Value: <length> | <percentage> | auto | inherit Initial: auto Inherited: no Percentages: refer to height Media: visual CSS2 Reference: "bottom" property This property specifies how far a box's bottom margin bottom XSL modifications to the CSS definition: See definition of property left CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12 Value: <length> | <percentage> | auto | inherit Initial: auto Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "left" property This property specifies how far a box's left margin right left The values of the four (position offset) properties have the following meanings: auto The effect of this value depends on which of related properties have the value "auto" as well. See the sections on the width height <length> The offset is a fixed distance from the reference edge. <percentage> The offset is a percentage of the containing block's width left right height top bottom top bottom height height For absolutely positioned boxes, the offsets are with respect to the box's containing block. For relatively positioned boxes, the offsets are with respect to the outer edges of the box itself (i.e., the box is given a position in the normal flow, then offset from that position according to these properties). XSL modifications to the CSS definition: These properties set the position of the content-rectangle of the associated area. The left right top bottom If both " left right width width 5.3.4 Overconstrained Geometry top bottom height height 5.3.4 Overconstrained Geometry CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12 Value: <length> | <percentage> | auto | inherit Initial: auto Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "right" property This property specifies how far a box's right margin left right XSL modifications to the CSS definition: See definition of property left CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x12 Value: <length> | <percentage> | auto | inherit Initial: auto Inherited: no Percentages: refer to height Media: visual CSS2 Reference: "top" property This property specifies how far a box's top margin XSL modifications to the CSS definition: See definition of property left CSS2 Definition: Value: <angle> | [[ left-side | far-left | left right Initial: center Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "azimuth" property CSS2 Definition: Value: <uri-specification> | none | inherit Initial: none Inherited: no Percentages: N/A Media: aural CSS2 Reference: "cue-after" property XSL modifications to the CSS definition: The <uri> value has been changed to a <uri-specification>. CSS2 Definition: Value: <uri-specification> | none | inherit Initial: none Inherited: no Percentages: N/A Media: aural CSS2 Reference: "cue-before" property XSL modifications to the CSS definition: The <uri> value has been changed to a <uri-specification>. CSS2 Definition: Value: <angle> | below | level | above | higher | lower | inherit Initial: level Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "elevation" property CSS2 Definition: Value: <time> | <percentage> | inherit Initial: depends on user agent Inherited: no Percentages: see prose Media: aural CSS2 Reference: "pause-after" property CSS2 Definition: Value: <time> | <percentage> | inherit Initial: depends on user agent Inherited: no Percentages: see prose Media: aural CSS2 Reference: "pause-before" property CSS2 Definition: Value: <frequency> | x-low | low | medium | high | x-high | inherit Initial: medium Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "pitch" property CSS2 Definition: Value: <number> | inherit Initial: 50 Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "pitch-range" property CSS2 Definition: Value: <uri-specification> mix? repeat? | auto | none | inherit Initial: auto Inherited: no Percentages: N/A Media: aural CSS2 Reference: "play-during" property XSL modifications to the CSS definition: The <uri> value has been changed to a <uri-specification>. CSS2 Definition: Value: <number> | inherit Initial: 50 Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "richness" property CSS2 Definition: Value: normal | none | spell-out | inherit Initial: normal Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "speak" property CSS2 Definition: Value: once | always | inherit Initial: once Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "speak-header" property CSS2 Definition: Value: digits | continuous | inherit Initial: continuous Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "speak-numeral" property CSS2 Definition: Value: code | none | inherit Initial: none Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "speak-punctuation" property CSS2 Definition: Value: <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit Initial: medium Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "speech-rate" property CSS2 Definition: Value: <number> | inherit Initial: 50 Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "stress" property CSS2 Definition: Value: [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit Initial: depends on user agent Inherited: yes Percentages: N/A Media: aural CSS2 Reference: "voice-family" property CSS2 Definition: Value: <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit Initial: medium Inherited: yes Percentages: refer to inherited value Media: aural CSS2 Reference: "volume" property The following common-border-padding-and-background-properties are taken from CSS2. Those " border padding background writing-mode CSS2 Definition: Value: scroll | fixed | inherit Initial: scroll Inherited: no Percentages: N/A Media: visual CSS2 Reference: "background-attachment" property scroll The background-image fixed The background-image If a background-image Even if the image is fixed, it is still only visible when it is in the background padding User agents may treat fixed as scroll. However, it is recommended they interpret fixed correctly, at least for the HTML and BODY elements, since there is no way for an author to provide an image only for those browsers that support fixed. See the section on conformance for details. XSL modifications to the CSS definition: The last paragraph in the CSS description does not apply. CSS2 Definition: Value: <color> | transparent | inherit Initial: transparent Inherited: no Percentages: N/A Media: visual CSS2 Reference: "background-color" property This property sets the background transparent The underlying colors will shine through. <color> Any valid color specification. XSL modifications to the CSS definition: XSL adds an "rgb-icc" function (see 5.12.2 Color Functions CSS2 Definition: Value: <uri-specification> | none | inherit Initial: none Inherited: no Percentages: N/A Media: visual CSS2 Reference: "background-image" property This property sets the background background-image background-color background Values for this property are either <uri-specification>, to specify the image, or "none", when no image is used. none No image is specified. <uri-specification> XSL modifications to the CSS definition: The <uri> value has been changed to a <uri-specification>. A Property Derived from a CSS2 Property. Value: <percentage> | <length> | left right Initial: 0% Inherited: no Percentages: refer to the size of the padding-rectangle Media: visual If a " background-image <percentage> Specifies that a point, at the given percentage across the image from left-to-right, shall be placed at a point at the given percentage across, from left-to-right, the area's padding-rectangle. Note: For example with a value of 0%, the left-edge of the image is aligned with the left-edge of the area's padding-rectangle. A value of 100% places the right-edge of the image aligned with the right-edge of the padding-rectangle. With a value of 14%, a point 14% across the image is to be placed at a point 14% across the padding-rectangle. <length> Specifies that the left-edge of the image shall be placed at the specified length to the right Note: For example with a value of 2cm, the left-edge of the image is placed 2cm to the right left Same as 0%. center Same as 50%. right Same as 100%. XSL modifications to the CSS definition: "Left" and " right A Property Derived from a CSS2 Property. Value: <percentage> | <length> | top | center | bottom Initial: 0% Inherited: no Percentages: refer to the size of the padding-rectangle Media: visual If a " background-image <percentage> Specifies that a point, at the given percentage down the image from top-to-bottom, shall be placed at a point at the given percentage down, from top-to-bottom, the area's padding-rectangle. Note: For example with a value of 0%, the top-edge of the image is aligned with the top-edge of the area's padding-rectangle. A value of 100% places the bottom-edge of the image aligned with the bottom-edge of the padding-rectangle. With a value of 84%, a point 84% down the image is to be placed at a point 84% down the padding-rectangle. <length> Specifies that the top-edge of the image shall be placed at the specified length below the top-edge of the padding-rectangle. Note: For example with a value of 2cm, the top-edge of the image is placed 2cm below the top-edge of the padding-rectangle. top Same as 0%. center Same as 50%. bottom Same as 100%. XSL modifications to the CSS definition: "Top" and " bottom CSS2 Definition: Value: repeat | repeat-x | repeat-y | no-repeat | inherit Initial: repeat Inherited: no Percentages: N/A Media: visual CSS2 Reference: "background-repeat" property If a background padding repeat The image is repeated both horizontally and vertically. repeat-x The image is repeated horizontally only. repeat-y The image is repeated vertically only. no-repeat The image is not repeated: only one copy of the image is drawn. XSL modifications to the CSS definition: "Horizontal" and "vertical" are defined relative to the reference-orientation left right bottom Note: Thus for a rotated area the tiling is also rotated. It is, however, independent of the writing-mode. Writing-mode Relative Equivalent of a CSS2 Property. Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual Specifies the color of the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual Specifies the border-style See definition of property border-top-style Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual Specifies the border-width See definition of property border-top-width XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width border The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the border is-last 4.3 Spaces and Conditionality Note: If the border-style width Writing-mode Relative Equivalent of a CSS2 Property. Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual Specifies the color of the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual Specifies the border-style See definition of property border-top-style Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual Specifies the border-width See definition of property border-top-width XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width border The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the border is-first 4.3 Spaces and Conditionality If border-before-width border-before-width.length: the resultant computed value of the <length>. border-before-width.conditional: discard. If border-before-width width Note: If the border-style width CSS2 Definition: Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-bottom-color" property Specifies the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color CSS2 Definition: Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-bottom-style" property Specifies the border See definition of property border-top-style CSS2 Definition: Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-bottom-width" property Specifies the border width See definition of property border-top-width Writing-mode Relative Equivalent of a CSS2 Property. Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual Specifies the color of the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual Specifies the border-style See definition of property border-top-style Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual Specifies the border-width Note: If the border-style width See definition of property border-top-width XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width border The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the border is-last 4.3.1 Space-resolution Rules CSS2 Definition: Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-left-color" property Specifies the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color CSS2 Definition: Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-left-style" property Specifies the border See definition of property border-top-style CSS2 Definition: Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-left-width" property Specifies the border width See definition of property border-top-width CSS2 Definition: Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-right-color" property Specifies the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color CSS2 Definition: Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-right-style" property Specifies the border See definition of property border-top-style CSS2 Definition: Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-right-width" property Specifies the border width See definition of property border-top-width Writing-mode Relative Equivalent of a CSS2 Property. Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual Specifies the color of the border See definition of property border-top-color XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual Specifies the border-style See definition of property border-top-style Writing-mode Relative Equivalent of a CSS2 Property. Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual Specifies the border-width Note: If the border-style width See definition of property border-top-width XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width border The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the border is-first 4.3.1 Space-resolution Rules CSS2 Definition: Value: <color> | transparent | inherit Initial: the value of the ' color Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-top-color" property The ' border-color transparent The border width <color> Any valid color specification. If an element's border border color border XSL modifications to the CSS definition: The value "transparent" has been added to be consistent with the definition of the " border-color CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x9 Value: < border-style Initial: none Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-top-style" property The border border The properties defined in this section refer to the < border-style none No border. This value forces the computed value of ' border-width hidden Same as 'none', except in terms of border dotted The border dashed The border solid The border double The border border-width groove The border ridge The opposite of 'groove': the border inset The border outset The opposite of 'inset': the border All borders are drawn on top of the box's background. The color of borders drawn for values of 'groove', 'ridge', 'inset', and 'outset' should be based on the element's ' border-color border-color Conforming HTML user agents may interpret 'dotted', 'dashed', 'double', 'groove', 'ridge', 'inset', and 'outset' to be 'solid'. CSS2 Definition: Value: < border-width Initial: medium Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-top-width" property The border width width border border-width thin A thin border. medium A medium border. thick A thick border. <length> The border border The interpretation of the first three values depends on the user agent. The following relationships must hold, however: 'thin' <='medium' <= 'thick'. Furthermore, these widths must be constant throughout a document. Writing-mode Relative Equivalent of a CSS2 Property. Value: <padding-width> | <length-conditional> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual Specifies the width padding See definition of property padding-top XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width padding The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the padding is-last 4.3 Spaces and Conditionality Writing-mode Relative Equivalent of a CSS2 Property. Value: <padding-width> | <length-conditional> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual Specifies the width padding See definition of property padding-top XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width padding The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the padding is-first 4.3 Spaces and Conditionality CSS2 Definition: Value: <padding-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "padding-bottom" property Specifies the width padding See definition of property padding-top Writing-mode Relative Equivalent of a CSS2 Property. Value: <padding-width> | <length-conditional> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual Specifies the width padding See definition of property padding-top XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width padding The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the padding is-last 4.3.1 Space-resolution Rules CSS2 Definition: Value: <padding-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "padding-left" property Specifies the width padding See definition of property padding-top CSS2 Definition: Value: <padding-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "padding-right" property Specifies the width padding See definition of property padding-top Writing-mode Relative Equivalent of a CSS2 Property. Value: <padding-width> | <length-conditional> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual Specifies the width padding See definition of property padding-top XSL modifications to the CSS definition: The following value type has been added for XSL: <length-conditional> A compound value specifying the width padding The .length component is a <length>. It may not be negative. The .conditionality component may be set to "discard" or "retain" to control if the padding is-first 4.3.1 Space-resolution Rules CSS2 Definition: Value: <padding-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "padding-top" property <length> Specifies the width padding margin padding The following common-font-properties all are taken from CSS2. The reference to CSS2 is: http://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html Note: Although these properties reference the individual properties in the CSS specification, it is recommended that you read the entire font section of the CSS2 specification. CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x73 Value: [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit Initial: depends on user agent Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font-family" property This property specifies a prioritized list of font family names and/or generic family names. To deal with the problem that a single font may not contain glyphs to display all the characters in a document, or that not all fonts are available on all systems, this property allows authors to specify a list of fonts, all of the same style and size, that are tried in sequence to see if they contain a glyph for a certain character. This list is called a font set. The generic font family will be used if one or more of the other fonts in a font set is unavailable. Although many fonts provide the "missing character There are two types of font family names: <family-name> The name of a font-family <generic-family> The following generic families are defined: "serif", "sans-serif", "cursive", "fantasy", and "monospace". Please see the section on generic font families for descriptions of these families. Generic font family names are keywords, and therefore must not be quoted. XSL modifications to the CSS definition: <string> The names are syntactically expressed as strings. Note: See the expression language for a two-argument "system-font" function that returns a characteristic of a system-font. This may be used, instead of the " font XSL Definition: Value: auto | character-by-character | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual There is no XSL mechanism to specify a particular font; instead, a selected font selection criteria font-family font-style font-variant font-weight font-stretch font-size contextual characters character character Except for the fo:character font-family fo:character character fo:character character The strategy to be followed for selecting a font based on these criteria is specified by the " font-selection-strategy The " font-family If no matching font is found, a fallback selection is determined in a system-dependent manner. Note: This fallback may be to seek a match using a User Agent default " font-family If no match has been found for a particular character character character Values of the " font-selection-strategy auto The selection criterion given by the contextual characters is used in an implementation defined manner. Note: An implementation may, for example, use an algorithm where all characters in the result tree having the same set of font selection property values influence the selection, or it may only use the character fo:character character-by-character The set of contextual characters consists of the single character character fo:character Note: This selection strategy is the same as the strategy used to select fonts in CSS. Describes the criteria for selecting fonts and the different strategies for using these criteria to determine a selected font CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x74 Value: <absolute-size> | <relative-size> | <length> | <percentage> | inherit Initial: medium Inherited: yes, the computed value is inherited Percentages: refer to parent element's font size Media: visual CSS2 Reference: "font-size" property This property describes the size of the font when set solid. The font size corresponds to the em square, a concept used in typography. Note that certain glyphs may bleed outside their em squares. Values have the following meanings: <absolute-size> An <absolute-size> keyword refers to an entry in a table of font sizes computed and kept by the user agent. Possible values are: [ xx-small | x-small | small | medium | large | x-large | xx-large ] On a computer screen a scaling scaling scaling <relative-size> A <relative-size> keyword is interpreted relative to the table of font sizes and the font size of the parent element. Possible values are: [ larger | smaller ] For example, if the parent element has a font size of "medium", a value of "larger" will make the font size of the current element be "large". If the parent element's size is not close to a table entry, the user agent is free to interpolate between table entries or round off to the closest one. The user agent may have to extrapolate table values if the numerical value goes beyond the keywords. <length> A length value specifies an absolute font size (that is independent of the user agent's font table). Negative lengths are illegal. <percentage> A percentage value specifies an absolute font size relative to the parent element's font size. Use of percentage values, or values in "em's", leads to more robust and cascadable stylesheets. The actual value of this property may differ from the computed value due a numerical value on ' font-size-adjust Child elements inherit the computed ' font-size font-size-adjust XSL modifications to the CSS definition: XSL incorporates the following text from CSS2 15.5 ( http://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#algorithm" ' font-size margin font-size CSS2 Definition: Value: <number> | none | inherit Initial: none Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font-size-adjust" property In bicameral scripts, the subjective apparent size and legibility of a font are less dependent on their ' font-size For example, the popular font Verdana has an aspect value of 0.58; when Verdana's font size 100 units, its x-height is 58 units. For comparison, Times New Roman has an aspect value of 0.46. Verdana will therefore tend to remain legible at smaller sizes than Times New Roman. Conversely, Verdana will often look 'too big' if substituted for Times New Roman at a chosen size. This property allows authors to specify an aspect value for an element that will preserve the x-height of the first choice font in the substitute font. Values have the following meanings: none Do not preserve the font's x-height. <number> Specifies the aspect value. The number refers to the aspect value of the first choice font. The scaling y(a/a') = c where: y=" font-size a = aspect value of first-choice font a' = aspect value of available font c=" font-size This property allows authors to specify an aspect value for an element that will preserve the x-height of the first choice font in the substitute font. Font size adjustments take place when computing the actual value of " font-size CSS2 Definition: Value: normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font-stretch" property The ' font-stretch ultra-condensed ultra-condensed face extra-condensed extra-condensed face condensed condensed face semi-condensed semi-condensed face normal normal face semi-expanded semi-expanded face expanded expanded face extra-expanded extra-expanded face ultra-expanded ultra-expanded face wider The relative keyword "wider" sets the value to the next expanded value above the inherited value (while not increasing it above "ultra-expanded"). narrower The relative keyword "narrower" sets the value to the next condensed value below the inherited value (while not decreasing it below "ultra-condensed"). CSS2 Definition: Value: normal | italic | oblique | backslant | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font-style" property The " font-style normal Specifies a font that is classified as "normal" in the UA's font database. oblique Specifies a font that is classified as "oblique" in the UA's font database. Fonts with Oblique, Slanted, or Incline in their names will typically be labeled "oblique" in the font database. A font that is labeled "oblique" in the UA's font database may actually have been generated by electronically slanting a normal font. italic Specifies a font that is classified as "italic" in the UA's font database, or, if that is not available, one labeled 'oblique'. Fonts with Italic, Cursive, or Kursiv in their names will typically be labeled "italic". XSL modifications to the CSS definition: The following value type has been added for XSL: backslant Specifies a font that is classified as "backslant" in the UA's font database. XSL incorporates the following text from CSS2 15.5 ( http://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#algorithm 'italic' will be satisfied if there is either a face in the UA's font database labeled with the CSS keyword 'italic' (preferred) or 'oblique'. Otherwise the values must be matched exactly or font-style CSS2 Definition: Value: normal | small-caps | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font-variant" property In a small-caps font, the glyphs for lowercase letters look similar to the uppercase ones, but in a smaller size and with slightly different proportions. The " font-variant script normal Specifies a font that is not labeled as a small-caps font. small-caps Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font, for example by taking a normal font and replacing the lowercase letters by scaled uppercase characters. As a last resort, unscaled uppercase letter glyphs in a normal font may replace glyphs in a small-caps font so that the text appears in all uppercase letters. Insofar as this property causes text to be transformed to uppercase, the same considerations as for " text-transform XSL modifications to the CSS definition: XSL incorporates the following text from CSS2 15.5 ( http://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#algorithm 'normal' matches a font not labeled as 'small-caps'; 'small-caps' matches (1) a font labeled as 'small-caps', (2) a font in which the small caps are synthesized, or (3) a font where all lowercase letters are replaced by uppercase letters. A small-caps font may be synthesized by electronically scaling CSS2 Definition: Value: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font-weight" property The " font-weight normal Same as "400". bold Same as "700". bolder Specifies the next weight that is assigned to a font that is darker than the inherited one. If there is no such weight, it simply results in the next darker numerical value (and the font remains unchanged), unless the inherited value was "900", in which case the resulting weight is also "900". lighter Specifies the next weight that is assigned to a font that is lighter than the inherited one. If there is no such weight, it simply results in the next lighter numerical value (and the font remains unchanged), unless the inherited value was "100", in which case the resulting weight is also "100". <integer> These values form an ordered sequence, where each number indicates a weight that is at least as dark as its predecessor. Child elements inherit the computed value of the weight. XSL modifications to the CSS definition: XSL incorporates the following text from CSS2 15.5.1 ( http://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#q46 The association of other weights within a family to the numerical weight values is intended only to preserve the ordering of weights within that family. User agents must map names to values in a way that preserves visual order; a face mapped to a value must not be lighter than faces mapped to lower values. There is no guarantee on how a user agent will map fonts within a family to weight values. However, the following heuristics tell how the assignment is done in typical cases: If the font family already uses a numerical scale with nine values (as e.g., OpenType does), the font weights should be mapped directly. If there is both a face labeled Medium and one labeled Book, Regular, Roman or Normal, then the Medium is normally assigned to the '500'. The font labeled "Bold" will often correspond to the weight value '700'. If there are fewer then 9 weights in the family, the default algorithm for filling the "holes" is as follows. If '500' is unassigned, it will be assigned the same font as '400'. If any of the values '600', '700', '800', or '900' remains unassigned, they are assigned to the same face as the next darker assigned keyword, if any, or the next lighter one otherwise. If any of '300', '200', or '100' remains unassigned, it is assigned to the next lighter assigned keyword, if any, or the next darker otherwise. There is no guarantee that there will be a darker face for each of the ' font-weight XSL Definition: Value: none | < country Initial: none Inherited: yes Percentages: N/A Media: visual Values have the following meanings: none Indicates the country <country> A country-specifier in conformance with ISO 3166 ( [ISO3166-1] [ISO3166-2] [ISO3166-3] Specifies the country Note: This may affect line composition in a system-dependent way. XSL Definition: Value: false | true | inherit Initial: false Inherited: yes Percentages: N/A Media: visual Values have the following meanings: false Hyphenation may not be used in the line-breaking algorithm between characters with this value. true Hyphenation may be used in the line-breaking algorithm between characters with this value. Specifies whether hyphenation is allowed during line-breaking when the formatter is formatting this formatting object. It is implementation defined whether hyphenation may be used between a character XSL Definition: Value: < character Initial: The Unicode hyphen character Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <character> Specifies the Unicode character The styling properties of this character XSL Definition: Value: <number> | inherit Initial: 2 Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. The hyphenation-push-character-count XSL Definition: Value: <number> | inherit Initial: 2 Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. The hyphenation-remain-character-count left XSL Definition: Value: none | <language> | inherit Initial: none Inherited: yes Percentages: N/A Media: visual Values have the following meanings: none Indicates the language is unknown or is not significant to the proper formatting of this object. <language> A 3-letter code conforming to a [ISO639-2] [ISO639] Specifies the language to be used by the formatter in language-/locale-coupled services, such as line-justification strategy, line-breaking, and hyphenation. Note: This may affect line composition in a system-dependent way. Note: ISO 639 2-letter and ISO 639-2 terminology 3-letter codes are also used in the language component of [RFC3066] XSL Definition: Value: none | auto | < script Initial: auto Inherited: yes Percentages: N/A Media: visual Values have the following meanings: auto Indicates that the script character script For fo:character character character character character script Note: This provides the automatic differentiation between Kanji, Katakana, Hiragana, and Romanji used in JIS-4051 and similar services in some other countries/languages. none Indicates the script <script> A script [ISO15924] Specifies the script Note: This may affect line composition in a system-dependent way. XSL Definition: Value: <number> Initial: 1 Applies to: all elements Inherited: yes Percentages: N/A Media: visual The "hyphenation-push-syllable-count" property specifies the minimum number of syllables permitted in a hyphenated word after the hyphenation character. Formatters must not insert hyphens during line breaking in places that would result in word fragments violating this property. Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. XSL Definition: Value: <number> Initial: 1 Applies to: all elements Inherited: yes Percentages: N/A Media: visual The hyphenation-remain-syllable-count specifies the minimum number of syllables in a hyphenated word before the hyphenation character. This is the minimum number of syllables in the word left on the line ending with the hyphenation character. Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. XSL Definition: Value: <number> Initial: 1 Applies to: all elements Inherited: yes Percentages: N/A Media: visual The "syllable-widows" property specifies the minimum number of syllables in the last line-area of a block-area. Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. The syllable-widows specifies the minimum number of syllables in the last line-area of the block-area for which it is in effect. XSL Definition: Value: <uri-specification> | none | inherit Initial: none Applies to: all elements Inherited: no Percentages: N/A Media: visual This property specifies a set of hyphenation-exception words to be used by the hyphenation algorithm. Values for this property are as follows: none No exceptions are used. <uri-specification> A URI specification giving a reference to the resource containing the exception words. Note: We have not defined a format for this resource. XSL Definition: Value: <number> Initial: 0 Applies to: all elements Inherited: yes Percentages: N/A Media: visual The "word-widows" property specifies the minimum number of words or partial words in the last line-area of a block-area. When a word is hyphenated, the remaining portion, a partial word, brought down onto the next line, is to be considered to be a whole word for the purpose of counting words. Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. <percentage> The permitted minimum deficit is a percentage of the containing block width. The "word-widows" property specifies the minimum number of words in the last line-area of the block-area for which it is in effect. XSL Definition: Value: <length> Initial: 1 Applies to: all elements Inherited: yes Percentages: refer to width of containing block Media: visual The min-length-of-last-line Values have the following meanings: <length> Specifies a fixed minimum line length. <percentage> The minimum line length is a percentage of the containing block width. The value must not be negative XSL Definition: Value: <length> | <percentage> | inherit Initial: 0pt Applies to: fo:block Inherited: yes Percentages: refer to width of containing block Media: visual The last-line-minimum-deficit property specifies a length (x) for the minimum line length deficit for the last line-area of a block-area. More precisely, it specifies a constraint on the last line-area child of the last block-area L generated and returned by the formatting object, such that the inline L is either equal to the available width (w) in the inline-dimension (as the term is used in the "justify" value of "text-align"), or is less than or equal to w minus x. Values for the property have the following meaning: <length> The minimum line length deficit is a fixed length. <percentage> The minimum line length deficit is a percentage of the containing block width. The value must not be negative. XSL Definition: Value: <length> | <percentage> | inherit Initial: 100% Applies to: all elements Inherited: yes Percentages: refer to width of containing block Media: visual This property specifies a length (x) for the hyphenation margin for a block. More precisely, it specifies a limitation on the effect of a "hyphenate" value of "true"; hyphenation may be used in the line-breaking algorithm within a given line-area when otherwise the inline-dimension of the line area would be less than the available width in the inline-dimension by an amount greater than x. Values have the following meanings: <length> The permitted minimum deficit is a fixed length. <percentage> The permitted minimum deficit is a percentage of the containing block width. The value must not be negative. XSL Definition: Value: <length> | <percentage> | inherit Initial: 0pt Inherited: yes Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <length> The " end-indent <percentage> The " end-indent inline-progression-dimension For each block-area generated by this formatting object, specifies the distance from the end-edge of the content-rectangle of that block-area to the end-edge of the content-rectangle of the containing reference-area. This property may have a negative value, which indicates an outdent. CSS2 Definition: Value: <margin-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "margin-bottom" property Margin-width may be one of the following: auto See the CSS2 section on computing widths and margins for behavior. <length> Specifies a fixed width. <percentage> The percentage is calculated with respect to the width margin-top margin-bottom Negative values for margin Sets the bottom margin XSL modifications to the CSS definition: Margin-bottom is provided for compatibility with CSS. Details on the mapping of CSS " margin 5 Property Refinement / Resolution CSS2 Definition: Value: <margin-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "margin-left" property Margin-width may be one of the following: auto See the CSS2 section on computing widths and margins for behavior. <length> Specifies a fixed width. <percentage> The percentage is calculated with respect to the width Negative values for margin Sets the left margin XSL modifications to the CSS definition: Margin-left is provided for compatibility with CSS. Details on the mapping of CSS " margin 5 Property Refinement / Resolution CSS2 Definition: Value: <margin-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "margin-right" property Margin-width may be one of the following: auto See the CSS2 section on computing widths and margins for behavior. <length> Specifies a fixed width. <percentage> The percentage is calculated with respect to the width Negative values for margin Sets the right margin XSL modifications to the CSS definition: Margin-right is provided for compatibility with CSS. Details on the mapping of CSS " margin 5 Property Refinement / Resolution CSS2 Definition: Value: <margin-width> | inherit Initial: 0pt Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "margin-top" property Margin-width may be one of the following: auto See the CSS2 section on computing widths and margins for behavior. <length> Specifies a fixed width. <percentage> The percentage is calculated with respect to the width margin-top margin-bottom Negative values for margin Sets the top margin XSL modifications to the CSS definition: Margin-top is provided for compatibility with CSS. Details on the mapping of CSS " margin 5 Property Refinement / Resolution XSL Definition: Value: <space> | inherit Initial: space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Inherited: no Percentages: N/A (Differs from margin-bottom Media: visual Values have the following meanings: <space> Specifies the minimum, optimum, and maximum values for the space after any areas generated by this formatting object and the conditionality and precedence Specifies the value of the space-specifier for the space after the areas generated by this formatting object. A definition of space-specifiers, and the interaction between space-specifiers occurring in sequence are given in 4.3 Spaces and Conditionality Note: A common example of such a sequence is the " space-after space-before XSL Definition: Value: <space> | inherit Initial: space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Inherited: no Percentages: N/A (Differs from margin-top Media: visual Values have the following meanings: <space> Specifies the minimum, optimum, and maximum values for the space before any areas generated by this formatting object and the conditionality and precedence Specifies the value of the space-specifier for the space before the areas generated by this formatting object. A definition of space-specifiers, and the interaction between space-specifiers occurring in sequence are given in 4.3 Spaces and Conditionality Note: A common example of such a sequence is the " space-after space-before XSL Definition: Value: <length> | <percentage> | inherit Initial: 0pt Inherited: yes Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <length> The " start-indent <percentage> The " start-indent inline-progression-dimension For each block-area generated by this formatting object, specifies the distance from the start-edge of the content-rectangle of the containing reference-area to the start-edge of the content-rectangle of that block-area. This property may have a negative value, which indicates an outdent. margin-bottom 7.11.2 margin-bottom margin-left 7.11.3 margin-left margin-right 7.11.4 margin-right margin-top 7.11.5 margin-top XSL Definition: Value: <space> | <percentage> | inherit Initial: space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Inherited: no Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <space> The " space-end <percentage> The " space-end inline-progression-dimension Specifies the minimum, optimum, and maximum values for the space after any areas generated by this formatting object and the conditionality and precedence Specifies the value of the space-specifier for the space after the areas generated by this formatting object. A definition of space-specifiers, and the interaction between space-specifiers occurring in sequence are given in 4.3 Spaces and Conditionality Note: A common example of such a sequence is the " space-end space-start XSL Definition: Value: <space> | <percentage> | inherit Initial: space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Inherited: no Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <space> The " space-start <percentage> The " space-start inline-progression-dimension Specifies the minimum, optimum, and maximum values for the space before any areas generated by this formatting object and the conditionality and precedence Specifies the value of the space-specifier for the space before the areas generated by this formatting object. A definition of space-specifiers, and the interaction between space-specifiers occurring in sequence are given in 4.3 Spaces and Conditionality Note: A common example of such a sequence is the " space-end space-start top 7.6.5 top bottom 7.6.2 bottom left 7.6.3 left right 7.6.4 right A Property Derived from a CSS2 Property. Value: static | relative | inherit Initial: static Inherited: no Percentages: N/A Media: visual Values have the following meanings: static The area is normally stacked. relative The area's position is determined as if it was normally stacked. Only during rendering is the area rendered offset relative to this position. The fact that one area is relatively positioned does not influence the position on any other area. For areas that break over a page boundary, only the portion that would have been on a given page originally is included in the repositioned area on that page. Any portion of the repositioned area that was originally on the current page, but falls off the current page due to repositioning is "off" (typically clipped), thus does not fall onto any other page. The common wrap properties are used to express the runaround interaction between regions. Regions interact based on their z-index values. Regions with higher z-index are considered overlapping regions with lower z-index. XSL Definition: Value: skip | path | none Initial: skip Percentages: N/A Applies to: fo:region Inherited: no Media: visual Use the "wrap" property to specify flow run-around. Values have the following meanings: skip This is the default behavior. The content in the flow will skip the entire intrusion area continuing from the first available un-intruded allocation area Figure 57. path The runaround contour is determined following the wrap-path property strategy Figure 58. none No runaround is applied. If regions are overlapping their content will overlap. Figure 59. XSL Definition: Value: shape | bounding-box | auto Initial: shape Percentages: N/A Applies to: fo:region Inherited: no Media: visual When two or more shaped areas interact, the "wrap-path" property determines how text and other inline objects in one area flow around the shape of the other area. Values have the following meanings: shape This is the default behavior. The path is custom and it is indicated using the shape-path-specifier within the shape-assignment for the region. If there is no shape-map associated with the intruded region the behaviour is defaulted to bounding-box. bounding-box The path is determined by the bounding-box of the overlapping region auto The path is inferred as follows: clip-path embedded in the content of the intruding region. path detection through image color threshold or alpha-channel (transparency) in the content in the intruding region. If neither of these are available, or the implementation does not support them, the path is defaulted to the bounding-box. XSL Definition: Value: all | start | end | inside | outside | largest | smallest Initial: shape Percentages: N/A Applies to: fo:region Inherited: no Media: visual The "wrap-side" property indicates what strategy should be applied for the runaround. Values have the following meanings: all This is the default behavior. Runaround is performed, if possible, on both sides of the intruding area. Figure 60. start The run-around is performed only in the start side of the intruding area. Figure 61. end The runaround is performed only in the end side of the intruding area. Figure 62. inside The runaround is performed only in the inside of the intruded area. The inside is the side nearer to the spread "spine". The spread spine is considered the contact line between the two pages forming the spread. If the region is not part of a spread the inside value is interpreted as nearest to the binding edge, as for text-align Figure 63. outside The runaround is performed only in the outside of the intruded area. The outside is determined as elsewhere, e.g. text-align Figure 64. largest The runaround is performed only in the largest area available as result of the intrusion. Figure 65. smallest The runaround is performed only in the smallest area available as result of the intrusion. Figure 66. What about V-shaped or W-shaped intrusions? XSL Definition: Value: auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length> | inherit Initial: auto Inherited: no Percentages: see prose Media: visual The " alignment-adjust alignment-adjust alignment-baseline Values for the property have the following meaning: auto For a glyph, the alignment-point is the intersection of the start-edge of the allocation-rectangle of the glyph-area and the block-progression-direction position of the alignment-point from the font as specified in 5.5.8 Fonts and Font Data alignment-baseline dominant-baseline dominant-baseline fo:external-graphic fo:instream-foreign-object baseline The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the dominant-baseline before-edge The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "before-edge" baseline of the area. text-before-edge The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "text-before-edge" baseline of the area. central The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "central" baseline of the area. middle The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "middle" baseline of the area. after-edge The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "after-edge" baseline of the area. text-after-edge The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "text-after-edge" baseline of the area. ideographic The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "ideographic" baseline of the area. alphabetic The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "alphabetic" baseline of the area. hanging The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "hanging" baseline of the area. mathematical The alignment-point is at the intersection of the start-edge of the allocation-rectangle and the "mathematical" baseline of the area. <percentage> The computed value of the property is this percentage multiplied by the area's computed " height fo:external-graphic fo:instream-foreign-object font-size fo:character line-height dominant-baseline shift-direction shift-direction dominant-baseline <length> The alignment-point is on the start-edge of the allocation-rectangle of the area being aligned. Its position along the start-edge relative to the intersection of the dominant-baseline shift-direction shift-direction dominant-baseline Implementations must support at least one of the " alignment-adjust XSL Definition: Value: auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit Initial: auto Inherited: no Percentages: N/A Media: visual This property specifies how an object is aligned with respect to its parent. That is, to which of the parent's baselines the alignment-point of this object is aligned. The alignment-adjust alignment-baseline block-progression-direction Values have the following meanings: auto The computed value depends on the kind of object on which it is being used. For fo:character dominant-baseline script character script script dominant-baseline baseline The alignment-point of the object being aligned is aligned with the dominant-baseline before-edge The alignment-point of the object being aligned is aligned with the "before-edge" baseline of the parent area. text-before-edge The alignment-point of the object being aligned is aligned with the "text-before-edge" baseline of the parent area. central The alignment-point of the object being aligned is aligned with the "central" baseline of the parent area. middle The alignment-point of the object being aligned is aligned with the "middle" baseline of the parent area. after-edge The alignment-point of the object being aligned is aligned with the "after-edge" baseline of the parent area. text-after-edge The alignment-point of the object being aligned is aligned with the "text-after-edge" baseline of the parent area. ideographic The alignment-point of the object being aligned is aligned with the "ideographic" baseline of the parent area. alphabetic The alignment-point of the object being aligned is aligned with the "alphabetic" baseline of the parent area. hanging The alignment-point of the object being aligned is aligned with the "hanging" baseline of the parent area. mathematical The alignment-point of the object being aligned is aligned with the "mathematical" baseline of the parent area. Implementations must support at least one of the " alignment-baseline XSL Definition: Value: <length> Initial: 0pt Applies to: fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container Inherited: yes Percentages: Not applicable. Media: visual When this property is set and non-zero, the block dimension of each generated area must be rounded up to the nearest multiple of the property value. A value of zero means that there is no such constraint on the area block dimension. The block dimension of each generated area should be rounded up to the nearest greater value that is an integer multiple of the specified length. The difference between the original block dimension and the rounded one MUST space-before space-after For example, suppose that a region has block-unit="12pt". Each block <fo:block line-height="10pt" line-stacking-strategy="font-height" >Text ......</fo:block> will have a block dimension equal to N * 12pt (the block dimension of each line area is not changed). So, if the block creates eight line areas, the first two placed at the bottom of a page and the other six at the beginning of the next page, the first block area will be given a block dimension equal to 24pt (with a 4pt space-before) and the second block will have a 60pt block dimension with no extra space. The property applies to fo:region-* and fo:block-container fo:flow fo:static-content The intended consequence is that lines of text on facing pages will line up, and also that show-through of lines printed on the other side of a page will be reduced, because the lines of text are printed in corresponding places on each side of the paper. XSL Definition: Value: baseline | sub | super | <percentage> | <length> | inherit Initial: baseline Inherited: no Percentages: refers to the " line-height Media: visual The " baseline-shift dominant-baseline dominant-baseline nominal-font line-height When the value of " baseline-shift font-size dominant-baseline font-size baseline-shift Values for the property have the following meaning: baseline There is no baseline shift; the dominant-baseline sub The dominant-baseline super The dominant-baseline <percentage> The computed value of the property is this percentage multiplied by the computed " line-height dominant-baseline shift-direction shift-direction <length> The dominant-baseline shift-direction shift-direction Note: Although it may seem that " baseline-shift alignment-adjust alignment-adjust line-height baseline-shift line-height line-height font-size Using the " alignment-adjust baseline-shift baseline-shift baseline-shift XSL Definition: Value: auto | before | center | after | inherit | justify Initial: auto Inherited: yes Percentages: N/A Media: visual This property specifies the alignment, in the block-progression-direction, of the areas that are the children of a reference-area. Values for the property have the following meaning: auto If the relative-align before The before-edge of the allocation-rectangle of the first child area is placed coincident with the before-edge of the content-rectangle of the reference-area. center The child areas are placed such that the distance between the before-edge of the allocation-rectangle of the first child area and the before-edge of the content-rectangle of the reference-area is the same as the distance between the after-edge of the allocation-rectangle of the last child area and the after-edge of the content-rectangle of the reference-area. after The after-edge of the allocation-rectangle of the last child area is placed coincident with the after-edge of the content-rectangle of the reference-area. justify For each reference area generated by a region, the before-edge of the its content-rectangle is placed coincident with the before-edge of the allocation-rectangle of the first child area, and the after-edge of the its content-rectangle should be placed coincident with the after-edge of the allocation-rectangle of the last child area. If the application is not able to achieve copyfitting and the accumulated block-dimension of areas is less the the block-dimension of the reference area (which could happen either for lack of elasticity in the content or for partial support by the formatter), the areas are placed as if "auto" had been specified. Note that for block-containers and table cells, the available space (height and width) must be known in advance in order for the implementation to be able to fit the text into that space. XSL Definition: Value: auto | before | center | after | inherit | justify Initial: auto Inherited: yes Percentages: N/A Media: visual This property specifies in the block-direction, of the areas that are the children of a reference-area. It is used to express the alignment of a region in the last page or in any page ending with a forced break. Values have the following meanings: auto If the relative-align relative-align before The before-edge of the allocation-rectangle of the first child area is placed coincident with the before-edge of the content-rectangle of the reference-area. center The child areas are placed such that the distance between the before-edge of the allocation-rectangle of the first child area and the before-edge of the content-rectangle of the reference-area is the same as the distance between the after-edge of the allocation-rectangle of the last child area and the after-edge of the content-rectangle of the reference-area. after The after-edge of the allocation-rectangle of the last child area is placed coincident with the after-edge of the content-rectangle of the reference-area. justify For each reference area generated by a region, the before-edge of the its content-rectangle is placed coincident with the before-edge of the allocation-rectangle of the first child area, and the after-edge of the its content-rectangle should be placed coincident with the after-edge of the allocation-rectangle of the last child area. If the application is not able to achieve copyfitting and the accumulated block-dimension of areas is less the the block-dimension of the reference area (which could happen either for lack of elasticity in the content or for partial support by the formatter), the areas are placed as if "auto" had been specified. XSL Definition: Value: auto | before | center | after | inherit Initial: auto Applies to: fo:region-body Inherited: no Percentages: Not applicable. Media: visual Specifies how to align the last column of a multi-column region. This property specifies the alignment, in the block-direction, of the areas that are the children of a reference-area. Values for the property have the following meaning: auto If the relative-align relative-align before The before-edge of the allocation-rectangle of the first child area is placed coincident with the before-edge of the content-rectangle of the reference-area; center The child areas are placed such that the distance between the before-edge of the allocation-rectangle of the first child area and the before-edge of the content-rectangle of the reference-area is the same as the distance between the after-edge of the allocation-rectangle of the last child area and the after-edge of the content-rectangle of the reference-area; after The after-edge of the allocation-rectangle of the last child area is placed coincident with the after-edge of the content-rectangle of the reference-area. XSL Definition: Value: auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge | inherit Initial: auto Inherited: no (see prose) Percentages: N/A Media: visual The " dominant-baseline dominant-baseline Note: The derived baseline-table is constructed using a baseline-table in the font that corresponds to the computed value of the " writing-mode Values for the property have the following meaning: auto If this property occurs on a block-level formatting object, then the computed value depends on the value of the " script script writing-mode writing-mode script script script font-size font-size Otherwise, if this property is not on a block-level formatting object, then the baseline-identifier for the dominant baseline, the derived baseline-table, and baseline-table font-size baseline-shift font-size font-size dominant-baseline font-size use-script The " script script font-size font-size no-change The dominant-baseline font-size reset-size The dominant-baseline font-size font-size font-size ideographic The baseline-identifier for the dominant-baseline font-size font-size alphabetic The baseline-identifier for the dominant-baseline font-size font-size hanging The baseline-identifier for the dominant-baseline font-size font-size mathematical The baseline-identifier for the dominant-baseline font-size font-size central The baseline-identifier for the dominant-baseline font-size font-size middle The baseline-identifier for the dominant-baseline font-size font-size text-after-edge The baseline-identifier for the dominant-baseline font-size font-size Note: Using the following priority order of baseline-table names: "alphabetic", "ideographic", "hanging", "mathematical" is probably a reasonable strategy for determining which font baseline-table to use. text-before-edge The baseline-identifier for the dominant-baseline font-size font-size Note: Using the following priority order of baseline-table names: 'alphabetic', 'ideographic', 'hanging', 'mathematical' is probably a reasonable strategy for determining which font baseline-table to use. If there is no baseline-table in the nominal font or if the baseline-table lacks an entry for the desired baseline, then the User Agent may use heuristics to determine the position of the desired baseline. Implementations must support at least one of the " dominant-baseline XSL Definition: Value: before | baseline | inherit Initial: before Inherited: yes Percentages: N/A Media: visual This property specifies the alignment, in the block-progression-direction, between two or more areas. If the " display-align Values for the property have the following meaning: before For an fo:table-cell For an fo:list-item fo:list-item-label fo:list-item fo:list-item-body fo:list-item baseline For an fo:table-cell dominant-baseline fo:table-row Note: That is, for all applicable cells the baseline of all the first lines are all aligned and placed the minimum distance down in the block-progression-direction. It should be noted that the start-edges of the content-rectangles of the cells need not align. For an fo:list-item fo:list-item-label fo:list-item-body XSL Definition: Value: before | baseline | end | inherit Initial: before Applies to: fo:marginalia Inherited: yes Percentages: Not applicable. Media: visual Specifies the alignment of the marginalia with respect to the text to which it refers. This property specifies the alignment, in the block-direction, between two areas. Values have the following meanings: before The before-edge of the marginalia-body-area is aligned with the before-edge of the anchor-area. baseline The distance between the baseline of the marginalia-body-area is the same as the distance between the baseline of th anchor-area extension-region-start region. end The after-edge of the marginalia-body-area is aligned with the after-edge of the anchor-area. XSL Definition: Value: <number> | <distance> Initial: none Inherited: no Applies to: fo:flow-assignment Percentages: N/A Media: all Values have the following meanings: <name> The name of a flow. The given name must exist as the flow-name attribute of a flow in the same flow-map; the property indicates that content in the named flow will be extracted and positioned alongside content in the flow being defined. The name specified in the flow-map-dependency-reference attribute will normally not be referenced in a flow-source-list in the same flow-assignment, but this is not forbidden, and in that case some or all of the flow content will be duplicated. XSL Definition: Value: <name> Initial: none Inherited: no Applies to: All fo flow elements Percentages: N/A Media: all Values have the following meanings: <name> An arbitrary identifer used to correlate content placed in separate flows. It allows references to this formatting object by other objects. For the purpose of parallel formatting in the block direction, the start of the generated area is used as the alignment point. If there is no generated area, the point at which the element with this property occurred within its container is used. There must be a corresponding dependency-content-end The dependency-content-begin Value: <name> Initial: none Inherited: no Applies to: All fo flow elements Percentages: N/A Media: all Values have the following meanings: <name> An arbitrary identifer used to correlate content placed in separate flows. It allows references to this formatting object by other objects. For the purpose of parallel formatting in the block direction, the end of the generated area is used as the alignment point. If there is no generated area, the point at which the element with this property occurred within its container is used. The given name must match value of a dependency-content-begin The dependency-content-end XSL Definition: Value: none | all | widows | orphans Initial: none Inherited: yes Applies to: All fo flow elements Percentages: N/A Media: all The keep-with-dependent-content Values have the following meanings: none No keep is applied, and the non dependent content is forced to be moved outside the dependency boundaries. all Forces all the non dependent content to be included in the dependency boundaries. widows Forces all the generated widows to be included in the dependency boundaries. orphans Forces all the generated orphans to be included in the dependency boundaries. XSL Definition: Value: [ any | <percentage> ]* | inherit Initial: any Inherited: yes Percentages: intrinsic height Media: visual A sequence of tokens, each specifying an allowed scale-factor value. Tokens have the following meanings: any No constraint on the scale-factor. <percentage> Specifies a constraint on the scale-factor to match the specified value. Specifies a list of constraints on the scale-factor values that may be used when scaling height scaling Note: It is recommended to include "any" in the list for applications where scrolling is not desired or available. XSL Definition: Value: [ any | <percentage> ]* | inherit Initial: any Inherited: yes Percentages: intrinsic width Media: visual A sequence of tokens, each specifying an allowed scale-factor value. Tokens have the following meanings: any No constraint on the scale-factor. <percentage> Specifies a constraint on the scale-factor to match the specified value. Specifies a list of constraints on the scale-factor values that may be used when scaling width scaling Note: It is recommended to include "any" in the list for applications where scrolling is not desired or available. Writing-mode Relative Equivalent of a CSS2 Property. Value: auto | <length> | <percentage> | <length-range> | inherit Initial: auto Inherited: no Percentages: see prose Media: visual This property specifies the block-progression-dimension This property does not apply when the " line-height Values have the following meanings: auto No constraint is imposed by this property. The block-progression-dimension Specifying block-progression-dimension block-progression-dimension.minimum="auto" block-progression-dimension.optimum="auto" block-progression-dimension.maximum="auto" <length> Specifies a fixed block-progression-dimension. Specifying block-progression-dimension block-progression-dimension.minimum=<length> block-progression-dimension.optimum=<length> block-progression-dimension.maximum=<length> <percentage> Specifies a percentage block-progression-dimension. The percentage is calculated with respect to the corresponding dimension of the closest area ancestor that was generated by a block-level formatting object. If that dimension is not specified explicitly (i.e., it depends on content's block-progression-dimension Specifying block-progression-dimension block-progression-dimension.minimum=<percentage> block-progression-dimension.optimum=<percentage> block-progression-dimension.maximum=<percentage> <length-range> Specifies the dimension as a length-range, consisting of: block-progression-dimension.optimum This is the preferred dimension of the area created; if minimum and maximum are identical, the area is of a fixed dimension. If they are, respectively, smaller and larger than optimum, then the area may be adjusted in dimension within that range. A value of "auto" may be specified for optimum, indicating that there is no preferred dimension, but that the intrinsic or resolved dimension of the area should be used. If minimum and/or maximum are not also auto, then the dimension shall be constrained between those limits. block-progression-dimension.minimum block-progression-dimension.maximum A value of "auto" may be specified for block-progression-dimension.maximum. This indicates that there is no absolute maximum limit, and the object may be sized to its intrinsic size. Negative values for block-progression-dimension.minimum, block-progression-dimension.optimum, and block-progression-dimension.maximum are invalid and are treated as if "0pt" had been specified. If the value of block-progression-dimension.optimum is "auto" and the computed value of block-progression-dimension.minimum is greater than the computed value of block-progression-dimension.maximum the block-progression-dimension.minimum is treated as if the value of block-progression-dimension.maximum had been specified. XSL Definition: Value: auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit | <length> | <percentage> | inherit Initial: auto Inherited: no Percentages: intrinsic height Media: visual Values have the following meanings: auto The content-height scale-to-fit The largest scaling-factor permitted will be applied to the content so that the scaled content-height height scale-down-to-fit If the intrinsic content-height height content-height content-height height scale-up-to-fit If the intrinsic content-height height content-height content-height height <length> An absolute size for the content-height. This value implies a certain scaling <percentage> A percentage representing a scaling Specifies the content-height XSL Definition: Value: auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit | <length> | <percentage> | inherit Initial: auto Inherited: no Percentages: intrinsic width Media: visual Values have the following meanings: auto The content-width scale-to-fit The largest scaling-factor permitted will be applied to the content so that the scaled content-width width scale-down-to-fit If the intrinsic content-width width content-width content-width width scale-up-to-fit If the intrinsic content-width width content-width content-width width <length> An absolute size for the content-width. This value implies a certain scaling <percentage> A percentage representing a scaling Specifies the content-width CSS2 Definition: Value: <length> | <percentage> | auto | inherit Initial: auto Inherited: no Percentages: see prose Media: visual CSS2 Reference: "height" property This property specifies the content height This property does not apply to non-replaced inline-level elements. The height line-height Values have the following meanings: auto The height <length> Specifies a fixed height. <percentage> Specifies a percentage height. The percentage is calculated with respect to the height height height Negative values for ' height XSL modifications to the CSS definition: In XSL, this property is mapped to either " inline-progression-dimension block-progression-dimension writing-mode reference-orientation 5 Property Refinement / Resolution For a discussion of the " height http://www.w3.org/TR/2008/REC-CSS2-20080411/tables.html Writing-mode Relative Equivalent of a CSS2 Property. Value: auto | <length> | <percentage> | <length-range> | inherit Initial: auto Inherited: no Percentages: see prose Media: visual This property specifies the inline-progression-dimension This property does not apply when the " line-height Values have the following meanings: auto No constraint is imposed by this property. The inline-progression-dimension Specifying inline-progression-dimension inline-progression-dimension.minimum=auto inline-progression-dimension.optimum=auto inline-progression-dimension.maximum=auto <length> Specifies a fixed inline-progression-dimension. Specifying inline-progression-dimension inline-progression-dimension.minimum=<length> inline-progression-dimension.optimum=<length> inline-progression-dimension.maximum=<length> <percentage> Specifies a percentage inline-progression-dimension. The percentage is calculated with respect to the corresponding dimension of the closest area ancestor that was generated by a block-level formatting object. If that dimension is not specified explicitly (i.e., it depends on content's inline-progression-dimension Specifying inline-progression-dimension inline-progression-dimension.minimum=<percentage> inline-progression-dimension.optimum=<percentage> inline-progression-dimension.maximum=<percentage> <length-range> Specifies the dimension as a length-range, consisting of: inline-progression-dimension.optimum This is the preferred dimension of the area created, if minimum and maximum are identical, the area is of a fixed dimension. If they are, respectively, smaller and larger than optimum, then the area may be adjusted in dimension within that range. A value of "auto" may be specified for optimum, indicating that there is no preferred dimension, but that the intrinsic or resolved dimension of the area should be used. If minimum and/or maximum are not also auto, then the dimension shall be constrained between those limits. inline-progression-dimension.minimum inline-progression-dimension.maximum A value of "auto" may be specified for inline-progression-dimension.maximum. This indicates that there is no absolute maximum limit, and the object may be sized to its intrinsic size. Negative values for inline-progression-dimension.minimum, inline-progression-dimension.optimum, and inline-progression-dimension.maximum are invalid and are treated as if "0pt" had been specified. CSS2 Definition: Value: <length> | <percentage> | none | inherit Initial: none Inherited: no Percentages: refer to height Media: visual CSS2 Reference: "max-height" property These two properties [" max-height min-height none (Only on " max-height height <length> Specifies a fixed maximum computed height. <percentage> Specifies a percentage for determining the computed value. The percentage is calculated with respect to the height height height XSL modifications to the CSS definition: In XSL, this property is mapped to either " inline-progression-dimension block-progression-dimension writing-mode reference-orientation 5 Property Refinement / Resolution CSS2 Definition: Value: <length> | <percentage> | none | inherit Initial: none Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "max-width" property These two properties [" max-width min-width none (Only on " max-width width <length> Specifies a fixed maximum computed width. <percentage> Specifies a percentage for determining the computed value. The percentage is calculated with respect to the width XSL modifications to the CSS definition: In XSL, this property is mapped to either " inline-progression-dimension block-progression-dimension writing-mode reference-orientation 5 Property Refinement / Resolution CSS2 Definition: Value: <length> | <percentage> | inherit Initial: 0pt Inherited: no Percentages: refer to height Media: visual CSS2 Reference: "min-height" property These two properties [" max-height min-height <length> Specifies a fixed minimum computed height. <percentage> Specifies a percentage for determining the computed value. The percentage is calculated with respect to the height height height XSL modifications to the CSS definition: In XSL, this property is mapped to either " inline-progression-dimension block-progression-dimension writing-mode reference-orientation 5 Property Refinement / Resolution CSS2 Definition: Value: <length> | <percentage> | inherit Initial: depends on UA Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "min-width" property These two properties [" max-width min-width <length> Specifies a fixed minimum computed width. <percentage> Specifies a percentage for determining the computed value. The percentage is calculated with respect to the width XSL modifications to the CSS definition: In XSL, this property is mapped to either " inline-progression-dimension block-progression-dimension writing-mode reference-orientation 5 Property Refinement / Resolution XSL Definition: Value: uniform | non-uniform | inherit Initial: uniform Inherited: no Percentages: N/A Media: visual Values have the following meanings: uniform Scaling should preserve the aspect ratio. non-uniform Scaling need not preserve the aspect ratio. Specifies whether scaling XSL Definition: Value: auto | integer-pixels | resample-any-method | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values have the following meanings: auto The User Agent is free to choose either resampling, integer scaling scaling integer-pixels The User Agent should scale the image such that each pixel in the original image is scaled to the nearest integer number of device-pixels that yields an image less-then-or-equal-to the image size derived from the content-height content-width scaling resample-any-method The User Agent should resample the supplied image to provide an image that fills the size derived from the content-height content-width scaling This property is used to indicate a preference in the scaling Note: This is defined as a preference to allow the user agent the flexibility to adapt to device limitations and to accommodate over-constrained situations involving min/max dimensions and scale factors. CSS2 Definition: Value: <length> | <percentage> | auto | inherit Initial: auto Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "width" property This property specifies the content width This property does not apply to non-replaced inline-level elements. The width width The width Values have the following meanings: auto The width <length> Specifies a fixed width. <percentage> Specifies a percentage width. The percentage is calculated with respect to the width Negative values for " width XSL modifications to the CSS definition: In XSL, this property is mapped to either " inline-progression-dimension block-progression-dimension writing-mode reference-orientation 5 Property Refinement / Resolution XSL Definition: Value: auto | column | page | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual Values have the following meanings: auto No restriction applies. The word may be hyphenated at the end of any region. column Both parts of a hyphenated word shall lie within a single column. page Both parts of a hyphenated word shall lie within a single page. Controls whether hyphenation can be performed on the last line that fits in a given reference-area. XSL Definition: Value: no-limit | <number> | inherit Initial: no-limit Inherited: yes Percentages: N/A Media: visual Values have the following meanings: no-limit Any number of successive lines may be hyphenated. <number> An integer greater than or equal to 1. If a zero, negative, or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. Specifies a limit on the number of successive hyphenated line-areas the formatter may generate in a block-area. XSL Definition: Value: <length> | <percentage> | inherit Initial: 0pt Inherited: yes Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <length> The " last-line-end-indent <percentage> The " last-line-end-indent inline-progression-dimension Specifies an indent to be applied to the last line-area child of the last block-area generated and returned by the formatting object, and to any line-area generated by the formatting object whose following sibling is a block-area that is not a line-area. It is added to the block's end-edge. Positive values indent the edge, negative values outdent the edge. CSS2 Definition: Value: normal | <length> | <number> | <percentage> | <space> | inherit Initial: normal Inherited: yes Percentages: refer to the font size of the element itself Media: visual CSS2 Reference: "line-height" property Values have the following meanings: normal Tells user agents to set the computed value to a "reasonable" value based on the font size of the element. The value has the same meaning as <number>. We recommend a computed value for "normal" between 1.0 to 1.2. <length> The box height <number> The computed value of the property is this number multiplied by the element's font size. Negative values are illegal. However, the number, not the computed value, is inherited. <percentage> The computed value of the property is this percentage multiplied by the element's computed font size. Negative values are illegal. If the property is set on a block-level element whose content is composed of inline-level elements, it specifies the minimal height If the property is set on an inline-level element, it specifies the exact height height height When an element contains text that is rendered in more than one font, user agents should determine the " line-height Generally, when there is only one value of " line-height line-height Note that replaced elements have a " font-size line-height height font-size line-height role vertical-align XSL modifications to the CSS definition: In XSL the " line-height half-leading XSL adds the following value with the following meaning: <space> Specifies the minimum, optimum, and maximum values, the conditionality, and precedence line-height half-leading Negative values for line-height.minimum, line-height.optimum, and line-height.maximum are invalid and will be interpreted as 0pt. The line-height.conditionality setting can be used to control the half-leading above the first line or after the last line that is placed in a reference-area. The line-height.precedence setting can be used to control the merging of the half-leading with other spaces. If line-height line-height.minimum: the resultant computed value (as a length) of the <length>, <percentage>, or <number>. line-height.optimum: the resultant computed value (as a length) of the <length>, <percentage>, or <number>. line-height.maximum: the resultant computed value (as a length) of the <length>, <percentage>, or <number>. line-height.precedence: force. line-height.conditionality: retain XSL Definition: Value: consider-shifts | disregard-shifts | inherit Initial: consider-shifts Inherited: yes Percentages: N/A Media: visual Values have the following meanings: consider-shifts In determining the line-height disregard-shifts In determining the line-height This property is used to control whether the line-height Note: This property can be used to prevent superscript and subscript characters from disrupting the line-spacing. XSL Definition: Value: line-height max-height Initial: max-height Inherited: yes Percentages: N/A Media: visual Values have the following meanings: line-height Uses the per-inline-height-rectangle as described in 4.5 Line-areas Note: This matches CSS's line-height font-height Uses the nominal-requested-line-rectangle as described in 4.5 Line-areas max-height Uses the maximal-line-rectangle as described in 4.5 Line-areas Selects the strategy for positioning adjacent lines, relative to each other. Implementations must support at least the " max-height line-height max-height XSL Definition: Value: ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit Initial: treat-as-space Inherited: yes Percentages: N/A Media: visual Values have the following meanings: ignore Specifies that any character preserve Specifies no special action. treat-as-space Specifies that any character character treat-as-zero-width-space Specifies that any character character width Note: The Unicode Standard recommends that the zero width width The " linefeed-treatment character CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x77 Value: start | center | end | justify | inside | outside | left right Initial: start Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "text-align" property This property describes how inline content of a block is aligned. Values have the following meanings: left left center centred right right justify justified text <string> Specifies a string on which cells in a table column will align (see the section on horizontal alignment in a column for details and an example). This value applies only to table cells. If set on other elements, it will be treated as ' left right direction A block of text is a stack of line boxes. In the case of ' left right left right letter-spacing word-spacing Note: The actual justification algorithm used is user agent and written language dependent. Conforming user agents may interpret the value 'justify' as ' left right direction XSL modifications to the CSS definition: Values have the following meanings: start Specifies that the content is to be aligned on the start-edge in the inline-progression-direction. center Specifies that the content is to be centered in the inline-progression-direction. end Specifies that the content is to be aligned on the end-edge in the inline-progression-direction. justify Specifies that the contents is to be expanded to fill the available width inside If the page binding edge is on the start-edge, the alignment will be start. If the binding is the end-edge, the alignment will be end. If neither, use start alignment. outside If the page binding edge is on the start-edge, the alignment will be end. If the binding is the end-edge, the alignment will be start. If neither, use end alignment. left Interpreted as " text-align right Interpreted as " text-align <string> Specifies a string on which content of cells in a table column will align (see the section, in the CSS2 Recommendation, on horizontal alignment in a column for details and an example). This value applies only if the formatting object is a descendant of a table cell. If set on other formatting objects, it will be treated as "start". This property describes how inline content of a block is aligned. For fo:external-graphic fo:instream-foreign-object fo:table-and-caption XSL Definition: Value: relative | start | center | end | justify | inside | outside | left right Initial: relative Inherited: yes Percentages: N/A Media: visual Values have the following meanings: relative If text-align text-align text-align-last start Specifies that the content is to be aligned on the start-edge in the inline-progression-direction. center Specifies that the contents is to be centered in the inline-progression-direction. end Specifies that the content is to be aligned on the end-edge in the inline-progression-direction. justify Specifies that the contents is to be expanded to fill the available width inside If the page binding edge is on the start-edge, the alignment will be start. If the binding is the end-edge, the alignment will be end. If neither, use start-side. outside If the page binding edge is on the start-edge, the alignment will be end. If the binding is the end-edge the alignment will be start. If neither, use end alignment. left Interpreted as " text-align-last right Interpreted as " text-align-last Specifies the alignment of the last line-area child of the last block-area generated and returned by the formatting object, and to any line-area generated by the formatting object whose following sibling is a block-area that is not a line-area, and any lines in the block ending in U+000A. CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x76 Value: <length> | <percentage> | inherit Initial: 0pt Inherited: yes Percentages: refer to width Media: visual CSS2 Reference: "text-indent" property This property specifies the indentation of the first line of text in a block. More precisely, it specifies the indentation of the first box that flows into the block's first line box. The box is indented with respect to the left right Values have the following meanings: <length> The indentation is a fixed length. <percentage> The indentation is a percentage of the containing block width The value of ' text-indent text-indent overflow XSL modifications to the CSS definition: The " text-indent start-indent L L A negative value specifies a hanging indent (outdent) on the first line. XSL Definition: Value: false | true | inherit Initial: true Inherited: yes Percentages: N/A Media: visual Values have the following meanings: false Specifies no special action. true Specifies, for any character its character and it is not character and the immediately preceding flow object is a character character or following that flow object shall not generate an area. The " white-space-collapse linefeed-treatment white-space-collapse white-space-treatment An implementation is free to use any algorithm to achieve an equivalent effect. XSL Definition: Value: ignore | preserve | ignore-if-before-linefeed | ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit Initial: ignore-if-surrounding-linefeed Inherited: yes Percentages: N/A Media: visual Values have the following meanings: ignore Any glyph-area whose Unicode character 4.7.2 Line-building 4.7.3 Inline-building preserve Any glyph-area whose Unicode character ignore-if-before-linefeed Any glyph-area with a suppress-at-line-break ignore-if-after-linefeed Any glyph-area with a suppress-at-line-break ignore-if-surrounding-linefeed Any glyph-area with a suppress-at-line-break The " white-space-treatment linefeed-treatment XSL Definition: Value: no-wrap | wrap | inherit Initial: wrap Inherited: yes Percentages: N/A Media: visual Values have the following meanings: no-wrap No line-wrapping will be performed. In the case when lines are longer than the available width overflow overflow wrap Line-breaking will occur if the line overflows the available block width. No special markers or other treatment will occur. Specifies how line-wrapping (line-breaking) of the content of the formatting object is to be handled. Implementations must support the "no-wrap" value, as defined in this Recommendation, when the value of " linefeed-treatment XSL Definition: Value: <number> | <distance> Initial: 0 Applies to: fo:inline Inherited: yes Percentages: refer to inherited font size Media: visual This property specifies the number of lines spanned by the initial letter. A value of 1.0 would indicate a regular-sized letter, and a value of 4 would indicate that the first character (or glyph) contained in the fo:inline For a vertical script, the corresponding leading and trailing alignments points must be used. If a distance is given instead of a unitless number, it is to be used instead of computing the distance in terms of line heights; in this case the formatter is not expected to guarantee alignment of the baseline of the initial with that of the nearest text baseline. If the fo:inline If the value is negative, an implementation MAY A non-integral value represents a proportion, so that a value of 3.5 would indicate that the initial should be half-way between the baselines of the third and fourth lines of text. A value of zero MUST If the containing block does not have enough content to span the given number of lines, the initial SHOULD MUST If there is not enough room left in the column, page or region, the initial must be taken onto the next page along with the text. When the initial-cap-lines XSL Definition: Value: <number> | <distance> Initial: 0pt Applies to: fo:inline Inherited: yes Percentages: Not applicable. Media: visual Sometimes an initial capital extends before the start of the text as well as perhaps continuing for several lines. The initial-cap-lines-before Figure 67 A value of zero indicates that the leading edge of the initial is to align exactly with that of capital letters in the regular text size. If the value is negative, an implementation MAY Figure 67. XSL Definition: Value: <length> | <integer> Initial: 0 Applies to: fo:inline Inherited: yes Percentages: refer to initial-cap-lines-after Media: visual The initial-cap-kern-lines A value of 1 would indicate that the first line of text should be set as close as possible, taking into account the shape of the enlarged glyph. If a distance is given, such as 3cm, any lines whose baselines fall within that distance of the starting reference point of the initial cap are abutted. The value must not be negative. The default value of zero indicates that no lines are to be kerned closer, and hence all lines are set using the margin. Note: In Figure 44 margin fo:inline XSL Definition: Value: <length> | <percentage> | auto | inherit Initial: 0pt Applies to: fo:inline Inherited: yes Percentages: refer to width of enlarged glyph Media: visual The exact font size of the initial is in general computed by the formatter, so the exact distance for an indent must also be computed. The initial-cap-indent The initial-cap-indent n <length> The enlarged initial is moved in the inline-direction by the given amount. <percentage> The enlarged initial is moved in the inline-direction by the given percentage of the size of the glyph. <auto> The indent is computed based on any text that precedes the fo:inline initial-cap-indent Requirement: See the XSL-FO 2.0 Requirements Document, section 5.4 Add support for hanging punctuation, both for western [and] non-western languages. XSL Definition: Value: none | <list of characters> Initial: none Applies to: all elements Inherited: yes Percentages: N/A Media: visual This property describes which characters are allowed to hang outside the margins. This should refer to a "list of characters" datatype, which we have not yet defined. XSL Definition: Value: list of pairs of { left | right | center | decimal } and <length> Initial: empty list Applies to: all elements Inherited: yes Percentages: refer to width of nearest ancestor reference-area Media: visual This property specifies a sequence of tab stop locations relative to the content-rectangle of the closest ancestor reference-area. Need to specify overflow and interaction between wide content and tab stops. How to invoke tab stops? fo:inline with start-tab and end-tab properties, or a new empty element marker? or a tab-character property? Each symbol, length pair in the list has the following meaning: left <length> A left tab stop is set at the given location. right <length> A right tab stop is set at the given location. center <length> A center tab stop is set at the given location. decimal <length> A decimal tab stop is set at the given location. The character value to be aligned is specified by the tab-alignment-character property. The lengths must not be negative. Note: Decimal/character alignment needs to be the same as proposed for tables. Note: At this stage of work, we are using the terms left and right rather than start and end. XSL Definition: Value: <character> Initial: . (period character) Applies to: all elements Inherited: yes Percentages: N/A Media: visual This property specifies the character used for alignment for a decimal tab. XSL Definition: Value: < character Initial: N/A, value is required Inherited: no, a value is required Percentages: N/A Media: visual Values have the following meanings: <character> Specifies the Unicode character CSS2 Definition: Value: normal | <length> | <space> | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "letter-spacing" property This property specifies inter-character space in addition to the default space between characters. Values may be negative. Note: an implementation may limit the values, for example based on language and script, or on font format or output device type, or for other reasons
Values have the following meanings: normal The spacing is the normal spacing for the current font. This value allows the user agent to alter the space between characters in order to justify text. <length> This value indicates inter-character space in addition to the default space between characters. Values may be negative, but there may be implementation-specific limits. User agents may not further increase or decrease the inter-character space in order to justify text. Character-spacing algorithms are user agent dependent. Character spacing may also be influenced by justification (see the " text-align When the resultant space between two characters is not the same as the default space, user agents should not use ligatures. Conforming user agents may consider the value of the ' letter-spacing XSL modifications to the CSS definition: The following value type has been added for XSL: <space> This allows the user to specify a range of adjustments in addition to the default space between characters. The minimum and maximum values specify the limits of the adjustment. Default space between characters is defined to be 0pt, i.e., glyph-areas stacked with no extra space between the allocation-rectangles of the glyph-areas. The inline-progression-dimension fo:character For an fo:character treat-as-word-space space-start space-end For "normal": .optimum = "the normal spacing for the current font" / 2, .maximum = auto, .minimum = auto, . precedence For a <length>: .optimum = <length> / 2, .maximum = .optimum, .minimum = .optimum, . precedence For a <space>: a value that is half the value of the " letter-spacing precedence precedence The CSS statement that "Conforming user agents may consider the value of the ' letter-spacing Note: If it is desired that the letter space combine with other spaces that have less than forcing precedence precedence 4.3 Spaces and Conditionality The algorithm for resolving the adjusted values between word spacing and letter spacing is User Agent dependent. XSL Definition: Value: auto | suppress | retain | inherit Initial: auto Inherited: no Percentages: N/A Media: visual This property applies only to fo:character character This property has the following values: auto The value of this property is determined by the Unicode value of the object's character character This value does not automatically suppress the presentation of the non-breaking-space (U+00A0), the fixed spaces (U+2000 through U+200A), or the ideographic-space (U+3000). suppress The glyph area generated by the fo:character retain The glyph area generated by the fo:character CSS2 Definition: Value: none | [ [ underline | no-underline] || [ overline | no-overline ] || [ line-through | no-line-through ] || [ blink | no-blink ] ]
| inherit Initial: none Inherited: no, but see prose Percentages: N/A Media: visual CSS2 Reference: "text-decoration" property This property describes decorations that are added to the text of an element. If the property is specified for a block-level element, it affects all inline-level descendants of the element. If it is specified for (or affects) an inline-level element, it affects all boxes generated by the element. If the element has no content or no text content (e.g., the IMG element in HTML), user agents must ignore this property. Values have the following meanings: none Produces no text decoration. underline Each line of text is underlined. overline Each line of text has a line above it. line-through Each line of text has a line through the middle blink Text blinks (alternates between visible and invisible). Conforming user agents are not required to support this value. The color(s) required for the text decoration should be derived from the " color This property is not inherited, but descendant boxes of a block box should be formatted with the same decoration (e.g., they should all be underlined). The color of decorations should remain the same even if descendant elements have different " color XSL modifications to the CSS definition: In XSL, the specification of the "underline" value is expanded as follows: The placement of the underline depends on whether the "inline-progression-direction" is oriented horizontally or vertically and on the " language language Note: This specification does not specify the dependence of the placement of the vertical underline on the " language Note: Some fonts have an attribute that suggests where to place the underline for text in that font. That value is likely to apply only when the "inline-progression-direction" is oriented horizontally. XSL adds the following values with the following meanings: no-underline Turns off underlining, if any. no-overline Turns off overlining, if any. no-line-through Turns off line-through, if any. no-blink Turns off blinking, if any. CSS2 Definition: Value: none | [<color> || <length> <length> <length>? ,]* [<color> || <length> <length> <length>?] | inherit Initial: none Inherited: no, see prose Percentages: N/A Media: visual CSS2 Reference: "text-shadow" property This property accepts a comma-separated list of shadow effects to be applied to the text of the element. The shadow effects are applied in the order specified and may thus overlay each other, but they will never overlay the text itself. Shadow effects do not alter the size of a box, but may extend beyond its boundaries. The stack level of the shadow effects is the same as for the element itself. Each shadow effect must specify a shadow offset and may optionally specify a blur radius and a shadow color. A shadow offset is specified with two "length" values that indicate the distance from the text. The first length value specifies the horizontal distance to the right left A blur radius may optionally be specified after the shadow offset. The blur radius is a length value that indicates the boundaries of the blur effect. The exact algorithm for computing the blur effect is not specified. A color value may optionally be specified before or after the length values of the shadow effect. The color value will be used as the basis for the shadow effect. If no color is specified, the value of the " color XSL modifications to the CSS definition: The " text-shadow background background Note: Since the entire forest of normal areas returned by the formatting object on which the property applies is affected by the rendering effect it appears that the shadow effect is inherited. Inheritance would not work however, because that would not allow all the images of one shadow effect to be rendered prior to all the glyph images or images or shadow effect specified before the given shadow effect. CSS2 Definition: Value: capitalize | uppercase | lowercase | none | inherit Initial: none Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "text-transform" property This property controls capitalization effects of an element's text. Values have the following meanings: capitalize Puts the first character uppercase Puts all characters of each word in uppercase. lowercase Puts all characters of each word in lowercase. none No capitalization effects. The actual transformation in each case is written language dependent. See [RFC2070] Conforming user agents may consider the value of " text-transform XSL modifications to the CSS definition: There are severe internationalization issues with the use of this property. It has been retained for CSS compatibility, but its use is not recommended in XSL. XSL Definition: Value: auto | true | false | inherit Initial: auto Inherited: no Percentages: N/A Media: visual This property determines if the character This property has the following values: auto The value of this property is determined by the Unicode code point for the character. As the default behavior: The characters at code points U+0020 and U+00A0 are treated as if 'true' had been specified. All other characters are treated as if 'false' had been specified. This property does not automatically apply word spacing to the fixed spaces (U+2000 through U+200A) or the ideographic-space (U+3000). This default behavior can be overridden by information in the font used for formatting the character true This inline-progression-dimension character word-spacing false This character CSS2 Definition: Value: normal | <length> | <space> | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "word-spacing" property This property specifies spacing behavior between words. Values have the following meanings: normal The normal inter-word space, as defined by the current font and/or the UA. <length> This value indicates inter-word space in addition to the default space between words. Values may be negative, but there may be implementation-specific limits. Word spacing algorithms are user agent-dependent. Word spacing is also influenced by justification (see the ' text-align XSL modifications to the CSS definition: The following value type has been added for XSL: <space> This allows the user to specify a range of adjustments in addition to the default space between words. The minimum and maximum values specify the limits of the adjustment. Default space between words is defined to be the inline-progression-dimension fo:character treat-as-word-space For fo:character treat-as-word-space space-start space-end For "normal": .optimum = ("the normal inter-word space, as defined by the current font and/or the UA" - "the inline-progression-dimension fo:character precedence For a <length>: .optimum = <length> / 2, .maximum = .optimum, .minimum = .optimum, . precedence For a <space>: a value that is half the value of the " word-spacing precedence precedence Note: If it is desired that the word space combine with other spaces that have less than forcing precedence precedence 4.3 Spaces and Conditionality The algorithm for resolving the adjusted values between word spacing and letter spacing is User Agent dependent. Note: The " word-spacing Requirement: See the XSL-FO 2.0 Requirements Document, section 5.6.3 Allow users to specify the priority between word and letter spacing. XSL Definition: Value: <length> Initial: 0pt Applies to: all elements Inherited: yes Percentages: N/A Media: visual This property specifies a length ( x x Values have the following meanings: <length> The permitted minimum deficit is a fixed length. The value must not be negative. CSS2 Definition: Value: <color> | inherit Initial: depends on user agent Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "color" property <color> Any valid color specification. This property describes the foreground color of an element's text content. XSL modifications to the CSS definition: XSL adds an "rgb-icc" function (see 5.12.2 Color Functions XSL Definition: Value: <name> | inherit Initial: N/A, value is required Inherited: no Percentages: N/A Media: visual <name> Specifies the name of a color-profile for internal references. XSL Definition: Value: auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inherit Initial: auto Inherited: no Percentages: N/A Media: visual " rendering-intent rendering-intent rendering-intent Values have the following meanings: auto This is the default behavior. The User Agent determines the best intent based on the content type. For image content containing an embedded profile, it shall be assumed that the intent specified within the profile is the desired intent. Otherwise, the user agent shall use the current profile and force the intent, overriding any intent that might be stored in the profile itself. perceptual This method, often the preferred choice for images, preserves the relationship between colors. It attempts to maintain relative color values among the pixels as they are mapped to the target device gamut. Sometimes pixel values that were originally within the target device gamut are changed in order to avoid hue shifts and discontinuities and to preserve as much as possible the overall appearance of the scene. relative-colorimetric Leaves colors that fall inside the gamut unchanged. This method usually converts out of gamut colors to colors that have the same lightness but fall just inside the gamut. saturation Preserves the relative saturation (chroma) values of the original pixels. Out of gamut colors are converted to colors that have the same saturation but fall just inside the gamut. absolute-colorimetric Disables white point matching when converting colors. This option is generally not recommended. CSS2 Definition: Value: start | end | left right Initial: none Inherited: no Percentages: N/A Media: visual CSS2 Reference: "clear" property This property indicates which sides of an element's box(es) may not be adjacent to an earlier floating box. (It may be that the element itself has floating descendants; the ' clear This property may only be specified for block-level elements (including floats). For compact and run-in boxes, this property applies to the final block box to which the compact or run-in box belongs. Values have the following meanings when applied to non-floating block boxes: left The top margin border bottom right The top margin border bottom both The generated box is moved below all floating boxes of earlier elements in the source document. none No constraint on the box's position with respect to floats. When the property is set on floating elements, it results in a modification of the rules for positioning the float. An extra constraint (#10) is added [to those specified in the description of the ' float 10. The top outer edge of the float bottom left right XSL modifications to the CSS definition: A start-float is defined to mean an area with area-class "xsl-side-float" that was generated by an fo:float float left An end-float is defined to mean an area with area-class "xsl-side-float" that was generated by an fo:float float right An inside-float is defined to mean an area with area-class "xsl-side-float" that was generated by an fo:float float An outside-float is defined to mean an area with area-class "xsl-side-float" that was generated by an fo:float float A side-float is defined to mean either a start-float or an end-float. An area is defined to " clear float A block-level formatting object is defined "to clear clear In XSL this property applies to block-level formatting objects and fo:float The clear fo:float fo:float Values have the following meanings: start Specifies that each area generated by the formatting object must clear fo:float fo:float end Specifies that each area generated by the formatting object must clear fo:float fo:float left Interpreted as " clear right Interpreted as " clear inside Specifies that each area generated by the formatting object must clear fo:float fo:float outside Specifies that each area generated by the formatting object must clear fo:float fo:float both Specifies that each area generated by the formatting object must clear fo:float fo:float none This property does not impose any constraints. When a block-level formatting object is constrained by the " clear space-before clear Note: Depending on how near a side-float's after-edge is to the after-edge of its parent reference-area, a block-level formatting object may not be able to generate an area that is a descendant of the side-float's parent reference-area. In this case the first block-area generated by the formatting object must be placed in one of the following reference-areas in the reference-area chain that contains the side-float's parent reference-area. CSS2 Definition: Value: before | start | end | left right Initial: none Inherited: no Percentages: refer to the inline-progression-dimension of content-rectangle of parent area Media: visual CSS2 Reference: "float" property This property specifies whether a box should float left right left The element generates a block box that is floated to the left. Content flows on the right clear right Same as " left left none The box is not floated. Here are the precise rules that govern the behavior of floats: 1. The left left left 2. If the current box is left-floating, and there are any left left right right bottom 3. The right right left right 4. A floating box's outer top may not be higher than the top of its containing block. 5. The outer top of a floating box may not be higher than the outer top of any block or floated box generated by an element earlier in the source document. 6. The outer top of an element's floating box may not be higher than the top of any line-box containing a box generated by an element earlier in the source document. 7. A left-floating box that has another left-floating box to its left right right right left float right left 8. A floating box must be placed as high as possible. 9. A left-floating box must be put as far to the left right left XSL modifications to the CSS definition: The following values have been added for XSL: "before", "start", "end", "inside", and "outside". In XSL this property applies only to fo:float Values have the following meanings: before Specifies that the block-areas generated by the fo:float start Specifies that the block-areas generated by the fo:float end Specifies that the block-areas returned by the fo:float left Interpreted as " float right Interpreted as " float inside Specifies that the block-areas returned by the fo:float outside Specifies that the block-areas returned by the fo:float none Specifies that the block-areas generated by the fo:float This property determines the area-class fo:float XSL Definition: Value: auto | none | line | indent | block | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual Values have the following meanings: auto For a reference-area, this value is treated as if "block" had been specified. For any other area, this value is treated as if "line" had been specified. none Neither line areas nor block areas are displaced (nor have any adjustment to their inline progression dimension) due to the intrusion of the float. The float clear line The start and end edges of line areas are displaced just enough so that any intrusions no longer intersects the content rectangle of the line area. For the purposes of this test, the allocation rectangle of the intrusion is used in the intersection. Also, such intersections are done with respect to the line area prior to its adjustment of any " text-indent Note: This is the behavior of floats described in CSS2. indent The start edge (and end edge) of each line within the block area on which the property occurs is displaced (a) by at least the same amount it would be displaced by the "line" value of this property and (b) in addition, by an amount that preserves the relative offset of that start edge (or end edge) with respect to the start edge (or end edge) of any other line displaced by any intrusion that cause the current line to be displaced. If there is more than one intrusion that could cause a displacement of the line, the largest such displacement is used. block The start edge (and end edge) of the block is displaced by the least amount necessary to insure that (a) the start edge (end edge) of the block does not intersect any of the start intrusions (end intrusions) that overlap that block and (b) the amount by which it is displaced is at least as much as the displacement of the parent area, provided the parent is a block-area which is not a reference-area. An intrusion is said to overlap a block if the there is a line parallel to the inline progression direction This property determines the displacement strategy in the presence of intrusions. Note: Displacing the start edge (and/or end edge) of a block, necessarily displaces the start edge (and/or end edge) of all lines and blocks contained within that block. Page breaks only apply to descendants of the fo:flow fo:flow The semantics of keeps and breaks are further described in 4.8 Keeps and Breaks XSL Definition: Value: auto | column | page | even-page | odd-page | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values for these properties have the following meanings: auto No break shall be forced. Note: Page breaks may occur as determined by the formatter's processing as affected by the "widow", "orphan", " keep-with-next keep-with-previous keep-together column Imposes a break-after page Imposes a break-after even-page Imposes a break-after odd-page Imposes a break-after Specifies that the first normal area generated by formatting the next formatting object, if any, shall be the first one placed in a particular context (e.g. page-area, column-area) This property has no effect when it appears on an fo:table-row fo:table-row XSL Definition: Value: auto | column | page | even-page | odd-page | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values have the following meanings: auto No break shall be forced. Note: Page breaks may occur as determined by the formatter's processing as affected by the "widow", "orphan", " keep-with-next keep-with-previous keep-together column Imposes a break-before page Imposes a break-before even-page Imposes a break-before odd-page Imposes a break-before Specifies that the first area generated by formatting this formatting object shall be the first one placed in a particular context (e.g., page-area, column-area). This property has no effect when it appears on an fo:table-row fo:table-row XSL Definition: Value: <keep> | inherit Initial: .within-line=auto, .within-column=auto, .within-page=auto Inherited: yes Percentages: N/A Media: visual This property imposes keep-together The <keep> datatype is composed of three components: within-line, within-column, and within-page. Different components apply to different classes of formatting objects and provide keep conditions relative to different contexts. In the case of the within-line component, the keep context consists of line-areas; for the within-column component, the keep context consists of column-areas; for the within-page component, the keep context consists of page-areas. In the descriptions below, the term "appropriate context" should be interpreted in terms of the previous sentence. Values of the components have the following meanings: auto There are no keep-together always Imposes a keep-together <integer> Imposes a keep-together The semantics of keeps and breaks are further described in 4.8 Keeps and Breaks XSL Definition: Value: <keep> | inherit Initial: .within-line=auto, .within-column=auto, .within-page=auto Inherited: no Percentages: N/A Media: visual This property imposes keep-with-next The <keep> datatype is composed of three components: within-line, within-column, and within-page. Different components apply to different classes of formatting objects and provide keep conditions relative to different contexts. In the case of the within-line component, the keep context consists of line-areas; for the within-column component, the keep context consists of column-areas; for the within-page component, the keep context consists of page-areas. In the descriptions below, the term "appropriate context" should be interpreted in terms of the previous sentence. Values of the components have the following meanings: auto There are no keep-with-next always Imposes a keep-with-next <integer> Imposes a keep-with-next The semantics of keeps and breaks are further described in 4.8 Keeps and Breaks XSL Definition: Value: <keep> | inherit Initial: .within-line=auto, .within-column=auto, .within-page=auto Inherited: no Percentages: N/A Media: visual This property imposes keep-with-previous The <keep> datatype is composed of three components: within-line, within-column, and within-page. Different components apply to different classes of formatting objects and provide keep conditions relative to different contexts. In the case of the within-line component, the keep context consists of line-areas; for the within-column component, the keep context consists of column-areas; for the within-page component, the keep context consists of page-areas. In the descriptions below, the term "appropriate context" should be interpreted in terms of the previous sentence. Values of the components have the following meanings: auto There are no keep-with-previous always Imposes a keep-with-previous <integer> Imposes a keep-with-previous The semantics of keeps and breaks are further described in 4.8 Keeps and Breaks CSS2 Definition: Value: <integer> | inherit Initial: 2 Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "orphans" property See definition of property widows CSS2 Definition: Value: <integer> | inherit Initial: 2 Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "widows" property The " orphans left bottom widows left XSL modifications to the CSS definition: In XSL the " orphans widows XSL Definition: Value: relative | start | center | end | justify | inside | outside | left | right | inherit Initial: relative Applies to: all elements Inherited: yes Percentages: N/A Media: visual This property describes how inline content of the last line before a break is aligned. Values have the same meanings as in the definition of "text-align-last". XSL Definition: Value: relative | start | center | end | justify | inside | outside | left | right | inherit Initial: relative Applies to: all elements Inherited: yes Percentages: N/A Media: visual This property describes how inline content of the first line after a break is aligned. Values have the same meanings as in the definition of "text-align-last". The following are layout-related properties that are not common to all formatting objects. CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x68 Value: <shape> | auto | inherit Initial: auto Inherited: no Percentages: N/A Media: visual CSS2 Reference: "clip" property The ' clip overflow auto The clipping region has the same size and location as the element's box(es). <shape> In CSS2, the only valid <shape> value is: rect (<top>, < right bottom left bottom right left <top>, < right bottom left When coordinates are rounded to pixel coordinates, care should be taken that no pixels remain visible when < left right width bottom height The element's ancestors may also have clipping regions (in case their " overflow If the clipping region exceeds the bounds of the UA's document window, content may be clipped to that window by the native operating environment. CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x67 Value: visible | hidden | scroll | error-if-overflow | repeat | auto | inherit Initial: auto Inherited: no Percentages: N/A Media: visual CSS2 Reference: "overflow" property This property specifies whether the content of a block-level element is clipped when it overflows the element's box (which is acting as a containing block for the content). Values have the following meanings: visible This value indicates that content is not clipped, i.e., it may be rendered outside the block box. hidden This value indicates that the content is clipped and that no scrolling mechanism should be provided to view the content outside the clipping region; users will not have access to clipped content. The size and shape of the clipping region is specified by the " clip scroll This value indicates that the content is clipped and that if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped. This avoids any problem with scrollbars appearing and disappearing in a dynamic environment. When this value is specified and the target medium is "print", overflowing content should be printed. auto The behavior of the "auto" value is user agent dependent, but should cause a scrolling mechanism to be provided for overflowing boxes. Even if " overflow XSL modifications to the CSS definition: Two more value are defined as follows: error-if-overflow This value implies the same semantics as the value "hidden" with the additional semantic that an error shall be indicated; implementations may recover by clipping the region. repeat On a formatting object which generates and returns normal viewport/reference pairs, this value specifies that additional viewport/reference pairs are to be generated so that the reference-area component of each pair is no larger than its parent viewport-area. On other formatting objects (including formatting objects whose absolute-position overflow For print media, implementations must support "auto" and "visible", as defined in this Recommendation. Other values may be treated as if "auto" had been specified. XSL Definition: Value: 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit Initial: 0 Inherited: no Percentages: N/A Media: visual Values have the following meanings: 0 The reference-orientation reference-orientation 90 The reference-orientation reference-orientation 180 The reference-orientation reference-orientation 270 The reference-orientation reference-orientation -90 The reference-orientation reference-orientation Note: This is equivalent to specifying "270". -180 The reference-orientation reference-orientation Note: This is equivalent to specifying "180". -270 The reference-orientation reference-orientation Note: This is equivalent to specifying "90". The reference-orientation direction top writing-mode direction The " reference-orientation reference-orientation direction top left bottom right writing-mode direction The reference-orientation reference-orientation XSL Definition: Value: none | all | inherit Initial: none Inherited: no Percentages: N/A Media: visual Values have the following meanings: none This object does not span all The areas resulting from this flow object shall span Specifies if a block-level object should be placed in the current column or should span Note: This only has effect on areas returned by a flow; e.g. block-areas generated by fo:block fo:flow XSL Definition: Value: x1 y2 x2 y2 Initial: 0 0 0 0 Applies to: page reference area Inherited: no Percentages: Not applicable. Media: paged The bleed-box property defines the size and position of a notional rectangle around the page in which ink might appear: an implementation should not normally render any content outside the bleed box, although it is not an error condition if content is placed there. The primary purpose of the bleed box is so that when a trimming machine cuts the printed page to size, graphics or other content can go all the way to the edge of the page, by virtue of being printed slightly beyond the place where the blade cuts. Hence, the trim box, whose size and position is specified by the trim-box bleed-box The values are as follows: x1, y1 A relative offset from the page reference area origin, used to position the origin of the bleed and trim boxes, respectively. The coordinate system is the same as for the page reference area. The numbers are distances, and may be negative. x2, y2 Relative offsets from the corner of the page reference area that is diagonally opposite to its origin; if x1, y1, x2 and y2 are all zero (the default values) the rectangle will thus be the same size as, and in the same position as, the page reference area. The numbers are distances, and may be negative. Figure 68. XSL Definition: Value: x1 y2 x2 y2 Initial: 0 0 0 0 Applies to: page reference area Inherited: no Percentages: Not applicable. Media: paged The trim box, is usually inside the bleed-box bleed-box The values are as follows: x1, y1 A relative offset from the page reference area origin, used to position the origin of the bleed and trim boxes, respectively. The coordinate system is the same as for the page reference area. The numbers are distances, and may be negative. x2, y2 Relative offsets from the corner of the page reference area that is diagonally opposite to its origin; if x1, y1, x2 and y2 are all zero (the default values) the rectangle will thus be the same size as, and in the same position as, the page reference area. The numbers are distances, and may be negative. Figure 69. XSL Definition: Value: none | reference-area | page | inherit Initial: none Inherited: yes Percentages: N/A Media: visual Values have the following meanings: none Leader-pattern has no special alignment. reference-area Leader-pattern is aligned as if it began on the current reference-area's content-rectangle start-edge. page Leader-pattern is aligned as if it began on the current page's start-edge. Specifies whether fo:leader For fo:leader leader-pattern If the fo:leader XSL Definition: Value: space | rule | dots | use-content | inherit Initial: space Inherited: yes Percentages: N/A Media: visual Values have the following meanings: space Leader is to be filled with blank space. rule Leader is to be filled with a rule. If this choice is selected, the " rule-thickness rule-style dots Leader is to be filled with a repeating sequence of dots. The choice of dot character use-content Leader is to be filled with a repeating pattern as specified by the children of the fo:leader Provides the specification of how to fill in the leader. If the leader is aligned, the start-edge of each cycle of each repeating pattern component will be placed on the start-edge of the next cycle in the pattern-alignment grid. Implementations must support the "space", "rule", and "dots" values, as defined in this Recommendation. The "use-content" value may be treated as if "space" had been specified. XSL Definition: Value: use-font-metrics | <length> | <percentage> | inherit Initial: use-font-metrics Inherited: yes Percentages: refer to the inline-progression-dimension Media: visual Values have the following meanings: use-font-metrics Use the width leader-pattern <length> Sets length for leader-pattern-repeating. The leader will have an inline-space inserted after each pattern cycle to account for any difference between the width width If the length specified is less than the value that would be determined via the use-font-metrics choice, the value of this property is computed as if use-font-metrics choice had been specified. Specifies the length of each repeat cycle in a repeating leader. For leaders where the " leader-pattern XSL Definition: Value: <length-range> | <percentage> | inherit Initial: leader-length.minimum=0pt, .optimum=12.0pt, .maximum=100% Inherited: yes Percentages: refer to the inline-progression-dimension Media: visual Values have the following meanings: <length-range> leader-length.minimum=sets minimum length for a leader leader-length.optimum=sets optimum length for a leader leader-length.maximum=sets maximum length for a leader Specifies the minimum, optimum, and maximum length of an fo:leader This property constrains the length of the leader to be between the minimum and maximum lengths. Note: User agents may choose to use the value of "leader-length.optimum" to determine where to break the line, then use the minimum and maximum values during line justification. Leader length values such as: leader-length.minimum="0pt" leader-length.optimum="12pt" leader-length.maximum="100%" would specify constraints that would cause the leader to fill all available space within the current line area as part of the process of justifying that line area. Note: As with all other space and formatting objects within a line area whose inline-progression-dimension XSL Definition: Value: none | dotted | dashed | solid | double | groove | ridge | inherit Initial: solid Inherited: yes Percentages: N/A Media: visual Specifies the style (pattern) of the rule. This property applies only if the " leader-pattern Values have the following meanings: none No rule, forces rule-thickness dotted The rule is a series of dots. dashed The rule is a series of short line segments. solid The rule is a single line segment. double The rule is two solid lines. The sum of the two lines and the space between them equals the value of " rule-thickness groove The rule looks as though it were carved into the canvas. (Top/ left ridge The opposite of "groove", the rule looks as though it were coming out of the canvas. (Bottom/ right Implementations must support the "none" and "solid" values, as defined in this Recommendation. Other values may be treated as if "solid" had been specified. XSL Definition: Value: <length> Initial: 1.0pt Inherited: yes Percentages: N/A Media: visual Specifies the overall thickness of the rule. This property applies only if the " leader-pattern Values have the following meanings: <length> The " rule-thickness The rule is thickened equally above and below the line's alignment position. This can be adjusted through the " baseline-shift XSL Definition: Value: link | visited | active | hover | focus Initial: no, a value is required Inherited: no Percentages: N/A Media: interactive Values have the following meanings: link This fo:multi-property-set fo:basic-link fo:multi-properties visited This fo:multi-property-set fo:basic-link fo:multi-properties active This fo:multi-property-set fo:multi-properties hover This fo:multi-property-set fo:multi-properties focus This fo:multi-property-set fo:multi-properties The " active-state fo:multi-property-set format fo:multi-properties XSL Definition: Value: true | false Initial: false Inherited: yes Percentages: N/A Media: interactive Values have the following meanings: true If this fo:multi-switch fo:multi-switch fo:multi-switch fo:multi-case fo:multi-switch fo:multi-switch fo:multi-case false This fo:multi-switch fo:multi-case Specifies if the initial fo:multi-case fo:multi-switch fo:multi-switch Note: A common case of using this property with a "true" value is when several nested fo:multi-switch XSL Definition: Value: <name> Initial: none, a value is required Inherited: no, a value is required Percentages: N/A Media: interactive <name> Specifies a name for an fo:multi-case fo:multi-case fo:multi-switch fo:multi-switch fo:multi-case The purpose of this property is to allow fo:multi-toggle fo:multi-case XSL Definition: Value: <string> Initial: none, a value is required Inherited: no, a value is required Percentages: N/A Media: interactive <string> Specifies a descriptive title for the fo:multi-case fo:multi-case fo:multi-toggle fo:multi-case XSL Definition: Value: <length> Initial: 0pt Inherited: no Percentages: N/A Media: interactive <length> The " destination-placement-offset If the first destination area is not contained in a line-area, the " destination-placement-offset If the specification of destination-placement-offset If the specified distance would push the first destination area below the page-area, the distance should be decreased so the whole first destination area becomes visible, if possible. If the first destination area is higher than the page, the top of the area should be aligned with the top of the page. XSL Definition: Value: empty string | <uri-specification> Initial: empty string Inherited: no Percentages: N/A Media: interactive <uri-specification> Specifies the destination resource (or, when a fragment identifier is given, sub-resource). How the destination (sub-)resource is used and/or displayed is application and implementation-dependent. In typical browsing applications, the destination resource is displayed in the browser positioned so that some rendered portion resulting from the processing of some part of the specific destination sub-resource indicated by the fragment identifier is in view. XSL Definition: Value: true | false Initial: false Inherited: no Percentages: N/A Media: interactive Values have the following meanings: true The areas that belong to the link target when traversed should, in a system-dependent manner, be indicated. false No special indication should be made. Note: This could be indicated in any feasible way, e.g., by reversed video, etc. XSL Definition: Value: empty string | <idref> Initial: empty string Inherited: no Percentages: N/A Media: interactive <idref> Specifies the destination flow object within the formatting object tree. This property allows the destination flow object node to be explicitly specified. XSL Definition: Value: replace | new Initial: replace Inherited: no Percentages: N/A Media: interactive Values have the following meanings: replace The current document view should be replaced. However, if the destination area(s) are already available in a page/region, those areas should simply be moved/scrolled "into sight". new A new (additional) document view should always be opened. Specifies where the destination resource should be displayed. XSL Definition: Value: show | hide Initial: show Inherited: no Percentages: N/A Media: interactive Specifies how the formatting object to which it applies is initially displayed. Values have the following meanings: show The content of the formatting object is a candidate for being displayed initially. hide The content of the formatting object is not a candidate for being displayed initially. Note: For details of the typical usage of this property, see the description of 6.9.3 fo:multi-switch 6.11.2 fo:bookmark XSL Definition: Value: xsl-preceding | xsl-following | xsl-any | <name>[ <name>]* Initial: xsl-any Inherited: no Percentages: N/A Media: interactive Values have the following meanings: xsl-preceding Activating the switch should result in the current fo:multi-case Note: The current fo:multi-case fo:multi-case In other words, the current fo:multi-switch fo:multi-case Note: The current fo:multi-switch fo:multi-switch If the current fo:multi-case fo:multi-case xsl-following Activating the switch should result in that the current fo:multi-case If the current fo:multi-case fo:multi-case xsl-any Activating the switch should allow the user to select any other fo:multi-case If there is only a single other fo:multi-case <name> A name matching a case-name fo:multi-case Specifies what fo:multi-case fo:multi-toggle If switch-to Note: How to actually select the multi-case from a list is system dependent. XSL Definition: Value: use-target-processing-context | <uri-specification> Initial: use-target-processing-context Inherited: no Percentages: N/A Media: interactive Values have the following meanings: use-target-processing-context The context specified by the " target-processing-context <uri-specification> Specifies the limited context in which the resource should be presented if the external destination is a resource of a processed structured media type for which a limited presentational context makes sense (e.g., XML, XHTML, SVG). This property is ignored if the " external-destination Note: For example, an XML and XSL implementation may parse the XML document, but begin XSLT processing by applying templates to the node set indicated by the " target-presentation-context Note: If this is a node other than the document root, numbering and other contextually-dependent presentation may differ between implementations. Some implementations may want to make this tradeoff for memory or performance reasons. XSL Definition: Value: document-root | <uri-specification> Initial: document-root Inherited: no Percentages: N/A Media: interactive Values have the following meanings: document-root The root of the document of the external-destination <uri-specification> Specifies the root of a virtual document that the processor preparing the new presentation should process if the external destination is a resource of a processed structured media type (e.g., XML, SVG). This property is ignored if the " external-destination Note: Not all URI-specifications will be sensible roots, e.g., an XPointer that gives a string range into an XML document. If the root is not valid for the media type the processor may ignore this property. XSL Definition: Value: use-normal-stylesheet | <uri-specification> Initial: use-normal-stylesheet Inherited: no Percentages: N/A Media: interactive Values have the following meanings: use-normal-stylesheet The implementation will discover stylesheets using its usual methods. <uri-specification> Specifies the stylesheet that shall be used for processing the resource. This stylesheet shall be used instead of any other stylesheet that otherwise would be used. Note: For example from HTTP header information, XML stylesheet processing instructions, or XHTML style and link elements. This property is ignored if the " external-destination Note: In this version of XSL, only a single stylesheet URI-specification is permitted. A future version of XSL may extend the stylesheet specification. XSL Definition: Value: <string> Initial: empty string Inherited: no Percentages: N/A Media: all Associates an index class with a formatting object that also has an index key specified. <string> Specifies the name of the index class. All elements with an index class that is an empty string are in the same index class. That class is distinct from all other classes. The index-class index-key Note: Index class values enable control over how page numbers are merged into ranges. Page numbers from different classes are not merged so specifying an index class can be used to control, for example, whether a range of pages crossing from the preface into the first chapter will be rendered as "vi-14" or "vi-xx, 1-14". XSL Definition: Value: <string> Initial: none Inherited: no Percentages: N/A Media: all Associates an index key with the formatting object on which it is specified. <string> Specifies the index key. All index keys with the same value identify the same index item for the purpose of generating lists of page number citations. XSL Definition: Value: link | no-link Initial: no-link Inherited: yes Percentages: N/A Media: interactive Specifies whether or not page numbers in the index should be hyperlinks. Values have the following meanings: link Page numbers in the index should be navigable links back to the source of the reference as for fo:basic-link no-link Page numbers should not be links. XSL Definition: Value: merge | leave-separate Initial: merge Inherited: yes Percentages: N/A Media: all Specifies whether or not consecutive page numbers from different fo:index-key-reference Values have the following meanings: merge Merge consecutive page numbers into ranges regardless of which fo:index-key-reference leave-separate Do not merge ranges across fo:index-key-reference XSL Definition: Value: merge | leave-separate Initial: merge Inherited: yes Percentages: N/A Media: all Specifies whether or not sequential page numbers within an fo:index-key-reference fo:index-page-citation-list merge-ranges-across-index-key-references Values have the following meanings: merge Merge three or more consecutive page numbers into a range. leave-separate Do not merge page numbers into ranges. XSL Definition: Value: merge | leave-separate Initial: merge Inherited: yes Percentages: N/A Media: all Specifies whether or not multiple references to the same page by different fo:index-key-reference Values have the following meanings: merge Only the first occurrence, in document order of the fo:index-key-reference fo:index-key-reference leave-separate Multiple references to the same page generated by different fo:index-key-reference XSL Definition: Value: <string> Initial: none, value required Inherited: no Percentages: N/A Media: all References an index key. <string> Specifies the " index-key Reference to the objects having an " index-key ref-index-key XSL Definition: Value: <name> Initial: an empty name Inherited: no, a value is required Percentages: N/A Media: paged Values have the following meanings: <name> Names used as identifiers must be unique among fo:marker If the name is empty or if a name-conflict is encountered, an error shall be reported. A processor may then continue processing. This property identifies the fo:marker fo:retrieve-marker fo:retrieve-table-marker retrieve-class-name XSL Definition: Value: table | table-fragment | page Initial: table Inherited: no Percentages: N/A Media: paged Note: The terms defined in 6.13.7 fo:retrieve-table-marker table Specifies that the retrieve scope area set is limited to the primary retrieve scope area and the retrieve scope areas that precede the primary retrieve scope area. table-fragment Specifies that the retrieve scope area set is limited to the primary retrieve scope area. page Specifies that the retrieve scope area set is limited to the primary retrieve scope area and the retrieve scope areas that both precede this primary retrieve scope and are on the same page as the primary retrieve scope area. XSL Definition: Value: <name> Initial: an empty name Inherited: no, a value is required Percentages: N/A Media: paged Values have the following meanings: <name> A name that matches the " marker-class-name fo:marker This property constrains that the fo:marker fo:retrieve-marker fo:retrieve-table-marker marker-class-name XSL Definition: Value: page | page-sequence | document Initial: page-sequence Inherited: no Percentages: N/A Media: paged The term "containing page" is used here to mean the page that contains the first area generated or returned by the children of the retrieved fo:marker Values have the following meanings: page Specifies that the children of any fo:marker fo:retrieve-marker page-sequence Specifies that only the children of fo:marker fo:flow fo:page-sequence fo:retrieve-marker document Specifies that the children of any fo:marker fo:flow fo:retrieve-marker XSL Definition: Value: first-starting-within-page | first-including-carryover | last-starting-within-page | last-ending-within-page Initial: first-starting-within-page Inherited: no Percentages: N/A Media: paged The term "containing page" is used here to mean the page that contains the first area generated or returned by the children of the retrieved fo:marker Values have the following meanings: first-starting-within-page Specifies a preference for retrieving the children of an fo:marker within the containing page whose "is-first" trait is set to "true" and that precedes in the area tree, using pre-order traversal order, any other similarly constrained area that has an attached fo:marker marker-class-name first-including-carryover Specifies a preference for retrieving the children of an fo:marker fo:marker marker-class-name last-starting-within-page Specifies a preference for retrieving the children of an fo:marker within the containing page whose "is-first" trait is set to "true" and that follows in the area tree, using pre-order traversal order, any other similarly constrained area that has an attached fo:marker marker-class-name last-ending-within-page Specifies a preference for retrieving the children of an fo:marker fo:marker marker-class-name This property specifies the preference for which fo:marker fo:retrieve-marker fo:marker fo:marker XSL Definition: Value: first-starting | first-including-carryover | last-starting | last-ending Initial: first-starting Inherited: no Percentages: N/A Media: paged Note: The terms defined in 6.13.7 fo:retrieve-table-marker first-starting Specifies a preference for retrieving the children of an fo:marker that is a descendant of the primary retrieve scope area, whose "is-first" trait is set to "true" and precedes in the area tree, using pre-order traversal order, any other similarly constrained area that has an attached fo:marker marker-class-name first-including-carryover Specifies a preference for retrieving the children of an fo:marker that is a descendant of the primary retrieve scope area, and that precedes in the area tree, using pre-order traversal order, any other similarly constrained area that has an attached fo:marker marker-class-name last-starting Specifies a preference for retrieving the children of an fo:marker that is a descendant of a retrieve scope area, whose "is-first" trait is set to "true" and that follows in the area tree, using pre-order traversal order, any other similarly constrained area that has an attached fo:marker marker-class-name last-ending Specifies a preference for retrieving the children of an fo:marker that is a descendant of a retrieve scope area, and whose "is-last" trait is set to "true" and that follows in the area tree, using pre-order traversal order, any other similarly constrained area that has an attached fo:marker marker-class-name This property specifies the preference for which fo:marker fo:retrieve-table-marker fo:marker fo:marker This group of properties relate to Ruby annotations XSL Definition: Based on http://www.w3.org/TR/2003/CR-css3-ruby-20030514/#rubypos Value: auto | before | bopomofo | inline | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual This property specifies the position of ruby annotations with respect to their corresponding base glyphs. Values have the following meanings: auto Same as before after before The ruby text appears before the base. This is the most common setting used in ideographic East Asian writing systems. Figure 70. When writing-mode is tb-rl, the ruby appears on the right side of the base and is rendered in the same layout mode as the base. Figure 71. after The ruby text appears after the base. This is a relatively rare setting used in ideographic East Asian writing systems, most often found in educational text. Figure 72. If the base appears in a tb-rl writing-mode, the bottom ruby appears on the left side of the base and is rendered in the same layout mode as the base (i.e. vertical) Figure 73. bopomofo The ruby text appears on the right of the base. Unlike 'before' and 'after', this value is not relative to the inline-direction. This value is provided for the special case of traditional Chinese as used especially in Taiwan: ruby (made of bopomofo glyphs) in that context appears vertically along the right side of the base glyph, whether the layout of the base characters is vertical or horizontal. Figure 74. Note: The bopomofo transcription is written in the normal way as part of the ruby text. The user agent is responsible for ensuring the correct relative alignment and positioning of the glyphs, including those corresponding to the tone marks, when displaying. Tone marks are spacing characters that are present at the end of the ruby text for each base character. They are usually displayed in a separate column to the right of the bopomofo characters, and the height of the tone mark depends on the number of characters in the syllable. One tone mark, however, is placed above the bopomofo, not to the right of it. Note: To make bopomofo annotations appear before or after the base text, like annotations for most other East Asian writing systems, use the "before" and "after" values of ruby-position Handling of ruby text that is not bopomofo when the value of ruby-position is set to "bopomofo" is not defined by this specification. inline Ruby text follows the ruby base with no special styling. The value can be used to disable ruby text positioning. If the author has used the XHTML rp element [RUBY] they should set the display value for that element to inline, so that the ruby text is distinguishable from the base text. If no rp element has been used, the author can use the content property with the :before and :after pseudo-elements to set off the ruby text. Based on http://www.w3.org/TR/2003/CR-css3-ruby-20030514/#rubyalign XSL Definition: Value: auto | start | center | end | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual This property specifies alignment of a ruby annotation with respect to its base text. Values have the following meanings: auto The user agent determines how the ruby contents are aligned. This is the initial value. start The ruby text content is aligned with the start edge of the base. Figure 75. Figure 76. center The ruby text content is centered within the width of the base. If the length of the base is smaller than the length of the ruby text, then the base is centered within the width of the ruby text. Figure 77. Figure 78. end The ruby text content is aligned with the end edge of the base. Figure 79. Figure 80. Based on http://www.w3.org/TR/2003/CR-css3-ruby-20030514/#rubyalign XSL Definition: Value: auto | distribute-letter | distribute-space | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual This property specifies how the space between the ruby characters or the base characters (whichever is shortest) is distributed. distribute-letter If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the base, then the letters of the base are evenly distributed across the width of the ruby text. Figure 81. Figure 82. distribute-space If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with a certain amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text. If the width of the ruby text is at least the width of the base, then the same type of space distribution applies to the base. In other words, if the base is shorter than the ruby text, the base is distribute-space aligned. This type of alignment is sometimes referred to as the "1:2:1" alignment [JIS4051]. Figure 83. Figure 84. Based on http://www.w3.org/TR/2003/CR-css3-ruby-20030514/#rubyalign XSL Definition: Value: auto | normal | line-edge | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual This property specifies what the formatter must do when ruby annotations occur at the start of end of lines. Values have the following meanings: auto The user agent determines how the ruby contents are aligned at the edges of lines. This is the initial value. normal When the line head starts with ruby annotated text where the ruby text length is longer than that of the base characters, compose the text so that the first ruby character which overhangs the base text is aligned with the line head, and vice versa. Figure 85. line-edge If the ruby text is not adjacent to a line edge, it is aligned as in 'normal'. Where the ruby text length is longer than that of the base characters and it is adjacent to a line edge, then it is still aligned as in 'normal', but the side of the ruby text that touches the end of the line is lined up with the corresponding edge of the base. In the other scenarios, this is just 'normal'. Figure 86. Based on http://www.w3.org/TR/2003/CR-css3-ruby-20030514/#rubyalign XSL Definition: Value: auto | start | left | center | end | right | distribute-letter | distribute-space | line-edge | inherit Initial: 0 Applies to: fo:inline Inherited: yes Percentages: refer to inherited font size Media: visual This property is a shorthand for the "ruby-alignment", "ruby-group-distribution", and "ruby-alignment-edge" properties and maps. Values have the following meanings: auto ruby-alignment ruby-group-distribution ruby-alignment-edge start ruby-alignment ruby-group-distribution ruby-alignment-edge left ruby-alignment ruby-group-distribution ruby-alignment-edge center ruby-alignment ruby-group-distribution ruby-alignment-edge end ruby-alignment ruby-group-distribution ruby-alignment-edge right ruby-alignment ruby-group-distribution ruby-alignment-edge distribute-letter ruby-alignment ruby-group-distribution ruby-alignment-edge distribute-space ruby-alignment ruby-group-distribution ruby-alignment-edge line-edge ruby-alignment ruby-group-distribution ruby-alignment-edge inherit ruby-alignment ruby-group-distribution ruby-alignment-edge XSL Definition: Value: auto | start | end | none | inherit Initial: none Inherited: yes Percentages: N/A Media: visual This property specifies whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base. Ruby text is never allowed to overhang glyphs belonging to another ruby base. Also the user agent is free to assume a maximum amount by which ruby text may overhang adjacent text. The user agent MAY Values have the following meanings: auto The ruby text can overhang text adjacent to the base on either side. [JIS4051] specifies the categories of characters that ruby text can overhang. The user agent is free to follow the [JIS4051] recommendation or specify its own classes of characters to overhang. This is the initial value. Figure 87. start The ruby text can overhang the text that precedes it. That means, for example, that ruby can overhang text that is to the left of it in horizontal LTR layout, or it can overhang text that is above it in vertical-ideographic layout. Figure 88. end The ruby text can overhang the text that follows it. That means, for example, that ruby can overhang text that is to the right of it in horizontal LTR layout, or it can overhang text that is below it in vertical-ideographic layout. Figure 89. none This is the default behavior. Figure 90. XSL Definition: Value: <length> | auto Initial: 1em Inherited: yes Percentages: Font-size of ruby Media: visual This property specifies the maximum distance that ruby may overhang adjacent characters, when it is possible and necessary for the ruby to overhang. Values have the following meanings: auto The user agent determines the maximum overhang. <length> The maximum distance the ruby may overhang adjacent characters. XSL Definition: Value: <number> | none | inherit Initial: none Inherited: no Percentages: N/A Media: visual This property controls the spanning behavior of ruby annotation elements. Values have the following meanings: <number> The number of ruby base elements to be spanned by the annotation element. If the <number> is ‘0’, it is replaced by ‘1’. The <number> is the computed value. none No spanning. The computed value is ‘1’ XSL Definition: Value: <number> | inherit Initial: 0.5 Inherited: yes Percentages: font-size of base characters Media: visual This property specifies the size of ruby text. Note: In Japanese layout, when ruby is attached to twelve point or larger base characters (usually used for headings), the size of the ruby letter is generally smaller than half the size of the base characters. Figure 91. Values have the following meanings: <number> The ratio of the size of ruby characters to base characters. XSL Definition: Value: normal | narrow | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual This property controls the aspect ratio of ruby text. Values have the following meanings: normal The ruby characters have normal proportions. Figure 92. narrow The ruby characters are narrower in the inline-direction so that more ruby characters can fit alongside a base character. Figure 93. XSL Definition: Value: mono | compound | inherit Initial: mono Inherited: yes Percentages: N/A Media: visual This property specifies whether adjacent fo:ruby-text can intrude on each other. Values have the following meanings: mono Ruby characters do not intrude upon each other: Figure 94. compound Adjacent fo:ruby-text are treated as being part of one compound word and may intrude upon each other. Figure 95. XSL Definition: Value: include-annotation | exclude-annotation | inherit Initial: exclude-annotation Inherited: yes Percentages: N/A Media: visual Values have the following meanings: exclude-annotation The annotation areas are ignored for line stacking. include-annotation The annotation areas are considered for line stacking. This property determines the line stacking method for block elements containing annotation areas such as from ruby or emphasis dots. In all cases the areas returned by fo:ruby-base or fo:annotation-base (tbd) are considered for line stacking. This group of properties relate primarily to fo:number Arbitrary Object Numbering We have received requirement about adding numbering support for paragraphs and other arbitrary elements in the XSL formatting objects, for example fo:inline for Bible verses, fo:instream-foreign-object for figures and illustrations in the book. Here is our current proposal towards the solution that is still under consideration and we'd like to hear public's feedback on the proposal. The idea is to add attribute "number-ref-id" in any formatting object that needs to count the occurences. For example if we defined two fo:number objects as following: <!-- the layout-level needs to be set as "none" --> <fo:number name="p1" layout-level="none"/> <fo:number name="f1" layout-level="none"/> Then we can set every fo:block that marks a new paragraph as this: <fo:block number-ref-id="p1">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.<fo:block>
<fo:block>Ut wisi enim ad minim veniam, quis nostrud exerci tation <fo:instream-foreign-object number-ref-id="f1">...</fo:instreaem-foreign-object> ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</fo:block>
<fo:block number-ref-id="p1">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</fo:block>
<fo:block>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit</fo:block>
<fo:block>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, <fo:instream-foreign-object number-ref-id="f1">...</fo:instreaem-foreign-object> sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</fo:block>
<fo:block number-ref-id="p1">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</fo:block>
<fo:block number-ref-id="p1">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</fo:block>
<fo:block>In above <fo:retrieve-number name="f1"/> in <fo:retrieve-number name="p1"> paragraphs, we demonstrated the new attribute "number-ref-id"</fo:block> Notice that, in above example, the attribute "number-ref-id" is added to only four different fo:block object, which means we marked FOUR distinguish paragraphs, instead of SEVEN according to the number of all the fo:block object in total. The definition of attribute "number-ref-id" is as following: XSL Definition: Required: Yes Type: character Default Value: none The reference-name property identifies the name of the fo:number fo:retrieve-number XSL Definition: Required: No Type: Expression Default Value: value() The reference-value if (value() - current-page-number() > 1) string(concat('Page ', value()) else if (value() - current-page-number() = 1) 'next page' else if (value() = current-page-number()) 'later this page' Open issue In the example above value is used as a function. This function should be renamed, as has value ->reference-value Open issue Can we generalize the fo:retrieve-number to be fo:retrieve-value or fo:value-of? current-page-number() is yet to be developed XSL Definition: Required: yes for layout-level=”none”, no for all other levels. Type: string Default Value: none The name fo:number An fo:number fo:number XSL Definition: Required: Yes Type: Enumeration of string Default Value: none. A value is required Note: the property indicates the position that the fo:number object applies to in a page-sequence. Single fo:number Values: line | column | footnote The layout-level Values for the property have the following meaning: line line numbering, the fo:number is set under the fo:page-sequence, indicating that in this page sequence every line is numbered. column column numbering, the fo:number is set under the fo:page-sequence, indicating that in this page sequence every column is numbered. footnote footnote numbering, the fo:number is set under the fo:page-sequence none expression based numbering, when this value is used, the "name" property needs to be set and we use fo:retrieve-number fo:number fo:retrieve-number If fo:retrieve-number fo:number fo:retrieve-number reference-value XSL Definition: Required: No Type: enumeration of string Default Value: none Value: block | block-container | column | page | none The reset-level Note: The reset-value is not necessarily the same as the initial-value. Values for the property have the following meaning: block reset when a new fo:block starts; this applies to level=”line” only. block-container reset when a new fo:block-container start; this applies to level="line" only. column Reset when a new column starts; this applies to level=”line”, level=”paragraph”, and level=”footnote” page reset when a new page starts; this applies to level=”line”, level=”paragraph”, level=”column”, and level=”footnote” none not resetting The default value of reset-level is none, i.e. not resetting. XSL Definition: Required: No Type: Expression Default Value: 1 The initial-value XSL Definition: Required: No Type: Expression Default Value: 1 Note: this is an increment value for the number. The interval XSL Definition: Required: No Type: Expression Default Value: initial-value if its set or 1 otherwise The reset-value XSL Definition: Required: No Type: Expression Default: true() The display-when For a level=”line” object, “value() = 1 or (value() mod 5 = 0)” indicates the number will display every 5 lines and always for first line. The default value of display-if is “true()”, i.e. always shows. XSL Definition: Required: No Type: Enumeration of string Default Value: start Note: this property indicates the position of the number. For example the object start, object end, object top, object bottom, extra Value: before | after | start | end Values for the property have the following meaning: before before the body of the content flow after after the body of the content flow start left or right of the content flow according to the writing-direction end right or left of the content flow according to the writing-direction The display-position XSL Definition: Required: No Type: Enumeration of string Default Value: start Note: indicate the alignment of the displayed number. Value: start | center | end | decimal Values for the property have the following meaning: start align the number to the start point based on the writing-direction. center align the number to the center of an area large enough to contain the lagest generated number. end align the number to the end point based on the writing-direction. decimal align the number to the decimal separator, if increment-by value is not an integer, or to end otherwise. The number-align This property was called display-align in the internal editor's draft, but that property already exists in XSL-FO 1.x with a slightly different meaning. XSL Definition: Required: Yes Type: Length Percentages: refer to the inline-progression-dimension of content-rectangle of parent area Default Value: none Media: visual Needs default value defining. what's the calculated value if it's set to be auto? Do we need to define an algorithm to calculate it? The number-area-extent XSL Definition: Required: No Type: String Default Value: none The decimal-format XSL Definition: Required: No Type: string Default Value: none The ordinal The ordinal When ordinal XSL Definition: Required: No Type: List of String Default Value: none Applies To: fo:block, fo:inline, fo:instream-foreign-object, fo:table-row, and fo:table-cell The value indicates the name of an fo:number If a non-leveled fo:number fo:number fo:retrieve-number fo:number XSL Definition Required: Type: Default Value: Applies to: fo:number This property is defined in [XSLT] XSL Definition: Value: <string> Initial: 1 Inherited: no Percentages: N/A Media: all This property is defined in [XSLT] XSL Definition: Value: < character Initial: no separator Inherited: no Percentages: N/A Media: all This property is defined in [XSLT] XSL Definition: Value: <number> Initial: no grouping Inherited: no Percentages: N/A Media: all This property is defined in [XSLT] XSL Definition: Value: auto | alphabetic | traditional | <implementer extension> Initial: auto Inherited: no Percentages: N/A Media: all The letter-value In many languages there are two commonly used numbering sequences that use letters. One numbering sequence assigns numeric values to letters in alphabetic sequence, and the other assigns numeric values to each letter in some other manner traditional in that language. In English, these would correspond to the numbering sequences specified by the format tokens a and i. In some languages, the first member of each sequence is the same, and so the format token alone would be ambiguous. A value of alphabetic specifies the alphabetic sequence; a value of traditional specifies the other sequence. If the letter-value The following pagination and layout properties are all XSL only. XSL Definition: Value: blank | not-blank | any | inherit Initial: any Inherited: no Percentages: N/A Media: visual This property forms part of a selection rule to determine if the referenced page-master is eligible for selection at this point in the page-sequence. The values have the following meanings: blank This master is eligible for selection if a page must be generated (e.g., to maintain proper page parity at the start or end of the page-sequence) and there are no areas from any of the fo:flow fo:page-sequence not-blank This master is eligible for selection if this page contains areas from any of the fo:flow fo:page-sequence any This master is always eligible for selection. XSL Definition: Value: <number> | inherit Initial: 1 Inherited: no Percentages: N/A Media: visual Values have the following meanings: <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. Specifies the number of columns in the region. A value of 1 indicates that this is not a multi-column region. XSL Definition: Value: <length> | <percentage> | inherit Initial: 12.0pt Inherited: no Percentages: refer to width Media: visual Values have the following meanings: <length> This is an unsigned length. If a negative value has been specified a value of 0pt will be used. <percentage> The value is a percentage of the inline-progression-dimension Specifies the width 6.4.17 fo:region-body XSL Definition: Value: <length> | <percentage> Initial: 0pt Inherited: no Percentages: refer to the corresponding inline-progress-dimension of the page-viewport-area. Media: visual Specifies the distance between the edge of the region-body and the edge of the extension region to which it applies. If it applies to fo:extension-region-end, it indicates the distance between the start-edge of the extension region and the end-edge of the region-body. If it applies to to:extension-region-start it indicates the distance between the end-edge of the extension region and the start-edge of the region-body. Values have the following meanings: <length> This is an unsigned length. Negative values are treated as if they were zero. <percentage> The value is a percentage of the corresponding inline-dimension of the page-viewport-area. XSL Definition: Value: <length> | <percentage> | inherit Initial: 0.0pt Inherited: no Percentages: refer to the corresponding block-progression-dimension inline-progression-dimension Media: visual Values have the following meanings: <length> This is an unsigned length. If a negative value has been specified a value of 0pt will be used. <percentage> The value is a percentage of the corresponding block-progression-dimension inline-progression-dimension Specifies the inline-progression-dimension block-progression-dimension XSL Definition: Value: <name> Initial: none, a value is required Inherited: no Percentages: N/A Media: all Values have the following meanings: <name> Names identify flow-maps. They may not be empty and must be unique. This property provides an identifying name for an fo:flow-map flow-map-reference fo:page-sequence XSL Definition: Value: <name> Initial: see prose Inherited: no Percentages: N/A Media: all Values have the following meanings: <name> The name identifies a flow map; it may not be empty and must refer to a flow-map-name Specifies the flow map to be used for assigning flows to regions within the page-sequence. If no flow-map-reference 6.4.7 fo:page-sequence XSL Definition: Value: <name> Initial: an empty name Inherited: no, a value is required Percentages: N/A Media: visual Values have the following meanings: <name> Names used as identifiers must be unique within an fo:page-sequence If the name is empty or if a name-conflict is encountered, an error shall be reported. A processor may then continue processing. Defines the name of the flow. The flow-name region-name flow-name Note: The flow-names reserved in XSL are: xsl-region-body, xsl-region-before, xsl-region-after, xsl-region-start, xsl-region-end, xsl-before-float-separator, xsl-footnote-separator. XSL Definition: Value: <name> Initial: none, a value is required Inherited: no Percentages: N/A Media: all Values have the following meanings: <name> The name identifies a flow; it must not be empty and must refer to a flow-name Specifies a flow to be used within a sequence of flows in the flow-source-list of a particular assignment of flows to regions. XSL Definition: Value: auto | even | odd | end-on-even | end-on-odd | no-force | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Force-page-count is used to impose a constraint on the number of pages in a page-sequence. In the event that this constraint is not satisfied, an additional page will be added to the end of the sequence. This page becomes the "last" page of that sequence. The values have the following meanings: auto Force the last page in this page-sequence to be an odd-page if the initial-page-number initial-page-number initial-page-number even Force an even number of pages in this page-sequence. odd Force an odd number of pages in this page-sequence. end-on-even Force the last page in this page-sequence to be an even-page. end-on-odd Force the last page in this page-sequence to be an odd-page. no-force Do not force either an even or an odd number of pages in this page-sequence Note: Whether a page is an odd-page or even-page is determined from the folio-number XSL Definition: Value: auto | auto-odd | auto-even | <number> | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values have the following meanings: auto The initial folio number shall be set to 1 if no previous fo:page-sequence If a preceding page-sequence exists, the initial folio number will be one greater than the last number for that sequence. auto-odd A value is determined in the same manner as for "auto". If that value is an even number 1 is added. auto-even A value is determined in the same manner as for "auto". If that value is an odd number 1 is added. <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. Sets the initial folio number to be used in this page-sequence. XSL Definition: Value: <name> Initial: an empty name Inherited: no, a value is required Percentages: N/A Media: visual Values have the following meanings: <name> Names identify masters, must not be empty and must be unique within an fo:layout-master-set If this property is specified on an fo:simple-page-master fo:single-page-master-reference fo:repeatable-page-master-reference fo:conditional-page-master-reference fo:page-sequence If this property is specified on an fo:page-sequence-master fo:page-sequence A master-name fo:layout-master-set If the name is empty or if a name-conflict is encountered, an error shall be reported. A processor may then continue processing. XSL Definition: Value: <name> Initial: an empty name Inherited: no, a value is required Percentages: N/A Media: visual Values have the following meanings: <name> The names need not be unique, but must not be empty and must refer to a master-name fo:layout-master-set Selecting a master: If this property is specified on the fo:page-sequence If this property is specified on the fo:single-page-master-reference If this property is specified on the fo:repeatable-page-master-reference maximum-repeats If this property is specified on the fo:conditional-page-master-reference If the name is empty, an error shall be reported. A processor may then continue processing. If a name-conflict is encountered, the last specified page-sequence-master or page-master with that name must be used. XSL Definition: Value: <number> | no-limit | inherit Initial: no-limit Inherited: no Percentages: N/A Media: visual Specifies the constraint on the maximum number of pages in the sub-sequence of pages that may be generated by an fo:page-sequence fo:repeatable-page-master-reference fo:repeatable-page-master-alternatives The values have the following meanings: no-limit No constraint is specified. <number> The maximum number of pages in the sub-sequence. The value is an integer greater than or equal to 0. If a fractional value or a value less than 0 is specified, it will be rounded to the nearest integer greater than or equal to 0. A value of 0 indicates this master-reference XSL Definition: Value: auto | paginate | bounded-in-one-dimension | unbounded Initial: auto Inherited: no Percentages: NA Media: visual The " media-usage Values for the property have the following meaning: auto The User Agent determines which value of " media-usage Note: For example, the User Agent could use the following decision process. If the media is not continuous and is of fixed bounded size, then the "paginate" (described below) is used. Otherwise, the "bounded-in-one-dimension" is used. paginate A sequence of pages is generated from the fo:page-sequence fo:root 6.4.7 fo:page-sequence bounded-in-one-dimension Only one page is generated per fo:page-sequence fo:root page-height page-width It is an error if more or less than one of " page-height page-width reference-orientation writing-mode fo:flow reference-orientation writing-mode reference-orientation writing-mode reference-orientation writing-mode reference-orientation writing-mode page-width page-height page-height page-width unbounded Only one page is generated per fo:page-sequence fo:root page-height page-width Note: This implies that no text content is automatically wrapped; that is, each block will have a single line for each text node that does not contain a U+000A character. If more than one line is generated, then the sequence of characters that generated the glyphs in each such line must have been bounded in the original text node, either by the beginning or end of that text node or by an U+000A character character 7.17.7 linefeed-treatment XSL Definition: Value: odd | even | any | inherit Initial: any Inherited: no Percentages: N/A Media: visual This property forms part of a selection rule to determine if the referenced page-master is eligible for selection at this point in the page-sequence. The values have the following meanings: odd This master is eligible for selection if the folio number is odd. even This master is eligible for selection if the folio number is even. any This master is eligible for selection regardless of whether the folio number is odd or even. Note: "Folio number" refers to the folio-number XSL Definition: Value: auto | indefinite | <length> | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values have the following meanings: auto The " page-height Note: A fallback to 11.0in would fit on both Letter size (8.5in by 11.0in) and A4 size pages. indefinite The height "Page-width" and " page-height reference-orientation writing-mode <length> Specifies a fixed height Specifies the height Note: The values for the " page-width page-height A User Agent may provide a way to declare the media for which formatting is to be done. This may be different from the media on which the formatted result is viewed. For example, a browser User Agent may be used to preview pages that are formatted for sheet media. In that case, the size calculation is based on the media for which formatting is done rather than the media being currently used. XSL Definition: Value: <number> | only | first | last | rest | any | inherit Initial: any Inherited: no Percentages: N/A Media: visual This property forms part of a selection rule to determine if the referenced page-master is eligible for selection at this point in the page-sequence or, when the " sequence-repeats The values have the following meanings: <number> This master is eligible for selection if the value is equal to the current page number or, when the " sequence-repeats Note: For example: when " sequence-repeats sequence-repeats sequence-repeats The value is an integer greater than or equal to 0. If a fractional value or a value less than 0 is specified, it will be rounded to the nearest integer greater than or equal to zero. A value of 0 indicates this master-reference will not be used. A value greater than the "sequence-repeats" value, when "sequence-repeats" is not 'no-limit', is false. only This master is eligible for selection if this is the only page (i.e. the page is both first and last) page in the page-sequence. first This master is eligible for selection if this is the first page in the page-sequence. last This master is eligible for selection if this is the last page in the page-sequence. rest This master is eligible for selection if this is not the first page nor the last page in the page-sequence. any This master is eligible for selection regardless of page positioning within the page-sequence. Note: Several of these values can be true simultaneously; for example, 'any' is always true and 'only' is true when both 'first' and 'last' are true, and 'first' and '1' are both true for the first page in a page-sequence. For that reason, it is necessary to order the fo:conditional-page-master-reference XSL Definition: Value: auto | indefinite | <length> | inherit Initial: auto Inherited: no Percentages: N/A Media: visual Values have the following meanings: auto The " page-width Note: A fallback to 8.26in would fit on both 8+1/2x11 and A4 pages. indefinite The width "Page-width" and " page-height reference-orientation writing-mode <length> Specifies a fixed width Specifies the width XSL Definition: Value: true | false | inherit Initial: false Inherited: no Percentages: N/A Media: visual Values have the following meanings: false A value of false specifies that this region does not extend up to the start-edge and end-edge of the content-rectangle of the page-reference-area, but has its inline-progression-dimension true A value of true specifies that the inline-progression-dimension Specifies which region (i.e., region-before, region-after, region-start, or region-end) takes precedence XSL Definition: Value: xsl-region-body | xsl-region-start | xsl-region-end | xsl-region-before | xsl-region-after | <name> Initial: see prose Inherited: no, a value is required Percentages: N/A Media: visual Values have the following meanings: xsl-region-body Reserved region-name fo:region-body xsl-region-start Reserved region-name fo:region-start xsl-region-end Reserved region-name fo:region-end xsl-region-before Reserved region-name fo:region-before xsl-region-after Reserved region-name fo:region-after <name> Names used as identifiers must be unique within a page-master. This property is used to identify a region within a simple-page-master. The " region-name XSL Definition: Value: <name> Initial: none, a value is required Inherited: no Percentages: N/A Media: all Values have the following meanings: <name> The name identifies a region; it must not be empty and must refer to a region-name fo:layout-master-set Specifies a flow to be used within a sequence of regions in the flow-target-list of a particular assignment of flows to regions. XSL Definition: Value: <number> | no-limit | inherit Initial: no-limit Inherited: no Percentages: Not applicable Media: all Specifies the number of pages in a cyclic sub-sequence of pages that may be generated before the cycle repeats. The values have the following meanings: <number> The maximum number of pages in the sub-sequence cycle. The value is an integer greater than or equal to 0. If a fractional value or a value less than 0 is specified, it will be rounded to the nearest integer greater than or equal to 0. A value of 0 indicates this sub-sequence-specifier will not be used. no-limit No constraint is specified. XSL Definition: Value: <property-name-list> Initial: everything Applies to: fo:region fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container fo:table-cell Inherited: no Percentages: N/A Fallback: everything The adjustable-properties display-align The value is a whitespace separated list of names (property names and / or shorthand names), possibly grouped in subsets by a single level of parenthesis; formally, it can be defined by these rules: prioritized-list-of-names = [<priority-group>]* priority-group = <property-name> | <shorthand-name> | ([<property-name> | <shorthand-name>]+) where a property-name can be the name of any property defined by the FO recommendation; a shorthand-name stands for a pre-defined sequence of property names: inline-spacing = word-spacing letter-spacing leader-length block-spacing = space-before space-after . . . any = any property having a range value An XSL-FO implementation MUST remove empty paren pairs, () "(" name name if property-name SHOULD if property-name SHOULD if a priority group contains the shorthand "any", than the other property names or shorthand names can be removed every priority group following "any" MUST SHOULD At the end of the simplification process the property value could be the empty list. This means that there is no elasticity that the application is able to handle, and the output will not be formatted as requested. The default value of "any" has been chosen to reduce the likelihood of this. Items in the simplified value list are given a decresing priority: the first item's priority is greater than that of the second one, and so on; values between parenthesis have the same priority. The application has to respect this priority assignment while adjusting properties: Definition: The [ Definition The application has to check whether it is possible to adjust the content using the current active properties set (choosing an appropriate value between their .minimum and .maximum, or among the available values) if there is a way to adjust the content, the output should reflect that particular choice of values without changing the other properties (e.g. using their .optimum values); otherwise, the next priority group should be added to the active properties set. Points to note: The described behaviour follows an incremental approach rather than a combinatorial one; in other words, the number of attempts the application could need to perform is linear in the size of the property list, instead of growing exponentially. The main aim of the prioritized property list is for the user to be sure that some properties will be adjusted (moving away from their optimal value) only “as a last resort”; this confidence allows the users to give many properties a length range value without fearing for the resulting quality of the output. At any given moment during the adjustment process, the application has complete freedom concerning the use of the available elasticity (coming from the active properties at that moment); in other words, it is not forced by this specification to exhaust the elasticity of a property before using the one of a different property. Common Usage: The fo:alternative-copyfit-content It might be a child of a fo:flow fo:block-container fo:table-cell Areas: The fo:alternative-copyfit-content fo:alternative-copyfit-content Contents: (%block;)* Example: <fo:flow flow-name="A"> <fo:alternative-copyfit-content> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt">Crucis rosa ut hoc sien qua non res veni.</fo:block> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Etiam tristique, nulla a pulvinar hendrerit nihil tortor urna auctor etim domine secularia cali sed ut quotie ire in domince hoc fantus quis eius rei rei. </fo:block> </fo:alternative-copyfit-content>
<fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Lorem maecenas blandit ac, neque sed ut pulvinar, lectus sagittis sapien per risus vel. Ligula sapien sed morbi cras tellus commodo. Si qua ex docet dei etris crucis</fo:block> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> curabitur magna nis, faucibus sed ornare sed, congue eu dui. Pellentesque habitant morbi tristique senectus et netus et malessecularia uada fames ac turpis egestas. </fo:block> <fo:block word-spacing.minimum="1pt" word-spacing.maximum="4pt" line-height.minimum="8pt" line-height.maximum="14pt"> Nunc sit amet dolor sed sem congue mattis sed ut arcu. Mauris id magna sit amet elit aliquam.</fo:block> <fo:block>Pellentesque habitant morbi tristique senectus et netus et malesuada fames.</fo:block> </fo:flow> The following properties apply to this formatting object: Open issue (to be decided; probably any) XSL Definition: Value: start | end | inside | outside | inherit Initial: start Applies to: fo:marginalia Inherited: yes Percentages: Not applicable. Media: visual Specifies the marginalia-reference-area in which to place the block-areas generated by the child fo:marginalia-body to which it applies. Values have the following meanings: start The content of the marginalia will be placed in the extension-region-start region. end The content of the marginalia will be placed in the extension-region-end region. inside The content of the marginalia will be placed in the extension-region-end region on even pages and in the extension-region-start region on odd pages. outside The content of the marginalia will be placed in the extension-region-start region on even pages and in the extension-region-end region on odd pages. XSL Definition: Value: force | <integer> | inherit Initial: fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Inherited: no Percentages: N/A Media: visual force The precedence <integer> A numeric precedence precedence Specifies the precedence border XSL Definition: Value: force | <integer> | inherit Initial: fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Inherited: no Percentages: N/A Media: visual Specifies the precedence border See definition of property border-after-precedence 7.31.1 border-after-precedence CSS2 Definition: Value: collapse | collapse-with-precedence | separate | inherit Initial: collapse Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "border-collapse" property collapse The value "collapse" selects the collapsing borders model. separate The value "separate" selects the separated borders border This property selects a table's border border XSL modifications to the CSS definition: XSL adds the following value with the following meaning: collapse-with-precedence The value "collapse-with-precedence" selects the collapsing borders model and the use of the border precedence XSL Definition: Value: force | <integer> | inherit Initial: fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Inherited: no Percentages: N/A Media: visual Specifies the precedence border See definition of property border-after-precedence 7.31.1 border-after-precedence XSL Definition: Value: <length-bp-ip-direction> | inherit Initial: .block-progression-direction="0pt" .inline-progression-direction="0pt" Inherited: yes Percentages: N/A Media: visual <length-bp-ip-direction> The lengths specify the distance that separates adjacent cell borders in the row-stacking-direction (given by the block-progression-direction of the table), and in the column-stacking-direction (given by the inline-progression-direction of the table). In the separate borders model, each cell has an individual border. The " border-separation background border XSL Definition: Value: force | <integer> | inherit Initial: fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Inherited: no Percentages: N/A Media: visual Specifies the precedence border See definition of property border-after-precedence 7.31.1 border-after-precedence CSS2 Definition: Value: before | after | start | end | top | bottom left right Initial: before Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "caption-side" property top Positions the caption box above the table box. bottom Positions the caption box below the table box. left Positions the caption box to the left right Positions the caption box to the right This property specifies the position of the caption box with respect to the table box. Captions above or below a "table" element are formatted very much as if they were a block element before or after the table, except that (1) they inherit inheritable properties from the table, and (2) they are not considered to be a block box for the purposes of any "compact" or "run-in" element that may precede the table. A caption that is above or below a table box also behaves like a block box for width width width For a caption that is on the left right width width width left right To align caption content horizontally within the caption box, use the " text-align left right vertical-align bottom XSL modifications to the CSS definition: Insert the following writing-mode before Positions the caption before the table in the block-progression-direction. after Positions the caption after the table in the block-progression-direction. start Positions the caption before the table in the inline-progression-direction. end Positions the caption after the table in the inline-progression-direction. The CSS qualifications (1) and (2) do not apply. The last three sentences in the last paragraph (referencing " vertical-align XSL Definition: Value: <number> Initial: see prose Inherited: no Percentages: N/A Media: visual <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. For an fo:table-column column-number fo:table-column column-number For an fo:table-cell column-number column-number Note: There is no requirement for column-numbers to be monotonically increasing from formatting object to formatting object. XSL Definition: Value: <length> | <percentage> Initial: see prose Inherited: no Percentages: refer to width Media: visual <length> The " column-width width column-number This property, if present, is ignored if the " number-columns-spanned column-width Note: The use of the "proportional-column-width()" function is only permitted when the fixed table layout is used. If the use of proportional column widths are desired on a table of an unknown explicit width inline-progression-dimension width table-layout inline-progression-dimension Note: The result of using a percentage for the width CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x79 Value: show | hide | inherit Initial: show Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "empty-cells" property show When this property has the value "show", borders are drawn around empty cells (like normal cells). hide A value of "hide" means that no borders are drawn around empty cells. Furthermore, if all the cells in a row have a value of "hide" and have no visible content, the entire row behaves as if it had "display: none". In the separated borders model, this property controls the rendering of borders around cells and the rendering of the background visibility XSL Definition: Value: true | false Initial: false Inherited: no Percentages: N/A Media: visual true This cell ends a row. false This cell does not end a row. Specifies whether this cell ends a row. This is only allowed for table-cells that are not in table-rows. XSL Definition: Value: <number> Initial: 1 Inherited: no Percentages: N/A Media: visual <number> A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 1. The " number-columns-repeated fo:table-column n column-number column-number number-columns-spanned Note: This handles HTML's "colgroup" element. XSL Definition: Value: <number> Initial: 1 Inherited: no Percentages: N/A Media: visual <number> A positive integer or zero. If a negative or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 0. The value zero ("0") means that the cell spans all columns from the current column to the last column of the column group in which the cell is defined. For an fo:table-column number-columns-spanned fo:table-column For an fo:table-cell number-columns-spanned XSL Definition: Value: <number> Initial: 1 Inherited: no Percentages: N/A Media: visual <number> A positive integer or zero. If a negative or non-integer value is provided, the value will be rounded to the nearest integer value greater than or equal to 0. The number-rows-spanned The value zero ("0") means that the cell spans all columns from the current column to the last column of the column group in which the cell is defined. XSL Definition: Value: true | false Initial: false Inherited: no Percentages: N/A Media: visual true This cell starts a row. false This cell does not start a row. Specifies whether this cell starts a row. This is only allowed for table-cells that are not in table-rows. Note: The " starts-row ends-row CSS2 Definition: Value: auto | fixed | inherit Initial: auto Inherited: no Percentages: N/A Media: visual CSS2 Reference: "table-layout" property fixed Use the fixed table layout algorithm auto Use any automatic table layout algorithm The " table-layout XSL Definition: Value: true | false Initial: false Inherited: no Percentages: N/A Media: visual true This property specifies that the footer should be omitted. false This property specifies that the footer should not be omitted. The " table-omit-footer-at-break fo:table-footer XSL Definition: Value: true | false Initial: false Inherited: no Percentages: N/A Media: visual true This property specifies that the header should be omitted. false This property specifies that the header should not be omitted. The " table-omit-header-at-break fo:table-header XSL Definition: Value: page|column|region Initial: page Inherited: no Percentages: N/A Media: visual page When selected the fo:conditional-table-header-reference column When selected the fo:conditional-table-header-reference region When selected the fo:conditional-table-header-reference If the header-position fo:conditional-table-header-reference XSL Definition: Value: page|column|region Initial: page Inherited: no Percentages: N/A Media: visual page When selected the fo:conditional-table-footer-reference column When selected the fo:conditional-table-footer-reference region When selected the fo:conditional-table-footer-reference If the footer-position fo:conditional-table-footer-reference XSL Definition: Value: paginate-column-first|paginate-row-first|auto Initial: auto Inherited: no Percentages: N/A Media: visual paginate-column-first This value specifies that columns should be paginated before rows paginate-row-first This property specifies that rows should be paginated before columns auto This is the default behavior. The User Agent determines the pagination method. The table-overflow XSL Definition: Value: auto | hidden| extend Initial: auto Inherited: no Percentages: N/A Media: visual auto This property value indicates that the formatter decides what to do hidden This value specifies that the border breaks are hidden extend This value specifies that the borders are to be extended The border-break XSL Definition: Value: auto | hidden| extend Initial: auto Inherited: no Percentages: N/A Media: visual auto This property value indicates that the formatter decides what to do hidden This value specifies that the border breaks are hidden extend This value specifies that the borders are to be extended The border-before-break XSL Definition: Value: auto | hidden| extend Initial: auto Inherited: no Percentages: N/A Media: visual auto This property value indicates that the formatter decides what to do hidden This value specifies that the border breaks are hidden extend This value specifies that the borders are to be extended The border-after-break XSL Definition: Value: auto | hidden| extend Initial: auto Inherited: no Percentages: N/A Media: visual auto This property value indicates that the formatter decides what to do hidden This value specifies that the border breaks are hidden extend This value specifies that the borders are to be extended The border-start-break XSL Definition: Value: auto | hidden| extend Initial: auto Inherited: no Percentages: N/A Media: visual auto This property value indicates that the formatter decides what to do hidden This value specifies that the border breaks are hidden extend This value specifies that the borders are to be extended The border-end-break XSL Definition: Value: < border-break-style Initial: See individual properties Inherited: no Percentages: N/A Media: visual The border-break-style border-width XSL Definition: Value: < border-start-break-style Initial: none Inherited: no Percentages: N/A Media: visual The border-start-break-style Allows having different borders when a break occurs so that a formatting object is split, e.g. a cell that splits has a thinner border for the split in the given direction to indicate a continuation. Property values may take the same values as border-top-style XSL Definition: Value: < border-end-break-style Initial: none Inherited: no Percentages: N/A Media: visual The border-end-break-style Allows having different borders when a break occurs so that a formatting object is split, e.g. a cell that splits has a thinner border for the split in the given direction to indicate a continuation. Property values may take the same values as border-top-style XSL Definition: Value: < border-before-break-style Initial: none Inherited: no Percentages: N/A Media: visual The border-before-break-style Allows having different borders when a break occurs so that a formatting object is split, e.g. a cell that splits has a thinner border for the split in the given direction to indicate a continuation. Property values may take the same values as border-top-style XSL Definition: Value: < border-after-break-style Initial: none Inherited: no Percentages: N/A Media: visual The border-after-break-style Allows having different borders when a break occurs so that a formatting object is split, e.g. a cell that splits has a thinner border for the split in the given direction to indicate a continuation. Property values may take the same values as border-top-style The properties in this section control the setting of the inline-progression-direction, the block-progression-direction and the orientation of the glyphs that are placed on a baseline in the inline-progression-direction. The " writing-mode The glyph orientation properties, " glyph-orientation-horizontal glyph-orientation-vertical reference-orientation reference-orientation rotated glyphs reference-orientation inverted glyphs The " direction unicode-bidi direction character direction character The following sample fragment of XML is used to illustrate the interaction between the " writing-mode direction glyph-orientation-vertical Figure 96. In the XML markup of the figure above, the characters are represented by their presentation form (and not their Unicode code points). The order in which the characters are depicted is their storage order. The Hebrew characters in the third line are (from left right The following figure shows the effect of specifying an assortment of values for the " direction glyph-orientation-vertical writing-mode [UNICODE UAX #9] direction direction 5 Property Refinement / Resolution The figure shows seven possible presentations of the sample XML fragment, one with all glyphs having a vertical orientation and six with various combinations of a perpendicular glyph-orientation and direction. In the figure, the correct reading order of the glyphs (left-to-right for the Latin and right-to-left for the Hebrew sub-sequences) is shown by the (red) arrow that is placed on the alphabetic baseline under the glyphs. The six combinations of the " direction glyph-orientation-vertical direction The property specifications that yield the six presentations are given in the table that follows the figure. Figure 97. Table: Properties that produce the above figure Elements/ Cases <t> <t-s1> <t-s2> (2) writing-mode: tb-rl glyph-orientation-vertical: 0 glyph-orientation-vertical: 90 glyph-orientation-vertical: 90 (3) writing-mode: tb-rl glyph-orientation-vertical: 0 glyph-orientation-vertical: 90 glyph-orientation-vertical: -90 unicode-bidi: bidi-override direction: ltr (4) writing-mode: tb-rl glyph-orientation-vertical: 0 glyph-orientation-vertical: -90 unicode-bidi: bidi-override direction: rtl glyph-orientation-vertical: -90 unicode-bidi: bidi-override direction: ltr (5) writing-mode: tb-rl glyph-orientation-vertical: 0 direction: rtl glyph-orientation-vertical: -90 unicode-bidi: bidi-override glyph-orientation-vertical: 90 (6) writing-mode: tb-rl glyph-orientation-vertical: 0 direction: rtl glyph-orientation-vertical: -90 unicode-bidi: bidi-override glyph-orientation-vertical: -90 unicode-bidi: bidi-override direction: ltr (7) writing-mode: tb-rl glyph-orientation-vertical: 0 direction: rtl glyph-orientation-vertical: 90 unicode-bidi: embed direction: ltr glyph-orientation-vertical: 90 Note: Case (1) has no rotated text. This can occur either because " glyph-orientation-vertical width writing-mode direction writing-mode direction direction writing-mode Case (2) can either have the explicit property settings shown in the table or the " glyph-orientation-vertical character left right right Cases (5) through (7) all explicitly set the " direction right direction In cases (5) and (6) for the <t-s1> element, the " unicode-bidi direction direction In case (7) for the <t-s1> element, the " unicode-bidi character left unicode-bidi character left direction unicode-bidi direction If paired punctuation characters, such as parentheses, had been included in one of the text spans, then these characters may need to be "mirrored" as described in the Unicode BIDI algorithm. Mirroring a character direction character left right If the "glyph-orientation" of the characters to which the glyphs correspond is "90" and the embedding level in which the characters lie is odd, then the paired glyphs need to be mirrored. Alternatively, if the "glyph-orientation" of the characters to which the glyphs correspond is "-90" and the embedding level in which the characters lie is even, then the paired glyphs need to be mirrored. In the example above, parentheses that surround the Latin text would not be mirrored in cases (2), (3) and (7), but would need to be mirrored in cases (4) through (6). Conversely, parentheses that surround the Hebrew text would not be mirrored in cases (4) through (6), but would need to be mirrored in cases (2), (3), and (7). Within a string of vertical text, when the value of the " glyph-orientation-vertical alignment-baseline character alignment-baseline Note: If a glyph, such as a ligature or syllabic glyph, is generated from more than one character alignment-baseline The positions of the (vertical) baselines are chosen to insure that the rotated glyphs will not protrude too far (if at all) outside the line area for the vertical line when the " line-stacking-strategy line-height well aligned To preserve the property that rotated text in a vertical line is well aligned when the " glyph-orientation-vertical reflected 7.15 Area Alignment Properties This action is called "reflecting" because the offset from the original dominant baseline to any baseline in the reflected baseline-table places that baseline on the opposite side of the "central" baseline and the distance from the "central" baseline to that baseline is the same as was from the "central" baseline to that baseline in its original (un-reflected) position. In short, the positions of the baselines are reflected across the "central" baseline. Note: If X C -X+2*C = C+(C-X) C+(C-X) Reflecting is necessary, because both the "alphabetic" and the "hanging" baselines are near the outer edges of the vertical line area. If the glyph were simply rotated 180 degrees, then it would stick way out of the intended line area. This is prevented by reflecting the baselines for glyphs that are perpendicular to the dominant baseline and that are rotated 180 degrees from the direction Figure 98. Example 1 shows the "tb-rl" vertical writing-mode. It has the ideographic glyph for " country width width Examples 2 and 3 show the "lr-tb" horizontal writing-mode. They have the Latin glyph sequence, "Ap" as their normal glyphs. Example 2 rotates the syllabic Gurmukhi glyph for "ji" and example 3 rotates the ideographic glyph for " country CSS2 Definition: Value: ltr | rtl | inherit Initial: ltr Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "direction" property This property specifies the base writing direction direction [UNICODE UAX #9] direction direction overflow Values for this property have the following meanings: ltr Left to right rtl Right to left For the ' direction unicode-bidi Note: The ' direction XSL modifications to the CSS definition: The specific use of " direction unicode-bidi direction writing-mode direction To insure consistency with the " writing-mode direction writing-mode writing-mode direction direction writing-mode This property only has an effect on text in which the orientation of the glyphs is perpendicular to the inline-progression-direction. Therefore, vertical ideographic text with the initial value for " glyph-orientation-vertical glyph-orientation-vertical Note: When the inline-progression-direction is "tb", as is typical for vertical text, then this corresponds to a "lr" inline-progression-direction for text with a glyph-orientation of '90' degrees and an "rl" inline-progression-direction for text with a glyph-orientation of "-90" degrees. The " writing-mode direction direction When mapping CSS to XSL, the XSL " writing-mode direction writing-mode direction Implementations must support the values of the " direction writing-mode XSL Definition: Value: <angle> | inherit Initial: 0deg Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <angle> The angle is restricted to 0, 90, 180, and 270 degrees. The User Agent shall round the value of the angle to the closest of the permitted values. A value of "0deg" indicates that all glyphs are set with the top of the glyphs toward the top of the reference-area. The top of the reference-area is defined by the reference-area's reference-orientation A value of "90deg" indicates a rotation of 90-degrees clockwise from the "0deg" orientation. This property specifies the orientation of glyphs relative to the path direction writing-mode The value of this property affects both the alignment and width dominant-baseline alignment-baseline alignment-baseline script width width XSL Definition: Value: auto | <angle> | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual Values have the following meanings: auto Fullwidth ideographic and fullwidth Latin text (excluding ideographic punctuation) will be set with a glyph-orientation of 0-degrees. Ideographic punctuation and other ideographic characters having alternate horizontal and vertical forms will use the vertical form of the glyph. Text which is not fullwidth will be set with a glyph-orientation of 90-degrees. This reorientation rule applies only to the first-level non-ideographic text. All further embedding of writing-modes or BIDI processing will be based on the first-level rotation. Note: This is equivalent to having set the non-ideographic text string horizontally honoring the bidi-rule, then rotating the resultant sequence of inline-areas (one area for each change of glyph direction It should be noted that text set in this "rotated" manner may contain ligatures or other glyph combining and reordering common to the language The determination of which characters should be auto-rotated may vary across User Agents. The determination is based on a complex interaction between country language script character character <angle> The angle is restricted to 0, 90, 180, and 270 degrees. The User Agent shall round the value of the angle to the closest of the permitted values. A value of "0deg" indicates that all glyphs are set with the top of the glyphs toward the top of the reference-area. The top of the reference-area is defined by the reference-area's reference-orientation A value of "90deg" indicates a rotation of 90-degrees clockwise from the "0deg" orientation. This property specifies the orientation of glyphs relative to the path direction Its most common usage is to differentiate between the preferred orientation of alphabetic text in vertically written Japanese documents (glyph-orientation="auto") vs. the orientation of alphabetic text in western signage and advertising (glyph-orientation="0deg"). The value of this property affects both the alignment and width dominant-baseline alignment-baseline alignment-baseline script width width XSL Definition: Value: use-font-metrics | <length> | <percentage> | inherit Initial: use-font-metrics Inherited: no Percentages: refer to font's em-height Media: visual Values have the following meanings: use-font-metrics Uses a value for the " height fo:block fo:character fo:leader leader-pattern fo:leader leader-pattern Conforming implementations may choose as an actual value any value in the range of text-altitudes used by fonts of the same script font-size <length> Replaces the " height Specifies the " height XSL Definition: Value: use-font-metrics | <length> | <percentage> | inherit Initial: use-font-metrics Inherited: no Percentages: refer to font's em-height Media: visual Values have the following meanings: use-font-metrics Uses a value for the "depth" of the font below the baseline, calculated as the distance between the dominant baseline and the text-after baseline, obtained from the nominal font for fo:block fo:character fo:leader leader-pattern fo:leader leader-pattern Conforming implementations may choose as an actual value any value in the range of text-depths used by fonts of the same script font-size <length> Replaces the "depth" value found in the font. Specifies the "depth" to be used for the descent below the dominant baseline. CSS2 Definition: Value: normal | embed | bidi-override | inherit Initial: normal Inherited: no Percentages: N/A Media: visual CSS2 Reference: "unicode-bidi" property Values have the following meanings: normal The element does not open an additional level of embedding with respect to the bidirectional algorithm. For inline-level elements, implicit reordering works across element boundaries. embed If the element is inline-level, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction direction bidi-override If the element is inline-level or a block-level element that contains only inline-level elements, this creates an override. This means that inside the element, reordering is strictly in sequence according to the ' direction The final order of characters in each block-level element is the same as if the bidi control codes had been added as described above, markup had been stripped, and the resulting character unicode-bidi direction Please note that in order to be able to flow inline boxes in a uniform direction Because the Unicode algorithm has a limit of 15 levels of embedding, care should be taken not to use ' unicode-bidi XSL modifications to the CSS definition: The phrasing of the first paragraph of the general description (following the value breakouts) should read "The final order of presentation of the characters...". In Unicode 3.0, the Unicode Consortium has increased the limit of the levels of embedding to 61 (definition BD2 in [UNICODE UAX #9] Fallback: If it is not possible to present the characters in the correct order, then the User Agent should display either a 'missing character XSL Definition: Value: lr-tb | rl-tb | tb-rl | tb-lr | bt-lr | bt-rl | lr-bt | rl-bt | lr-alternating-rl-bt | lr-alternating-rl-tb | lr-inverting-rl-bt | lr-inverting-rl-tb | tb-lr-in-lr-pairs | lr | rl | tb | inherit Initial: lr-tb Inherited: yes (see prose) Percentages: N/A Media: visual Values have the following meanings: lr-tb Inline components and text within a line are written left-to-right. Lines and blocks are placed top-to-bottom. Note: Typically, this is the writing-mode Establishes the following directions: inline-progression-direction to left-to-right If any right-to-left reading characters are present in the text, the inline-progression-direction for glyph-areas may be further modified by the Unicode BIDI algorithm. block-progression-direction to top-to-bottom shift-direction to bottom-to-top rl-tb Inline components and text within a line are written right-to-left. Lines and blocks are placed top-to-bottom. Note: Typically, this writing mode is used in Arabic and Hebrew text. Establishes the following directions: inline-progression-direction to right-to-left If any left-to-right reading characters or numbers are present in the text, the inline-progression-direction for glyph-areas may be further modified by the Unicode BIDI algorithm. block-progression-direction to top-to-bottom shift-direction to bottom-to-top tb-rl Inline components and text within a line are written top-to-bottom. Lines and blocks are placed right-to-left. Note: Typically, this writing mode is used in Chinese and Japanese text. Establishes the following directions: inline-progression-direction to top-to-bottom block-progression-direction to right-to-left shift-direction to left-to-right tb-lr Inline components and text within a line are stacked top-to-bottom. Lines and blocks are stacked left-to-right. Establishes the following directions: inline-progression-direction to top-to-bottom block-progression-direction to left-to-right shift-direction to right-to-left bt-lr Inline components and text within a line are stacked bottom-to-top. Lines and blocks are stacked left-to-right. Establishes the following directions: inline-progression-direction to bottom-to-top block-progression-direction to left-to-right shift-direction to right-to-left bt-rl Inline components and text within a line are stacked bottom-to-top. Lines and blocks are stacked right-to-left. Establishes the following directions: inline-progression-direction to bottom-to-top block-progression-direction to right-to-left shift-direction to left-to-right lr-bt Inline components and text within a line are stacked left-to-right. Lines and blocks are stacked bottom-to-top. Establishes the following directions: inline-progression-direction to left-to-right block-progression-direction to bottom-to-top shift-direction to bottom-to-top rl-bt Inline components and text within a line are stacked right-to-left. Lines and blocks are stacked bottom-to-top. Establishes the following directions: inline-progression-direction to right-to-left block-progression-direction to bottom-to-top shift-direction to bottom-to-top lr-alternating-rl-bt Inline components and text within the first line are stacked left-to-right, within the second line they are stacked right-to-left; continuing in alternation. Lines and blocks are stacked bottom-to-top. Establishes the following directions: inline-progression-direction to left-to-right for odd-numbered lines, right-to-left for even-numbered lines block-progression-direction to bottom-to-top shift-direction to bottom-to-top lr-alternating-rl-tb Inline components and text within the first line are stacked left-to-right, within the second line they are stacked right-to-left; continuing in alternation. Lines and blocks are stacked top-to-bottom. Establishes the following directions: inline-progression-direction to left-to-right for odd-numbered lines, right-to-left for even-numbered lines block-progression-direction to top-to-bottom shift-direction to bottom-to-top lr-inverting-rl-bt Inline components and text within the first line are stacked left-to-right, within the second line they inverted and are stacked right-to-left; continuing in alternation. Lines and blocks are stacked bottom-to-top. Establishes the following directions: inline-progression-direction to left-to-right for odd-numbered lines, right-to-left for even-numbered lines block-progression-direction to bottom-to-top shift-direction to bottom-to-top for odd-numbered lines, top-to-bottom for even-numbered lines lr-inverting-rl-tb Inline components and text within the first line are stacked left-to-right, within the second line they inverted and are stacked right-to-left; continuing in alternation. Lines and blocks are stacked top-to-bottom. Establishes the following directions: inline-progression-direction to left-to-right for odd-numbered lines, right-to-left for even-numbered lines block-progression-direction to top-to-bottom shift-direction to bottom-to-top for odd-numbered lines, top-to-bottom for even-numbered lines tb-lr-in-lr-pairs Text is written in two character Establishes the following directions: inline-progression-direction to top-to-bottom block-progression-direction to left-to-right shift-direction to right-to-left The two glyph areas in the pair are aligned in the inline-progression-direction in the same manner as for lines with a left-to-right inline progression direction alignment-baseline alignment-adjust baseline-shift dominant-baseline Note: Informally: the two glyph areas are placed with respect to each other vertically as if they were part of a line written left-to-right. For stacking into lines each pair is considered a glyph area with an allocation rectangle that is the minimum rectangle required to enclose the allocation rectangles of the glyphs in the pair. In the block-progression-direction the pairs are aligned on a line that is half-way between the end-edge of the first glyph area and the start-edge of the second glyph area in the pair. lr Shorthand for lr-tb. rl Shorthand for rl-tb. tb Shorthand for tb-rl. The writing-mode writing-mode writing-mode writing-mode direction direction Note: To change the " writing-mode fo:flow fo:static-content fo:block-container fo:inline-container If one only wishes to change the inline-progression-direction to override the Unicode BIDI-rule, one need not use an fo:inline-container direction fo:bidi-override Implementations must support at least one of the " writing-mode XSL Definition: Value: <name> Initial: none, value required Inherited: no Percentages: N/A Media: visual Values have the following meanings: <name> A name to allow pairing of fo:change-bar-begin fo:change-bar-end This property associates a name with an fo:change-bar-begin fo:change-bar-end fo:change-bar-begin fo:change-bar-end XSL Definition: Value: <color> Initial: the value of the color Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <color> Specifies the color of the change bar. Note: The color of any change bar is determined by the value of this property at the fo:change-bar-begin XSL Definition: Value: <length> Initial: 6pt Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <length> Gives the distance from the edge of the column area containing the text that is marked as changed to the center of the generated change bar. A positive distance is directed away from the column region and into the margin change-bar-placement Note: The offset of any change bar is determined by the value of this property at the fo:change-bar-begin Note: Relative lengths (i.e., percentage values and lengths with units of "em" or "ex") are not permitted for the value of this property. XSL Definition: Value: start | end | left right Initial: start Inherited: yes Percentages: N/A Media: visual This property determines where, relative to the column areas, the change bars will occur. Values have the following meanings: start The change bar will be offset from the start edge of all column areas. end The change bar will be offset from the end edge of all column areas. left The change bar will be offset from the left right The change bar will be offset from the right inside If the page binding edge is on the start-edge, the change bar will be offset from the start edge of all column areas. If the binding is the end-edge, the change bar will be offset from the end edge of all column areas. If the page binding edge is on neither the start-edge nor end-edge, the change bar will be offset from the start edge of all column areas. outside If the page binding edge is on the start-edge, the change bar will be offset from the end edge of all column areas. If the binding is the end-edge, the change bar will be offset from the start edge of all column areas. If the page binding edge is on neither the start-edge nor end-edge, the change bar will be offset from the end edge of all column areas. alternate When there are exactly two columns, the change bar will be offset from the start edge of all column one areas and the end edge of all column two areas; when there are any other number of columns, this value is equivalent to 'outside'. Note: The placement of any change bar is determined by the value of this property at the fo:change-bar-begin XSL Definition: Value: < border-style Initial: none Inherited: yes Percentages: N/A Media: visual Specifies the style of the change bar. See definition of property border-top-style 7.8.29 border-top-style Note: The style of any change bar is determined by the value of this property at the fo:change-bar-begin Note: Conforming implementations may interpret 'dotted', 'dashed', 'double', 'groove', 'ridge', 'inset', and 'outset' to be 'solid'. XSL Definition: Value: < border-width Initial: medium Inherited: yes Percentages: N/A Media: visual Specifies the thickness of the change bar. Values have the following meanings: thin A thin border. medium A medium border. thick A thick border. <length> The border border Note: The thickness of any change bar is determined by the value of this property at the fo:change-bar-begin Note: Relative lengths (i.e., percentage values and lengths with units of "em" or "ex") are not permitted for the value of this property. XSL Definition: Value: <string> | auto Initial: auto Inherited: no Percentages: N/A Media: visual This property specifies the content-type Values for this property have the following meanings: auto No identification of the content-type. The User Agent may determine it by "sniffing" or by other means. <string> A specification of the content-type A mime-type specification has the form "content-type:" followed by a mime content-type content-type A namespace specification has the form "namespace-prefix:" followed by a declared namespace prefix, e.g., content-type content-type XSL Definition: Value: < id Initial: see prose Inherited: no, see prose Percentages: N/A Media: all Values have the following meanings: <id> An identifier unique within all objects in the result tree with the fo: namespace. It allows references to this formatting object by other objects. The "inherit" value is not allowed on this property. The initial value of this property is a random and unique identifier. The algorithm to generate this identifier is system-dependent. XSL Definition: Value: <percentage> | inherit Initial: 100% Inherited: yes Percentages: user defined Media: visual Values have the following meanings: <percentage> Specifies the scale factor. Specifies the scale factor that the intrinsic size corresponds to. XSL Definition: Value: [ all | normal | non-blank | inherit Initial: all Inherited: no Percentages: N/A Media: visual This property determines what set of page areas are considered by a page number citation formatting object. For this property definition, an area matches ref-id id A formatting object D is a initial descendant final descendant Finally, a formatting object will be said to generate a blank page break-after break-before fo:page-sequence force-page-count initial-page-number The values have the following meanings: all The set of pages that might be cited includes the pages containing, as a descendant, any area that matches the ref-id normal The set of pages that might be cited includes the pages containing, as a descendant, any normal area that matches the ref-id non-blank The set of pages that might be cited includes the pages containing, as a descendant, any area that matches the ref-id fo:footnote fo:float XSL Definition: Value: <length> | <percentage> | inherit Initial: 24.0pt Inherited: yes Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <length> The " provisional-distance-between-starts <percentage> The " provisional-distance-between-starts inline-progression-dimension Specifies the provisional distance between the start-indent start-indent body-start() = the value of the start-indent provisional-distance-between-starts fo:list-block If there is no ancestral fo:list-block provisional-distance-between-starts provisional-distance-between-starts XSL Definition: Value: <length> | <percentage> | inherit Initial: 6.0pt Inherited: yes Percentages: refer to inline-progression-dimension Media: visual Values have the following meanings: <length> The " provisional-label-separation <percentage> The " provisional-label-separation inline-progression-dimension Specifies the provisional distance between the end of the list-item-label and the start of the list-item-body. The value is not directly used during formatting, but is used in the computation of the value of the label-end function. label-end() = width provisional-distance-between-starts start-indent provisional-label-separation fo:list-block If there is no ancestral fo:list-block provisional-label-separation provisional-distance-between-starts provisional-label-separation provisional-distance-between-starts XSL Definition: Value: <idref> | inherit Initial: none, value required Inherited: no Percentages: N/A Media: all Values have the following meanings: <idref> The " id Reference to the object having the specified unique identifier. XSL Definition: Value: width height Initial: width Inherited: yes Percentages: N/A Media: visual Values have the following meanings: width Requests the scale-factor applied to the width height Requests the scale-factor applied to the height Specifies whether the scale-factor applied to the width height XSL Definition: Value: true | false | inherit Initial: true Inherited: yes Percentages: N/A Media: visual Values have the following meanings: true Text-decoration will be applied to spaces false Text-decoration will not be applied to spaces Specifies whether the text-decoration XSL Definition: Value: <uri-specification> | inherit Initial: none, value required Inherited: no Percentages: N/A Media: visual Values have the following meanings: <uri-specification> Specifies the URI-specification to locate an external resource such as image/graphic data to be included as the content of this object, or color-profile data. CSS2 Definition: Value: visible | hidden | collapse | inherit Initial: visible Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "visibility" property The ' visibility visible The generated box is visible. hidden The generated box is invisible (fully transparent), but still affects layout. collapse Please consult the section on dynamic row and column effects in tables. If used on elements other than rows or columns, "collapse" has the same meaning as "hidden". This property may be used in conjunction with scripts to create dynamic effects. XSL modifications to the CSS definition: Changed initial value to visible; (it is "inherit" in CSS) and made it an inherited property. CSS2 Definition: Value: auto | <integer> | inherit Initial: auto Inherited: no Percentages: N/A Media: visual CSS2 Reference: "z-index" property For a positioned box, the " z-index 1. The stack level of the box in the current stacking context. 2. Whether the box establishes a local stacking context. Values have the following meanings: auto The stack level of the generated box in the current stacking context is the same as its parent's box. The box does not establish a new local stacking context. <integer> This integer is the stack level of the generated box in the current stacking context. The box also establishes a local stacking context in which its stack level is "0". This example [see the CSS specification] demonstrates the notion of transparency. The default behavior of a box is to allow boxes behind it to be visible through transparent areas in its content. In the example, each box transparently overlays the boxes below it. This behavior can be overridden by using one of the existing background Value: <legacy-extended-iri> Initial: None, a value is required Inherited: yes Percentages N/A Media N/A Specifies a base URI other than the base URI of the document or external entity in conformance with [XML Base]. Values have the following meanings: <legacy-extended-iri> A Legacy Extended IRI (LEIRI) giving a base URI. Value: empty string | <uri-specification> Initial: empty string Applies to: All formatting objects Inherited: yes Percentages N/A Media N/A Specifies the base URI to use with relative URIs in the rendered document. Values have the following meanings: empty string Relative URIs in other trait values are resolved relative to the entity containing the reference. <uri-specification> A URI specification giving the base URI for resolving relative URIs in other trait values A relative URI value for this property is resolved relative to the inherited resolved "output-base-uri" value. The following properties are all shorthand properties. Shorthands are only included in the highest XSL conformance level: "complete" (see 8 Conformance Shorthand properties take a list of subproperty values or CSS2 Definition: Value: [< background-color background-image background-repeat background-attachment background-position Initial: not defined for shorthand properties Inherited: no Percentages: allowed on ' background-position Media: visual CSS2 Reference: "background" property The " background background background-color background-image background-repeat background-attachment background-position The " background background CSS2 Definition: Value: [ [<percentage> | <length> ]{1,2} | [ [top | center | bottom left right Initial: 0% 0% Inherited: no Percentages: refer to the size of the box itself Media: visual CSS2 Reference: "background-position" property If a " background-image <percentage> <percentage> With a value pair of 0% 0%, the upper left left padding right right padding padding <length> <length> With a value pair of 2cm 2cm, the upper left right left padding top left and left top Same as 0% 0%. top, top center, and center top Same as 50% 0%. right top and top right Same as 100% 0%. left, left center, and center left Same as 0% 50%. center and center center Same as 50% 50%. right, right center, and center right Same as 100% 50%. bottom left and left bottom Same as 0% 100%. bottom, bottom center, and center bottom Same as 50% 100%. bottom right and right bottom Same as 100% 100%. If only one percentage or length value is given, it sets the horizontal position only, the vertical position will be 50%. If two values are given, the horizontal position comes first. Combinations of length and percentage values are allowed, (e.g., 50% 2cm). Negative positions are allowed. Keywords cannot be combined with percentage values or length values (all possible combinations are given above). If the background background-attachment padding XSL modifications to the CSS definition: The CSS property shall be treated as a shorthand by XSL and maps as follows: <percentage> background-position-horizontal background-position-vertical <percentage1> <percentage2> background-position-horizontal background-position-vertical <length> background-position-horizontal background-position-vertical <length1> <length2> background-position-horizontal background-position-vertical <length> <percentage> background-position-horizontal background-position-vertical <percentage> <length> background-position-horizontal background-position-vertical top left and left top background-position-horizontal background-position-vertical top, top center, and center top background-position-horizontal background-position-vertical right top and top right background-position-horizontal background-position-vertical left, left center, and center left background-position-horizontal background-position-vertical center and center center background-position-horizontal background-position-vertical right, right center, and center right background-position-horizontal background-position-vertical bottom left and left bottom background-position-horizontal background-position-vertical bottom, bottom center, and center bottom background-position-horizontal background-position-vertical bottom right and right bottom background-position-horizontal background-position-vertical CSS2 Definition: Value: [ < border-width border-style Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border" property The " border width bottom left right margin padding border border XSL modifications to the CSS definition: Refer to 5.3.1 Border and Padding Properties precedence CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10 Value: [ < border-width border-style Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-bottom" property A shorthand property for setting the width bottom border CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x35 Value: [ <color> | transparent ]{1,4} | inherit Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-color" property The ' border-color transparent The border width <color> Any valid color specification. The " border-color border-width If an element's border border color border XSL modifications to the CSS definition: See the ' border-width CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10 Value: [ < border-width border-style Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-left" property A shorthand property for setting the width left border CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10 Value: [ < border-width border-style Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-right" property A shorthand property for setting the width right border CSS2 Definition: Value: <length> <length>? | inherit Initial: 0pt Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "border-spacing" property <length> The lengths specify the distance that separates adjacent cell borders. If one length is specified, it gives both the horizontal and vertical spacing. If two are specified, the first gives the horizontal spacing and the second the vertical spacing. Lengths may not be negative. In the separate borders model, each cell has an individual border. The " border-spacing background border XSL modifications to the CSS definition: The CSS property shall be treated as a shorthand by XSL and maps as follows: If one value is specified the "border-separation.block-progression-direction" and "border-separation.inline-progression-direction" are both set to that value. If two values are specified the "border-separation.block-progression-direction" is set to the second value and "border-separation.inline-progression-direction" is set to the first value. CSS2 Definition: Value: < border-style Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-style" property The " border-style It can have from one to four values, and the values are set on the different sides. XSL modifications to the CSS definition: See the ' border-width CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x10 Value: [ < border-width border-style Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-top" property A shorthand property for setting the width border CSS2 Definition: Value: < border-width Initial: see individual properties Inherited: no Percentages: N/A Media: visual CSS2 Reference: "border-width" property This property is a shorthand property for setting " border-top-width border-right-width border-bottom-width border-left-width If there is only one value, it applies to all sides. If there are two values, the top and bottom right left left right bottom right bottom left CSS2 Definition: Value: < cue-before cue-after Initial: not defined for shorthand properties Inherited: no Percentages: N/A Media: aural CSS2 Reference: "cue" property CSS2 Definition: Value: [ [ < font-style font-variant font-weight font-size line-height font-family Initial: see individual properties Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "font" property The " font font-style font-variant font-weight font-size line-height font-family All font-related properties are first reset to their initial values, including those listed in the preceding paragraph plus " font-stretch font-size-adjust font font-stretch font-size-adjust font The following [first six] values refer to system fonts: caption The font used for captioned controls (e.g., buttons, drop-downs, etc.). icon The font used to label icons. menu The font used in menus (e.g., dropdown menus and menu lists). message-box The font used in dialog boxes. small-caption The font used for labeling small controls. status-bar The font used in window status bars. System fonts may only be set as a whole; that is, the " font-family size That is why this property is "almost" a shorthand property: system fonts can only be specified with this property, not with " font-family font font-weight XSL modifications to the CSS definition: In XSL the " font font-family font-size CSS2 Definition: Value: <margin-width>{1,4} | inherit Initial: not defined for shorthand properties Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "margin" property A shorthand property for setting margin-top margin-right margin-bottom margin-left If there is only one value, it applies to all sides. If there are two values, the top and bottom right left left right bottom right bottom left XSL modifications to the CSS definition: Margin is provided for compatibility with CSS. Details on the mapping of CSS " margin 5 Property Refinement / Resolution CSS2 Definition: Value: <padding-width>{1,4} | inherit Initial: not defined for shorthand properties Inherited: no Percentages: refer to width Media: visual CSS2 Reference: "padding" property A shorthand property for setting padding-top padding-bottom padding-left padding-right If there is only one value, it applies to all sides. If there are two values, the top and bottom right left left right bottom right bottom left The surface color or image of the padding background CSS2 Definition: Value: auto | always | avoid | left right Initial: auto Inherited: no Percentages: N/A Media: visual CSS2 Reference: "page-break-after" property Values for these properties have the following meanings: auto Neither force nor forbid a page break before (after, inside) the generated box. always Always force a page break before (after) the generated box. avoid Avoid a page break before (after, inside) the generated box. left Force one or two page breaks before (after) the generated box so that the next page is formatted as a left right Force one or two page breaks before (after) the generated box so that the next page is formatted as a right A potential page break location is typically under the influence of the parent element's ' page-break-inside page-break-after page-break-before left right precedence XSL modifications to the CSS definition: The CSS property shall be treated as a shorthand by XSL and maps as follows: auto break-after keep-with-next always break-after keep-with-next avoid break-after keep-with-next left break-after keep-with-next right break-after keep-with-next CSS2 Definition: Value: auto | always | avoid | left right Initial: auto Inherited: no Percentages: N/A Media: visual CSS2 Reference: "page-break-before" property Values for these properties have the following meanings: auto Neither force nor forbid a page break before (after, inside) the generated box. always Always force a page break before (after) the generated box. avoid Avoid a page break before (after, inside) the generated box. left Force one or two page breaks before (after) the generated box so that the next page is formatted as a left right Force one or two page breaks before (after) the generated box so that the next page is formatted as a right A potential page break location is typically under the influence of the parent element's ' page-break-inside page-break-after page-break-before left right precedence XSL modifications to the CSS definition: The CSS property shall be treated as a shorthand by XSL and maps as follows: auto break-before keep-with-previous always break-before keep-with-previous avoid break-before keep-with-previous left break-before keep-with-previous right break-before keep-with-previous CSS2 Definition: Value: avoid | auto | inherit Initial: auto Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "page-break-inside" property Note: The CSS definition for page-break-inside page-break-before page-break-inside Values for this property have the following meanings: auto Neither force nor forbid a page break inside the generated box. avoid Avoid a page break inside the generated box. A potential page break location is typically under the influence of the parent element's ' page-break-inside page-break-after page-break-before left right precedence XSL modifications to the CSS definition: XSL treats this as a shorthand and maps it as follows. auto keep-together avoid keep-together CSS2 Definition: Value: [<time> | <percentage>]{1,2} | inherit Initial: depends on user agent Inherited: no Percentages: see descriptions of ' pause-before pause-after Media: aural CSS2 Reference: "pause" property CSS2 Definition:
as amended by http://www.w3.org/Style/css2-updates/REC-CSS2-19980512-errata.html#x11 Value: static | relative | absolute | fixed | inherit Initial: static Inherited: no Percentages: N/A Media: visual CSS2 Reference: "position" property Values have the following meanings: static The box is a normal box, laid out according to the normal flow. The " top right bottom left relative The box's position is calculated according to the normal flow (this is called the position in normal flow). Then the box is offset relative to its normal position. When a box B is relatively positioned, the position of the following box is calculated as though B were not offset. absolute The box's position (and possibly size) is specified with the " left right top bottom fixed The box's position is calculated according to the "absolute" model, but in addition, the box is fixed with respect to some reference. In the case of continuous media, the box is fixed with respect to the viewport (and doesn't move when scrolled). In the case of paged media, the box is fixed with respect to the page, even if that page is seen through a viewport (in the case of a print-preview, for example). Authors may wish to specify "fixed" in a media-dependent way. For instance, an author may want a box to remain at the top the viewport on the screen, but not at the top of each printed page. Specifies the positioning scheme to be used. XSL modifications to the CSS definition: The CSS property shall be treated as a shorthand by XSL and maps as follows: static relative-position absolute-position relative relative-position absolute-position absolute relative-position absolute-position fixed relative-position absolute-position CSS2 Definition: Value: <length>{1,2} | auto | landscape | portrait | inherit Initial: auto Inherited: N/A [XSL:no, is optional] Percentages: N/A Media: visual CSS2 Reference: "size" property This property specifies the size and orientation of a page box. The size of a page box may either be "absolute" (fixed size) or "relative" (scalable, i.e., fitting available sheet sizes). Relative page boxes allow user agents to scale a document and make optimal use of the target size. [The first] Three values for the ' size auto The page box will be set to the size and orientation of the target sheet. landscape Overrides the target's orientation. The page box is the same size as the target, and the longer sides are horizontal. portrait Overrides the target's orientation. The page box is the same size as the target, and the shorter sides are horizontal. <length> Length values for the " size width height size User agents may allow users to control the transfer of the page box to the sheet (e.g., rotating an absolute page box that's being printed). Rendering page boxes that do not fit a target sheet If a page box does not fit the target sheet dimensions, the user agent may choose to: Rotate the page box 90 degrees if this will make the page box fit. Scale the page to fit the target. The user agent should consult the user before performing these operations. Positioning the page box on the sheet When the page box is smaller than the target size, the user agent is free to place the page box anywhere on the sheet. However, it is recommended that the page box be centered on the sheet since this will align double-sided pages and avoid accidental loss of information that is printed near the edge of the sheet. XSL modifications to the CSS definition: This is treated as a CSS shorthand property that is mapped to XSL's " page-height page-width CSS2 Definition: Value: baseline | middle | sub | super | text-top | text-bottom | <percentage> | <length> | top | bottom | inherit Initial: baseline Inherited: no Percentages: refer to the ' line-height Media: visual CSS2 Reference: "vertical-align" property This property affects the vertical positioning inside a line box of the boxes generated by an inline-level element. The following values only have meaning with respect to a parent inline-level element, or to a parent block-level element, if that element generates anonymous inline boxes; they have no effect if no such parent exists. Note: Values of this property have slightly different meanings in the context of tables. Please consult the section on table height Values have the following meanings: baseline Align the baseline of the box with the baseline of the parent box. If the box doesn't have a baseline, align the bottom middle Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent. sub Lower the baseline of the box to the proper position for subscripts of the parent's box. (This value has no effect on the font size of the element's text.) super Raise the baseline of the box to the proper position for superscripts of the parent's box. (This value has no effect on the font size of the element's text.) text-top Align the top of the box with the top of the parent element's font. text-bottom Align the bottom bottom top Align the top of the box with the top of the line box. bottom Align the bottom bottom <percentage> Raise (positive value) or lower (negative value) the box by this distance (a percentage of the " line-height <length> Raise (positive value) or lower (negative value) the box by this distance. The value "0cm" means the same as "baseline". Note: Values of this property have slightly different meanings in the context of tables. Please consult the section on table height XSL modifications to the CSS definition: The CSS property shall be treated as a shorthand by XSL and maps as follows: baseline alignment-baseline alignment-adjust baseline-shift dominant-baseline top alignment-baseline alignment-adjust baseline-shift dominant-baseline text-top alignment-baseline alignment-adjust baseline-shift dominant-baseline middle alignment-baseline alignment-adjust baseline-shift dominant-baseline bottom alignment-baseline alignment-adjust baseline-shift dominant-baseline text-bottom alignment-baseline alignment-adjust baseline-shift dominant-baseline sub alignment-baseline alignment-adjust baseline-shift dominant-baseline super alignment-baseline alignment-adjust baseline-shift dominant-baseline <percentage> alignment-baseline alignment-adjust baseline-shift dominant-baseline <length> alignment-baseline alignment-adjust baseline-shift dominant-baseline CSS2 Definition: Value: normal | pre | nowrap | inherit Initial: normal Inherited: yes Percentages: N/A Media: visual CSS2 Reference: "white-space" property This property declares how whitespace inside the element is handled. Values have the following meanings: normal This value directs user agents to collapse sequences of whitespace, and break lines as necessary to fill line boxes. Additional line breaks may be created by occurrences of "\A" in generated content (e.g., for the BR element in HTML). pre This value prevents user agents from collapsing sequences of whitespace. Lines are only broken at newlines in the source, or at occurrences of "\A" in generated content. nowrap This value collapses whitespace as for 'normal', but suppresses line breaks within text except for those created by "\A" in generated content (e.g., for the BR element in HTML). Conforming user agents may ignore the ' white-space XSL modifications to the CSS definition: XSL splits control of white space collapsing, space and linefeed handling, and wrapping into separate properties. The CSS property shall be treated as a shorthand by XSL and maps as follows: normal linefeed-treatment white-space-collapse white-space-treatment wrap-option pre linefeed-treatment white-space-collapse white-space-treatment wrap-option nowrap linefeed-treatment white-space-collapse white-space-treatment wrap-option XSL Definition: Value: <language-country> | inherit Initial: not defined for shorthand properties Inherited: yes Percentages: N/A Media: visual Values have the following meanings: <string> A language country [RFC3066] Specifies the language country The string may be any RFC 3066 code. XSL treats xml:lang country language Note: In general, linguistic services (line-justification strategy, line-breaking and hyphenation) may depend on a combination of the " language script country In this section the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC2119] This specification defines three levels of conformance, in order of completeness: Basic includes the set of formatting objects and properties needed to support a minimum level of pagination or aural rendering. Extended includes everything else, except for shorthands. It is intended for applications whose goal is to provide sophisticated pagination. Complete includes everything. Conformance to this specification is expressed in terms of conformance to any of the above levels. An application that claims conformance to a given level of this specification must implement all the formatting objects and properties that apply to it for a given medium. A Formatting Object Summary B Property Summary The minimum level of conformance is Basic. A minimally conformant implementation must process as specified all the formatting objects and properties defined for the Basic level of the implementation's target medium. Implementations may choose to process formatting objects from levels or target media other than the one to which they conform. In order to ensure interoperability, this specification defines a fallback for each formatting object in the Extended and Complete levels. An implementation must not claim conformance to a given level if any of the formatting objects at that level is implemented solely as the fallback specified here for that level. Correct processing of fallbacks does not constitute conformance. Conforming implementations must support at least one of the " writing-mode writing-mode writing-mode character This section contains tables summarizing the conformance level of each of the defined formatting objects, i.e., basic or extended. For a description of basic and extended, see 8 Conformance A.6 Link and Multi Formatting Objects Formatting Object Visual Aural fo:root basic basic fo:page-sequence basic basic fo:page-sequence-wrapper basic basic fo:page-sequence-master basic basic fo:single-page-master-reference basic basic fo:repeatable-page-master-reference basic basic fo:repeatable-page-master-alternatives extended fallback: use the page-master referenced in the first fo:conditional-page-master-reference extended fallback: use the page-master referenced in the first fo:conditional-page-master-reference fo:conditional-page-master-reference extended fallback: use the page-master referenced in the first fo:conditional-page-master-reference extended fallback: use the page-master referenced in the first fo:conditional-page-master-reference fo:layout-master-set basic basic fo:simple-page-master basic basic fo:region-body basic basic fo:region-before extended fallback: include after content of body region is placed extended fallback: include after content of body region is spoken fo:region-after extended fallback: include after content of body region is placed extended fallback: include after content of body region is spoken fo:region-start extended fallback: include after content of body region is placed extended fallback: include after content of body region is spoken fo:region-end extended fallback: include after content of body region is placed extended fallback: include after content of body region is spoken fo:declarations basic basic fo:color-profile extended fallback: ignore, use the sRGB fallback of the rgb-icc function N/A fo:flow basic basic fo:static-content extended fallback: include after content of body region is placed extended fallback: include after content of body region is spoken fo:title extended fallback: include before content of body region is placed extended fallback: include before content of body region is spoken fo:flow-map extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:flow-assignment extended fallback: ignore. extended fallback: ignore. fo:flow-source-list extended fallback: ignore. extended fallback: ignore. fo:flow-name-specifier extended fallback: ignore. extended fallback: ignore. fo:flow-target-list extended fallback: ignore. extended fallback: ignore. fo:region-name-specifier extended fallback: ignore. extended fallback: ignore. Formatting Object Visual Aural fo:block basic basic fo:block-container extended fallback: display indication that content cannot be correctly rendered basic Formatting Object Visual Aural fo:bidi-override extended fallback: display indication that content cannot be correctly rendered. basic fo:character basic basic fo:initial-property-set extended fallback: ignore any properties specified on this object. basic fo:external-graphic basic basic fo:instream-foreign-object extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:inline basic basic fo:inline-container extended fallback: display indication that content cannot be correctly rendered. extended fallback: speak fo:leader basic basic fo:page-number basic extended fallback: speak fo:page-number-citation extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:page-number-citation-last extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:folio-prefix extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:folio-suffix extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:scaling-value-citation extended fallback: display indication that content cannot be correctly rendered. extended fallback: speak Formatting Object Visual Aural fo:table-and-caption basic basic fo:table basic basic fo:table-column basic basic fo:table-caption extended fallback: caption-side caption-side caption-side caption-side caption-side left caption-side caption-side right caption-side extended fallback: caption-side caption-side caption-side caption-side caption-side left caption-side caption-side right caption-side fo:table-header basic basic fo:table-footer extended fallback: place at end of table. extended fallback: speak fo:table-body basic basic fo:table-row basic basic fo:table-cell basic basic Formatting Object Visual Aural fo:list-block basic basic fo:list-item basic basic fo:list-item-body basic basic fo:list-item-label extended fallback: labels that break across multiple lines are treated as separate blocks before list-item-body. basic Formatting Object Visual Aural fo:basic-link extended fallback: promote content to parent formatting object. extended fallback: promote content to parent formatting object. fo:multi-switch extended, need not be implemented for extended conformance for non-interactive media fallback for basic conformance and extended conformance for non-interactive media: utilize the contents of the first eligible multi-case formatting object. extended fallback: utilize the contents of the first eligible multi-case formatting object. fo:multi-case basic: needed as wrapper for fallback for multi-switch basic: needed as wrapper for fallback for multi-switch fo:multi-toggle extended, need not be implemented for extended conformance for non-interactive media fallback for basic conformance and extended conformance for non-interactive media: promote content to parent formatting object. extended fallback: promote content to parent formatting object. fo:multi-properties extended, need not be implemented for extended conformance for non-interactive media fallback for basic conformance and extended conformance for non-interactive media: promote content to parent formatting object. extended fallback: promote content to parent formatting object. fo:multi-property-set extended, need not be implemented for extended conformance for non-interactive media fallback for basic conformance and extended conformance for non-interactive media: ignore. extended fallback: ignore. Formatting Object Visual Aural fo:float extended fallback: place inline. extended fallback: place inline. fo:footnote extended fallback: place inline. extended fallback: place inline. fo:footnote-body extended fallback: place inline. extended fallback: place inline. Formatting Object Visual Aural fo:index-page-citation-list extended fallback: display indication that content cannot be correctly rendered. extended fallback: speak fo:index-key-reference extended fallback: ignore. extended fallback: ignore. fo:index-page-number-prefix extended fallback: ignore. extended fallback: ignore. fo:index-page-number-suffix extended fallback: ignore. extended fallback: ignore. fo:index-page-citation-list-separator extended fallback: ignore. extended fallback: ignore. fo:index-page-citation-range-separator extended fallback: ignore. extended fallback: ignore. fo:index-range-begin extended fallback: ignore. extended fallback: ignore. fo:index-range-end extended fallback: ignore. extended fallback: ignore. Formatting Object Visual Aural fo:bookmark-tree extended fallback: display an indication that content cannot be correctly rendered. extended fallback: speak fo:bookmark extended fallback: ignore. extended fallback: ignore. fo:bookmark-title extended fallback: ignore. extended fallback: ignore. Formatting Object Visual Aural fo:change-bar-begin extended fallback: ignore. extended fallback: ignore. fo:change-bar-end extended fallback: ignore. extended fallback: ignore. fo:wrapper basic basic fo:marker extended fallback: ignore. extended fallback: ignore. fo:retrieve-marker extended fallback: display indication that content cannot be correctly rendered. extended fallback: speak fo:retrieve-table-marker extended fallback: display indication that content cannot be correctly rendered. extended fallback: speak Rendering Maps directly into a rendering trait of the same name. Disappears There is no trait mapping. Shorthand A shorthand that is mapped into one or more properties. There are no traits associated with a shorthand property. The traits are associated with the individual properties. Refine Disappears in refinement. During refinement it sets up one or more other traits. Formatting Maps directly into a formatting trait of the same name. Specification Sub-class of formatting. It is the same as a formatting trait, but is specified on formatting objects that are referenced. See prose Used to calculate a formatting trait, which does not have the same name as the property. Other properties may also influence the trait value. See the property description for details. Font selection Property that participates in font selection. Value change Maps to a trait of the same name, but the value is not just copied. Reference An association between two names. Establishes a reference within the formatting object tree. Action Behavior trait. Magic Handled by the formatter in an implementation-defined way. There are no specific traits for this property. Name Values Initial Value Inherited Percentages 7.6.1 absolute-position auto | absolute | fixed | inherit auto no N/A 7.24.1 active-state link | visited | active | hover | focus no, a value is required no N/A 7.15.1 alignment-adjust auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length> | inherit auto no see prose 7.15.2 alignment-baseline auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit auto no N/A 7.16.1 allowed-height-scale [ any | <percentage> ]* | inherit any yes intrinsic height 7.16.2 allowed-width-scale [ any | <percentage> ]* | inherit any yes intrinsic width 7.24.2 auto-restore true | false false yes N/A 7.7.1 azimuth <angle> | [[ left-side | far-left | left right center yes N/A 7.34.1 background [< background-color background-image background-repeat background-attachment background-position not defined for shorthand properties no allowed on ' background-position 7.8.1 background-attachment scroll | fixed | inherit scroll no N/A 7.8.2 background-color <color> | transparent | inherit transparent no N/A 7.8.3 background-image <uri-specification> | none | inherit none no N/A 7.34.2 background-position [ [<percentage> | <length> ]{1,2} | [ [top | center | bottom left right 0% 0% no refer to the size of the box itself 7.8.4 background-position-horizontal <percentage> | <length> | left right 0% no refer to the size of the padding-rectangle 7.8.5 background-position-vertical <percentage> | <length> | top | center | bottom 0% no refer to the size of the padding-rectangle 7.8.6 background-repeat repeat | repeat-x | repeat-y | no-repeat | inherit repeat no N/A 7.15.4 baseline-shift baseline | sub | super | <percentage> | <length> | inherit baseline no refers to the " line-height 7.30.1 blank-or-not-blank blank | not-blank | any | inherit any no N/A 7.16.3 block-progression-dimension auto | <length> | <percentage> | <length-range> | inherit auto no see prose 7.34.3 border [ < border-width border-style see individual properties no N/A 7.8.7 border-after-color <color> | transparent | inherit the value of the ' color no N/A 7.31.1 border-after-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer no N/A 7.8.8 border-after-style < border-style none no N/A 7.8.9 border-after-width < border-width medium no N/A 7.8.10 border-before-color <color> | transparent | inherit the value of the ' color no N/A 7.31.2 border-before-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer no N/A 7.8.11 border-before-style < border-style none no N/A 7.8.12 border-before-width < border-width medium no N/A 7.34.4 border-bottom [ < border-width border-style see individual properties no N/A 7.8.13 border-bottom-color <color> | transparent | inherit the value of the ' color no N/A 7.8.14 border-bottom-style < border-style none no N/A 7.8.15 border-bottom-width < border-width medium no N/A 7.31.3 border-collapse collapse | collapse-with-precedence | separate | inherit collapse yes N/A 7.34.5 border-color [ <color> | transparent ]{1,4} | inherit see individual properties no N/A 7.8.16 border-end-color <color> | transparent | inherit the value of the ' color no N/A 7.31.4 border-end-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer no N/A 7.8.17 border-end-style < border-style none no N/A 7.8.18 border-end-width < border-width medium no N/A 7.34.6 border-left [ < border-width border-style see individual properties no N/A 7.8.19 border-left-color <color> | transparent | inherit the value of the ' color no N/A 7.8.20 border-left-style < border-style none no N/A 7.8.21 border-left-width < border-width medium no N/A 7.34.7 border-right [ < border-width border-style see individual properties no N/A 7.8.22 border-right-color <color> | transparent | inherit the value of the ' color no N/A 7.8.23 border-right-style < border-style none no N/A 7.8.24 border-right-width < border-width medium no N/A 7.31.5 border-separation <length-bp-ip-direction> | inherit .block-progression-direction="0pt" .inline-progression-direction="0pt" yes N/A 7.34.8 border-spacing <length> <length>? | inherit 0pt yes N/A 7.8.25 border-start-color <color> | transparent | inherit the value of the ' color no N/A 7.31.6 border-start-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer no N/A 7.8.26 border-start-style < border-style none no N/A 7.8.27 border-start-width < border-width medium no N/A 7.34.9 border-style < border-style see individual properties no N/A 7.34.10 border-top [ < border-width border-style see individual properties no N/A 7.8.28 border-top-color <color> | transparent | inherit the value of the ' color no N/A 7.8.29 border-top-style < border-style none no N/A 7.8.30 border-top-width < border-width medium no N/A 7.34.11 border-width < border-width see individual properties no N/A 7.6.2 bottom <length> | <percentage> | auto | inherit auto no refer to height 7.21.1 break-after auto | column | page | even-page | odd-page | inherit auto no N/A 7.21.2 break-before auto | column | page | even-page | odd-page | inherit auto no N/A 7.31.7 caption-side before | after | start | end | top | bottom left right before yes N/A 7.24.3 case-name <name> none, a value is required no, a value is required N/A 7.24.4 case-title <string> none, a value is required no, a value is required N/A 7.33.1 change-bar-class <name> none, value required no N/A 7.33.2 change-bar-color <color> the value of the color yes N/A 7.33.3 change-bar-offset <length> 6pt yes N/A 7.33.4 change-bar-placement start | end | left right start yes N/A 7.33.5 change-bar-style < border-style none yes N/A 7.33.6 change-bar-width < border-width medium yes N/A 7.18.1 character < character N/A, value is required no, a value is required N/A 7.20.1 clear start | end | left right none no N/A 7.22.1 clip <shape> | auto | inherit auto no N/A 7.19.1 color <color> | inherit depends on user agent yes N/A 7.19.2 color-profile-name <name> | inherit N/A, value is required no N/A 7.30.2 column-count <number> | inherit 1 no N/A 7.30.3 column-gap <length> | <percentage> | inherit 12.0pt no refer to width 7.31.8 column-number <number> see prose no N/A 7.31.9 column-width <length> | <percentage> see prose no refer to width 7.16.4 content-height auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit | <length> | <percentage> | inherit auto no intrinsic height 7.33.7 content-type <string> | auto auto no N/A 7.16.5 content-width auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit | <length> | <percentage> | inherit auto no intrinsic width 7.10.1 country none | < country none yes N/A 7.34.12 cue < cue-before cue-after not defined for shorthand properties no N/A 7.7.2 cue-after <uri-specification> | none | inherit none no N/A 7.7.3 cue-before <uri-specification> | none | inherit none no N/A 7.24.5 destination-placement-offset <length> 0pt no N/A 7.32.1 direction ltr | rtl | inherit ltr yes N/A 7.15.5 display-align auto | before | center | after | inherit auto yes N/A 7.15.8 dominant-baseline auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge | inherit auto no (see prose) N/A 7.7.4 elevation <angle> | below | level | above | higher | lower | inherit level yes N/A 7.31.10 empty-cells show | hide | inherit show yes N/A 7.11.1 end-indent <length> | <percentage> | inherit 0pt yes refer to inline-progression-dimension 7.31.11 ends-row true | false false no N/A 7.30.5 extent <length> | <percentage> | inherit 0.0pt no refer to the corresponding block-progression-dimension inline-progression-dimension 7.24.6 external-destination empty string | <uri-specification> empty string no N/A 7.20.2 float before | start | end | left right none no N/A 7.30.6 flow-map-name <name> none, a value is required no N/A 7.30.7 flow-map-reference <name> see prose no N/A 7.30.8 flow-name <name> an empty name no, a value is required N/A 7.30.9 flow-name-reference <name> none, a value is required no N/A 7.34.13 font [ [ < font-style font-variant font-weight font-size line-height font-family see individual properties yes N/A 7.9.1 font-family [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit depends on user agent yes N/A 7.9.2 font-selection-strategy auto | character-by-character | inherit auto yes N/A 7.9.3 font-size <absolute-size> | <relative-size> | <length> | <percentage> | inherit medium yes, the computed value is inherited refer to parent element's font size 7.9.4 font-size-adjust <number> | none | inherit none yes N/A 7.9.5 font-stretch normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit normal yes N/A 7.9.6 font-style normal | italic | oblique | backslant | inherit normal yes N/A 7.9.7 font-variant normal | small-caps | inherit normal yes N/A 7.9.8 font-weight normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit normal yes N/A 7.30.10 force-page-count auto | even | odd | end-on-even | end-on-odd | no-force | inherit auto no N/A 7.29.1 format <string> 1 no N/A 7.32.2 glyph-orientation-horizontal <angle> | inherit 0deg yes N/A 7.32.3 glyph-orientation-vertical auto | <angle> | inherit auto yes N/A 7.29.2 grouping-separator < character no separator no N/A 7.29.3 grouping-size <number> no grouping no N/A 7.16.6 height <length> | <percentage> | auto | inherit auto no see prose 7.10.2 hyphenate false | true | inherit false yes N/A 7.10.3 hyphenation-character < character The Unicode hyphen character yes N/A 7.17.1 hyphenation-keep auto | column | page | inherit auto yes N/A 7.17.2 hyphenation-ladder-count no-limit | <number> | inherit no-limit yes N/A 7.10.4 hyphenation-push-character-count <number> | inherit 2 yes N/A 7.10.5 hyphenation-remain-character-count <number> | inherit 2 yes N/A 7.33.8 id < id see prose no, see prose N/A 7.25.1 index-class <string> empty string no N/A 7.25.2 index-key <string> none no N/A 7.24.7 indicate-destination true | false false no N/A 7.30.11 initial-page-number auto | auto-odd | auto-even | <number> | inherit auto no N/A 7.16.7 inline-progression-dimension auto | <length> | <percentage> | <length-range> | inherit auto no see prose 7.24.8 internal-destination empty string | <idref> empty string no N/A 7.33.9 intrinsic-scale-value <percentage> | inherit 100% yes user defined 7.20.3 intrusion-displace auto | none | line | indent | block | inherit auto yes N/A 7.21.3 keep-together <keep> | inherit .within-line=auto, .within-column=auto, .within-page=auto yes N/A 7.21.4 keep-with-next <keep> | inherit .within-line=auto, .within-column=auto, .within-page=auto no N/A 7.21.5 keep-with-previous <keep> | inherit .within-line=auto, .within-column=auto, .within-page=auto no N/A 7.10.6 language none | <language> | inherit none yes N/A 7.17.3 last-line-end-indent <length> | <percentage> | inherit 0pt yes refer to inline-progression-dimension 7.23.1 leader-alignment none | reference-area | page | inherit none yes N/A 7.23.4 leader-length <length-range> | <percentage> | inherit leader-length.minimum=0pt, .optimum=12.0pt, .maximum=100% yes refer to the inline-progression-dimension 7.23.2 leader-pattern space | rule | dots | use-content | inherit space yes N/A 7.23.3 leader-pattern-width use-font-metrics | <length> | <percentage> | inherit use-font-metrics yes refer to the inline-progression-dimension 7.6.3 left <length> | <percentage> | auto | inherit auto no refer to width 7.18.2 letter-spacing normal | <length> | <space> | inherit normal yes N/A 7.29.4 letter-value auto | alphabetic | traditional auto no N/A 7.17.7 linefeed-treatment ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit treat-as-space yes N/A 7.17.4 line-height normal | <length> | <number> | <percentage> | <space> | inherit normal yes refer to the font size of the element itself 7.17.5 line-height-shift-adjustment consider-shifts | disregard-shifts | inherit consider-shifts yes N/A 7.17.6 line-stacking-strategy line-height max-height max-height yes N/A 7.34.14 margin <margin-width>{1,4} | inherit not defined for shorthand properties no refer to width 7.11.2 margin-bottom <margin-width> | inherit 0pt no refer to width 7.11.3 margin-left <margin-width> | inherit 0pt no refer to width 7.11.4 margin-right <margin-width> | inherit 0pt no refer to width 7.11.5 margin-top <margin-width> | inherit 0pt no refer to width 7.26.1 marker-class-name <name> an empty name no, a value is required N/A 7.30.12 master-name <name> an empty name no, a value is required N/A 7.30.13 master-reference <name> an empty name no, a value is required N/A 7.16.8 max-height <length> | <percentage> | none | inherit none no refer to height 7.30.14 maximum-repeats <number> | no-limit | inherit no-limit no N/A 7.16.9 max-width <length> | <percentage> | none | inherit none no refer to width 7.30.15 media-usage auto | paginate | bounded-in-one-dimension | unbounded auto no NA 7.25.6 merge-pages-across-index-key-references merge | leave-separate merge yes N/A 7.25.4 merge-ranges-across-index-key-references merge | leave-separate merge yes N/A 7.25.5 merge-sequential-page-numbers merge | leave-separate merge yes N/A 7.16.10 min-height <length> | <percentage> | inherit 0pt no refer to height 7.16.11 min-width <length> | <percentage> | inherit depends on UA no refer to width 7.31.12 number-columns-repeated <number> 1 no N/A 7.31.13 number-columns-spanned <number> 1 no N/A 7.31.14 number-rows-spanned <number> 1 no N/A 7.30.16 odd-or-even odd | even | any | inherit any no N/A 7.21.6 orphans <integer> | inherit 2 yes N/A 7.22.2 overflow visible | hidden | scroll | error-if-overflow | repeat | auto | inherit auto no N/A 7.34.15 padding <padding-width>{1,4} | inherit not defined for shorthand properties no refer to width 7.8.31 padding-after <padding-width> | <length-conditional> | inherit 0pt no refer to width 7.8.32 padding-before <padding-width> | <length-conditional> | inherit 0pt no refer to width 7.8.33 padding-bottom <padding-width> | inherit 0pt no refer to width 7.8.34 padding-end <padding-width> | <length-conditional> | inherit 0pt no refer to width 7.8.35 padding-left <padding-width> | inherit 0pt no refer to width 7.8.36 padding-right <padding-width> | inherit 0pt no refer to width 7.8.37 padding-start <padding-width> | <length-conditional> | inherit 0pt no refer to width 7.8.38 padding-top <padding-width> | inherit 0pt no refer to width 7.34.16 page-break-after auto | always | avoid | left right auto no N/A 7.34.17 page-break-before auto | always | avoid | left right auto no N/A 7.34.18 page-break-inside avoid | auto | inherit auto yes N/A 7.33.10 page-citation-strategy [ all | normal | non-blank | inherit all no N/A 7.30.17 page-height auto | indefinite | <length> | inherit auto no N/A 7.25.3 page-number-treatment link | no-link no-link yes N/A 7.30.18 page-position only | first | last | rest | any | inherit any no N/A 7.30.19 page-width auto | indefinite | <length> | inherit auto no N/A 7.34.19 pause [<time> | <percentage>]{1,2} | inherit depends on user agent no see descriptions of ' pause-before pause-after 7.7.5 pause-after <time> | <percentage> | inherit depends on user agent no see prose 7.7.6 pause-before <time> | <percentage> | inherit depends on user agent no see prose 7.7.7 pitch <frequency> | x-low | low | medium | high | x-high | inherit medium yes N/A 7.7.8 pitch-range <number> | inherit 50 yes N/A 7.7.9 play-during <uri-specification> mix? repeat? | auto | none | inherit auto no N/A 7.34.20 position static | relative | absolute | fixed | inherit static no N/A 7.30.20 precedence true | false | inherit false no N/A 7.33.11 provisional-distance-between-starts <length> | <percentage> | inherit 24.0pt yes refer to inline-progression-dimension 7.33.12 provisional-label-separation <length> | <percentage> | inherit 6.0pt yes refer to inline-progression-dimension 7.22.3 reference-orientation 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit 0 no N/A 7.33.13 ref-id <idref> | inherit none, value required no N/A 7.25.7 ref-index-key <string> none, value required no N/A 7.30.21 region-name xsl-region-body | xsl-region-start | xsl-region-end | xsl-region-before | xsl-region-after | <name> see prose no, a value is required N/A 7.30.22 region-name-reference <name> none, a value is required no N/A 7.15.9 relative-align before | baseline | inherit before yes N/A 7.13.1 relative-position static | relative | inherit static no N/A 7.19.3 rendering-intent auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inherit auto no N/A 7.26.4 retrieve-boundary page | page-sequence | document page-sequence no N/A 7.26.2 retrieve-boundary-within-table table | table-fragment | page table no N/A 7.26.3 retrieve-class-name <name> an empty name no, a value is required N/A 7.26.5 retrieve-position first-starting-within-page | first-including-carryover | last-starting-within-page | last-ending-within-page first-starting-within-page no N/A 7.26.6 retrieve-position-within-table first-starting | first-including-carryover | last-starting | last-ending first-starting no N/A 7.7.10 richness <number> | inherit 50 yes N/A 7.6.4 right <length> | <percentage> | auto | inherit auto no refer to width 7.5.2 role <string> | <uri-specification> | none | inherit none no N/A 7.23.5 rule-style none | dotted | dashed | solid | double | groove | ridge | inherit solid yes N/A 7.23.6 rule-thickness <length> 1.0pt yes N/A 7.33.14 scale-option width height width yes N/A 7.16.12 scaling uniform | non-uniform | inherit uniform no N/A 7.16.13 scaling-method auto | integer-pixels | resample-any-method | inherit auto no N/A 7.33.15 score-spaces true | false | inherit true yes N/A 7.10.7 script none | auto | < script auto yes N/A 7.24.9 show-destination replace | new replace no N/A 7.34.21 size <length>{1,2} | auto | landscape | portrait | inherit auto N/A [XSL:no, is optional] N/A 7.5.1 source-document <uri-specification> [<uri-specification>]* | none | inherit none no N/A 7.11.6 space-after <space> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence no N/A (Differs from margin-bottom 7.11.7 space-before <space> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence no N/A (Differs from margin-top 7.12.1 space-end <space> | <percentage> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence no refer to inline-progression-dimension 7.12.2 space-start <space> | <percentage> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence no refer to inline-progression-dimension 7.22.4 span none | all | inherit none no N/A 7.7.11 speak normal | none | spell-out | inherit normal yes N/A 7.7.12 speak-header once | always | inherit once yes N/A 7.7.13 speak-numeral digits | continuous | inherit continuous yes N/A 7.7.14 speak-punctuation code | none | inherit none yes N/A 7.7.15 speech-rate <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit medium yes N/A 7.33.16 src <uri-specification> | inherit none, value required no N/A 7.11.8 start-indent <length> | <percentage> | inherit 0pt yes refer to inline-progression-dimension 7.24.10 starting-state show | hide show no N/A 7.31.15 starts-row true | false false no N/A 7.7.16 stress <number> | inherit 50 yes N/A 7.18.3 suppress-at-line-break auto | suppress | retain | inherit auto no N/A 7.24.11 switch-to xsl-preceding | xsl-following | xsl-any | <name>[ <name>]* xsl-any no N/A 7.31.16 table-layout auto | fixed | inherit auto no N/A 7.31.17 table-omit-footer-at-break true | false false no N/A 7.31.18 table-omit-header-at-break true | false false no N/A 7.24.12 target-presentation-context use-target-processing-context | <uri-specification> use-target-processing-context no N/A 7.24.13 target-processing-context document-root | <uri-specification> document-root no N/A 7.24.14 target-stylesheet use-normal-stylesheet | <uri-specification> use-normal-stylesheet no N/A 7.17.8 text-align start | center | end | justify | inside | outside | left right start yes N/A 7.17.9 text-align-last relative | start | center | end | justify | inside | outside | left right relative yes N/A 7.32.4 text-altitude use-font-metrics | <length> | <percentage> | inherit use-font-metrics no refer to font's em-height 7.18.4 text-decoration none | [ [ underline | no-underline] || [ overline | no-overline ] || [ line-through | no-line-through ] || [ blink | no-blink ] ]
| inherit none no, but see prose N/A 7.32.5 text-depth use-font-metrics | <length> | <percentage> | inherit use-font-metrics no refer to font's em-height 7.17.10 text-indent <length> | <percentage> | inherit 0pt yes refer to width 7.18.5 text-shadow none | [<color> || <length> <length> <length>? ,]* [<color> || <length> <length> <length>?] | inherit none no, see prose N/A 7.18.6 text-transform capitalize | uppercase | lowercase | none | inherit none yes N/A 7.6.5 top <length> | <percentage> | auto | inherit auto no refer to height 7.18.7 treat-as-word-space auto | true | false | inherit auto no N/A 7.32.6 unicode-bidi normal | embed | bidi-override | inherit normal no N/A 7.34.22 vertical-align baseline | middle | sub | super | text-top | text-bottom | <percentage> | <length> | top | bottom baseline no refer to the ' line-height 7.33.17 visibility visible | hidden | collapse | inherit visible yes N/A 7.7.17 voice-family [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit depends on user agent yes N/A 7.7.18 volume <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit medium yes refer to inherited value 7.34.23 white-space normal | pre | nowrap | inherit normal yes N/A 7.17.11 white-space-collapse false | true | inherit true yes N/A 7.17.12 white-space-treatment ignore | preserve | ignore-if-before-linefeed | ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit ignore-if-surrounding-linefeed yes N/A 7.21.7 widows <integer> | inherit 2 yes N/A 7.16.14 width <length> | <percentage> | auto | inherit auto no refer to width 7.18.8 word-spacing normal | <length> | <space> | inherit normal yes N/A 7.17.13 wrap-option no-wrap | wrap | inherit wrap yes N/A 7.32.7 writing-mode lr-tb | rl-tb | tb-rl | tb-lr | bt-lr | bt-rl | lr-bt | rl-bt | lr-alternating-rl-bt | lr-alternating-rl-tb | lr-inverting-rl-bt | lr-inverting-rl-tb | tb-lr-in-lr-pairs | lr | rl | tb | inherit lr-tb yes (see prose) N/A 7.34.24 xml:lang <language-country> | inherit not defined for shorthand properties yes N/A 7.33.18 z-index auto | <integer> | inherit auto no N/A The Trait Mapping Values are explained in B.1 Explanation of Trait Mapping Values Name Values Initial Value Trait mapping Core 7.6.1 absolute-position auto | absolute | fixed | inherit auto See prose. Complete 7.24.1 active-state link | visited | active | hover | focus no, a value is required Action Extended. Fallback: N/A use fallback for fo:multi-properties 7.15.1 alignment-adjust auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length> | inherit auto Formatting Basic 7.15.2 alignment-baseline auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit auto Formatting Basic 7.16.1 allowed-height-scale [ any | <percentage> ]* | inherit any Formatting Extended. Fallback: Initial value 7.16.2 allowed-width-scale [ any | <percentage> ]* | inherit any Formatting Extended. Fallback: Initial value 7.24.2 auto-restore true | false false Action Extended. Fallback: N/A use fallback for fo:multi-switch 7.7.1 azimuth <angle> | [[ left-side | far-left | left right center Rendering Basic 7.34.1 background [< background-color background-image background-repeat background-attachment background-position not defined for shorthand properties Shorthand Complete 7.8.1 background-attachment scroll | fixed | inherit scroll Rendering Extended. Fallback: Initial value 7.8.2 background-color <color> | transparent | inherit transparent Rendering Basic 7.8.3 background-image <uri-specification> | none | inherit none Rendering Extended. Fallback: Initial value 7.34.2 background-position [ [<percentage> | <length> ]{1,2} | [ [top | center | bottom left right 0% 0% Shorthand Complete 7.8.4 background-position-horizontal <percentage> | <length> | left right 0% Value change Extended. Fallback: Initial value 7.8.5 background-position-vertical <percentage> | <length> | top | center | bottom 0% Value change Extended. Fallback: Initial value 7.8.6 background-repeat repeat | repeat-x | repeat-y | no-repeat | inherit repeat Rendering Extended. Fallback: no-repeat 7.15.4 baseline-shift baseline | sub | super | <percentage> | <length> | inherit baseline Formatting Basic 7.30.1 blank-or-not-blank blank | not-blank | any | inherit any Specification Extended. Fallback: N/A use fallback for fo:repeatable-page-master-alternatives 7.16.3 block-progression-dimension auto | <length> | <percentage> | <length-range> | inherit auto Formatting Basic 7.34.3 border [ < border-width border-style see individual properties Shorthand Complete 7.8.7 border-after-color <color> | transparent | inherit the value of the ' color Rendering Basic 7.31.1 border-after-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Formatting Basic 7.8.8 border-after-style < border-style none Rendering Basic 7.8.9 border-after-width < border-width medium Formatting and Rendering Basic 7.8.10 border-before-color <color> | transparent | inherit the value of the ' color Rendering Basic 7.31.2 border-before-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Formatting Basic 7.8.11 border-before-style < border-style none Rendering Basic 7.8.12 border-before-width < border-width medium Formatting and Rendering Basic 7.34.4 border-bottom [ < border-width border-style see individual properties Shorthand Complete 7.8.13 border-bottom-color <color> | transparent | inherit the value of the ' color Disappears Basic 7.8.14 border-bottom-style < border-style none Disappears Basic 7.8.15 border-bottom-width < border-width medium Disappears Basic 7.31.3 border-collapse collapse | collapse-with-precedence | separate | inherit collapse Formatting Extended. Fallback: Initial value 7.34.5 border-color [ <color> | transparent ]{1,4} | inherit see individual properties Shorthand Complete 7.8.16 border-end-color <color> | transparent | inherit the value of the ' color Rendering Basic 7.31.4 border-end-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Formatting Basic 7.8.17 border-end-style < border-style none Rendering Basic 7.8.18 border-end-width < border-width medium Formatting and Rendering Basic 7.34.6 border-left [ < border-width border-style see individual properties Shorthand Complete 7.8.19 border-left-color <color> | transparent | inherit the value of the ' color Disappears Basic 7.8.20 border-left-style < border-style none Disappears Basic 7.8.21 border-left-width < border-width medium Disappears Basic 7.34.7 border-right [ < border-width border-style see individual properties Shorthand Complete 7.8.22 border-right-color <color> | transparent | inherit the value of the ' color Disappears Basic 7.8.23 border-right-style < border-style none Disappears Basic 7.8.24 border-right-width < border-width medium Disappears Basic 7.31.5 border-separation <length-bp-ip-direction> | inherit .block-progression-direction="0pt" .inline-progression-direction="0pt" Formatting Extended. Fallback: Initial value 7.34.8 border-spacing <length> <length>? | inherit 0pt Shorthand Complete 7.8.25 border-start-color <color> | transparent | inherit the value of the ' color Rendering Basic 7.31.6 border-start-precedence force | <integer> | inherit fo:table fo:table-cell fo:table-column fo:table-row fo:table-body fo:table-header fo:table-footer Formatting Basic 7.8.26 border-start-style < border-style none Rendering Basic 7.8.27 border-start-width < border-width medium Formatting and Rendering Basic 7.34.9 border-style < border-style see individual properties Shorthand Complete 7.34.10 border-top [ < border-width border-style see individual properties Shorthand Complete 7.8.28 border-top-color <color> | transparent | inherit the value of the ' color Disappears Basic 7.8.29 border-top-style < border-style none Disappears Basic 7.8.30 border-top-width < border-width medium Disappears Basic 7.34.11 border-width < border-width see individual properties Shorthand Complete 7.6.2 bottom <length> | <percentage> | auto | inherit auto Formatting Extended. Fallback: N/A due to fallback for absolute-position relative-position 7.21.1 break-after auto | column | page | even-page | odd-page | inherit auto Formatting Basic 7.21.2 break-before auto | column | page | even-page | odd-page | inherit auto Formatting Basic 7.31.7 caption-side before | after | start | end | top | bottom left right before Formatting Complete 7.24.3 case-name <name> none, a value is required Action Extended. Fallback: N/A use fallback for fo:multi-switch 7.24.4 case-title <string> none, a value is required Action Extended. Fallback: N/A use fallback for fo:multi-switch 7.33.1 change-bar-class <name> none, value required Reference Extended. Fallback: N/A use fallback for fo:change-bar-begin fo:change-bar-end 7.33.2 change-bar-color <color> the value of the color Rendering Extended. Fallback: N/A use fallback for fo:change-bar-begin fo:change-bar-end 7.33.3 change-bar-offset <length> 6pt Formatting Extended. Fallback: N/A use fallback for fo:change-bar-begin fo:change-bar-end 7.33.4 change-bar-placement start | end | left right start Formatting Extended. Fallback: N/A use fallback for fo:change-bar-begin fo:change-bar-end 7.33.5 change-bar-style < border-style none Rendering Extended. Fallback: N/A use fallback for fo:change-bar-begin fo:change-bar-end 7.33.6 change-bar-width < border-width medium Rendering Extended. Fallback: N/A use fallback for fo:change-bar-begin fo:change-bar-end 7.18.1 character < character N/A, value is required Formatting Basic 7.20.1 clear start | end | left right none Formatting Extended. Fallback: N/A use fallback for fo:float 7.22.1 clip <shape> | auto | inherit auto Rendering Extended. Fallback: Initial value 7.19.1 color <color> | inherit depends on user agent Rendering Basic 7.19.2 color-profile-name <name> | inherit N/A, value is required Formatting Extended. Fallback: N/A use fallback for fo:color-profile 7.30.2 column-count <number> | inherit 1 Specification Extended. Fallback: Initial value 7.30.3 column-gap <length> | <percentage> | inherit 12.0pt Specification Extended. Fallback: N/A due to fallback for column-count 7.31.8 column-number <number> see prose Value change Basic 7.31.9 column-width <length> | <percentage> see prose Specification Basic 7.16.4 content-height auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit | <length> | <percentage> | inherit auto Formatting Extended. Fallback: Initial value 7.33.7 content-type <string> | auto auto Formatting Extended. Fallback: Initial value 7.16.5 content-width auto | scale-to-fit | scale-down-to-fit | scale-up-to-fit | <length> | <percentage> | inherit auto Formatting Extended. Fallback: Initial value 7.10.1 country none | < country none Formatting Extended. Fallback: Initial value 7.34.12 cue < cue-before cue-after not defined for shorthand properties Shorthand Complete 7.7.2 cue-after <uri-specification> | none | inherit none Rendering Basic 7.7.3 cue-before <uri-specification> | none | inherit none Rendering Basic 7.24.5 destination-placement-offset <length> 0pt Action Extended. Fallback: N/A use fallback for fo:basic-link 7.32.1 direction ltr | rtl | inherit ltr See prose. Basic 7.15.5 display-align auto | before | center | after | inherit auto Formatting Extended. Fallback: Initial value 7.15.8 dominant-baseline auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge | inherit auto Formatting Basic 7.7.4 elevation <angle> | below | level | above | higher | lower | inherit level Rendering Basic 7.31.10 empty-cells show | hide | inherit show Formatting Extended. Fallback: Initial value 7.11.1 end-indent <length> | <percentage> | inherit 0pt Formatting Basic 7.31.11 ends-row true | false false Formatting Extended. Fallback: Initial value 7.30.5 extent <length> | <percentage> | inherit 0.0pt Specification Extended. Fallback: N/A use fallback for fo:region-before fo:region-after fo:region-start fo:region-end 7.24.6 external-destination empty string | <uri-specification> empty string Action Extended. Fallback: N/A use fallback for fo:basic-link 7.20.2 float before | start | end | left right none Formatting Extended. Fallback: N/A use fallback for fo:float 7.30.6 flow-map-name <name> none, a value is required Specification Extended. Fallback: N/A use fallback for fo:flow-map 7.30.7 flow-map-reference <name> see prose Specification Extended. Fallback: N/A use fallback for fo:flow-map 7.30.8 flow-name <name> an empty name Reference Basic 7.30.9 flow-name-reference <name> none, a value is required Specification Extended. Fallback: N/A use fallback for fo:flow-map 7.34.13 font [ [ < font-style font-variant font-weight font-size line-height font-family see individual properties Shorthand Complete 7.9.1 font-family [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit depends on user agent Font selection Basic 7.9.2 font-selection-strategy auto | character-by-character | inherit auto Font selection Complete 7.9.3 font-size <absolute-size> | <relative-size> | <length> | <percentage> | inherit medium Formatting and Rendering Basic 7.9.4 font-size-adjust <number> | none | inherit none Font selection Extended. Fallback: Initial value 7.9.5 font-stretch normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit normal Font selection Extended. Fallback: Initial value 7.9.6 font-style normal | italic | oblique | backslant | inherit normal Font selection Basic 7.9.7 font-variant normal | small-caps | inherit normal Font selection Basic 7.9.8 font-weight normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit normal Font selection Basic 7.30.10 force-page-count auto | even | odd | end-on-even | end-on-odd | no-force | inherit auto Specification Extended. Fallback: no-force 7.29.1 format <string> 1 Formatting Basic 7.32.2 glyph-orientation-horizontal <angle> | inherit 0deg Formatting Extended. Fallback: Initial value 7.32.3 glyph-orientation-vertical auto | <angle> | inherit auto Formatting Extended. Fallback: Initial value 7.29.2 grouping-separator < character no separator Formatting Extended. Fallback: no separator 7.29.3 grouping-size <number> no grouping Formatting Extended. Fallback: no grouping 7.16.6 height <length> | <percentage> | auto | inherit auto Disappears Basic 7.10.2 hyphenate false | true | inherit false Formatting Extended. Fallback: Initial value 7.10.3 hyphenation-character < character The Unicode hyphen character Formatting Extended. Fallback: N/A due to fallback for hyphenate 7.17.1 hyphenation-keep auto | column | page | inherit auto Formatting Extended. Fallback: N/A due to fallback for hyphenate 7.17.2 hyphenation-ladder-count no-limit | <number> | inherit no-limit Formatting Extended. Fallback: N/A due to fallback for hyphenate 7.10.4 hyphenation-push-character-count <number> | inherit 2 Formatting Extended. Fallback: N/A due to fallback for hyphenate 7.10.5 hyphenation-remain-character-count <number> | inherit 2 Formatting Extended. Fallback: N/A due to fallback for hyphenate 7.33.8 id < id see prose Reference Basic 7.25.1 index-class <string> empty string Reference Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.25.2 index-key <string> none Reference Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.24.7 indicate-destination true | false false Action Extended. Fallback: N/A use fallback for fo:basic-link 7.30.11 initial-page-number auto | auto-odd | auto-even | <number> | inherit auto Formatting Basic 7.16.7 inline-progression-dimension auto | <length> | <percentage> | <length-range> | inherit auto Formatting Basic 7.24.8 internal-destination empty string | <idref> empty string Action Extended. Fallback: N/A use fallback for fo:basic-link 7.33.9 intrinsic-scale-value <percentage> | inherit 100% Refine Extended. Fallback: N/A use fallback for fo:scaling-value-citation 7.20.3 intrusion-displace auto | none | line | indent | block | inherit auto Formatting Extended. Fallback: none 7.21.3 keep-together <keep> | inherit .within-line=auto, .within-column=auto, .within-page=auto Formatting Extended. Fallback: Initial value 7.21.4 keep-with-next <keep> | inherit .within-line=auto, .within-column=auto, .within-page=auto Formatting Basic 7.21.5 keep-with-previous <keep> | inherit .within-line=auto, .within-column=auto, .within-page=auto Formatting Basic 7.10.6 language none | <language> | inherit none Value change Extended. Fallback: Initial value 7.17.3 last-line-end-indent <length> | <percentage> | inherit 0pt Formatting Extended. Fallback: Initial value 7.23.1 leader-alignment none | reference-area | page | inherit none Formatting Extended. Fallback: Initial value 7.23.4 leader-length <length-range> | <percentage> | inherit leader-length.minimum=0pt, .optimum=12.0pt, .maximum=100% Formatting Basic 7.23.2 leader-pattern space | rule | dots | use-content | inherit space Formatting Basic 7.23.3 leader-pattern-width use-font-metrics | <length> | <percentage> | inherit use-font-metrics Formatting Extended. Fallback: Initial value 7.6.3 left <length> | <percentage> | auto | inherit auto Formatting Extended. Fallback: N/A due to fallback for absolute-position relative-position 7.18.2 letter-spacing normal | <length> | <space> | inherit normal Disappears Extended. Fallback: Initial value 7.29.4 letter-value auto | alphabetic | traditional auto Formatting Basic 7.17.7 linefeed-treatment ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit treat-as-space Formatting Extended. Fallback: Initial value 7.17.4 line-height normal | <length> | <number> | <percentage> | <space> | inherit normal Formatting Basic 7.17.5 line-height-shift-adjustment consider-shifts | disregard-shifts | inherit consider-shifts Formatting Extended. Fallback: Initial value 7.17.6 line-stacking-strategy line-height max-height max-height Formatting Basic 7.34.14 margin <margin-width>{1,4} | inherit not defined for shorthand properties Shorthand Complete 7.11.2 margin-bottom <margin-width> | inherit 0pt Disappears Basic 7.11.3 margin-left <margin-width> | inherit 0pt Disappears Basic 7.11.4 margin-right <margin-width> | inherit 0pt Disappears Basic 7.11.5 margin-top <margin-width> | inherit 0pt Disappears Basic 7.26.1 marker-class-name <name> an empty name Formatting Extended. Fallback: N/A use fallback for fo:marker 7.30.12 master-name <name> an empty name Specification Basic 7.30.13 master-reference <name> an empty name Specification Basic 7.16.8 max-height <length> | <percentage> | none | inherit none Shorthand Complete 7.30.14 maximum-repeats <number> | no-limit | inherit no-limit Specification Extended. Fallback: N/A use fallback for fo:repeatable-page-master-reference fo:repeatable-page-master-alternatives 7.16.9 max-width <length> | <percentage> | none | inherit none Shorthand Complete 7.30.15 media-usage auto | paginate | bounded-in-one-dimension | unbounded auto Formatting Extended. Fallback: Initial value 7.25.6 merge-pages-across-index-key-references merge | leave-separate merge Specification Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.25.4 merge-ranges-across-index-key-references merge | leave-separate merge Specification Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.25.5 merge-sequential-page-numbers merge | leave-separate merge Specification Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.16.10 min-height <length> | <percentage> | inherit 0pt Shorthand Complete 7.16.11 min-width <length> | <percentage> | inherit depends on UA Shorthand Complete 7.31.12 number-columns-repeated <number> 1 Specification Basic 7.31.13 number-columns-spanned <number> 1 Formatting Basic 7.31.14 number-rows-spanned <number> 1 Formatting Basic 7.30.16 odd-or-even odd | even | any | inherit any Specification Extended. Fallback: N/A use fallback for fo:repeatable-page-master-alternatives 7.21.6 orphans <integer> | inherit 2 Formatting Basic 7.22.2 overflow visible | hidden | scroll | error-if-overflow | repeat | auto | inherit auto Formatting Basic 7.34.15 padding <padding-width>{1,4} | inherit not defined for shorthand properties Shorthand Complete 7.8.31 padding-after <padding-width> | <length-conditional> | inherit 0pt Formatting and Rendering Basic 7.8.32 padding-before <padding-width> | <length-conditional> | inherit 0pt Formatting and Rendering Basic 7.8.33 padding-bottom <padding-width> | inherit 0pt Disappears Basic 7.8.34 padding-end <padding-width> | <length-conditional> | inherit 0pt Formatting and Rendering Basic 7.8.35 padding-left <padding-width> | inherit 0pt Disappears Basic 7.8.36 padding-right <padding-width> | inherit 0pt Disappears Basic 7.8.37 padding-start <padding-width> | <length-conditional> | inherit 0pt Formatting and Rendering Basic 7.8.38 padding-top <padding-width> | inherit 0pt Disappears Basic 7.34.16 page-break-after auto | always | avoid | left right auto Shorthand Complete 7.34.17 page-break-before auto | always | avoid | left right auto Shorthand Complete 7.34.18 page-break-inside avoid | auto | inherit auto Shorthand Complete 7.33.10 page-citation-strategy [ all | normal | non-blank | inherit all Specification Extended. Fallback: N/A use fallback for fo:page-number-citation-last 7.30.17 page-height auto | indefinite | <length> | inherit auto Specification Basic 7.25.3 page-number-treatment link | no-link no-link Action Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.30.18 page-position only | first | last | rest | any | inherit any Specification Extended. Fallback: N/A use fallback for fo:repeatable-page-master-alternatives 7.30.19 page-width auto | indefinite | <length> | inherit auto Specification Basic 7.34.19 pause [<time> | <percentage>]{1,2} | inherit depends on user agent Shorthand Complete 7.7.5 pause-after <time> | <percentage> | inherit depends on user agent Rendering Basic 7.7.6 pause-before <time> | <percentage> | inherit depends on user agent Rendering Basic 7.7.7 pitch <frequency> | x-low | low | medium | high | x-high | inherit medium Rendering Basic 7.7.8 pitch-range <number> | inherit 50 Rendering Basic 7.7.9 play-during <uri-specification> mix? repeat? | auto | none | inherit auto Rendering Basic 7.34.20 position static | relative | absolute | fixed | inherit static Shorthand Complete 7.30.20 precedence true | false | inherit false Specification Extended. Fallback: N/A use fallback for fo:region-before fo:region-after 7.33.11 provisional-distance-between-starts <length> | <percentage> | inherit 24.0pt Specification Basic 7.33.12 provisional-label-separation <length> | <percentage> | inherit 6.0pt Specification Basic 7.22.3 reference-orientation 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit 0 See prose. Extended. Fallback: Initial value 7.33.13 ref-id <idref> | inherit none, value required Reference Extended. Fallback: N/A use fallback for fo:page-number-citation 7.25.7 ref-index-key <string> none, value required Reference Extended. Fallback: N/A use fallback for fo:index-page-citation-list 7.30.21 region-name xsl-region-body | xsl-region-start | xsl-region-end | xsl-region-before | xsl-region-after | <name> see prose Specification Basic 7.30.22 region-name-reference <name> none, a value is required Specification Extended. Fallback: N/A use fallback for fo:flow-map 7.15.9 relative-align before | baseline | inherit before Formatting Extended. Fallback: Initial value 7.13.1 relative-position static | relative | inherit static See prose. Extended. Fallback: Initial value 7.19.3 rendering-intent auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric | inherit auto Formatting Extended. Fallback: N/A use fallback for fo:color-profile 7.26.4 retrieve-boundary page | page-sequence | document page-sequence Formatting Extended. Fallback: N/A use fallback for fo:retrieve-marker 7.26.2 retrieve-boundary-within-table table | table-fragment | page table Formatting Extended. Fallback: N/A use fallback for fo:retrieve-table-marker 7.26.3 retrieve-class-name <name> an empty name Formatting Extended. Fallback: N/A use fallback for fo:retrieve-marker 7.26.5 retrieve-position first-starting-within-page | first-including-carryover | last-starting-within-page | last-ending-within-page first-starting-within-page Formatting Extended. Fallback: N/A use fallback for fo:retrieve-marker 7.26.6 retrieve-position-within-table first-starting | first-including-carryover | last-starting | last-ending first-starting Formatting Extended. Fallback: N/A use fallback for fo:retrieve-table-marker 7.7.10 richness <number> | inherit 50 Rendering Basic 7.6.4 right <length> | <percentage> | auto | inherit auto Formatting Extended. Fallback: N/A due to fallback for absolute-position relative-position 7.5.2 role <string> | <uri-specification> | none | inherit none Rendering Basic 7.23.5 rule-style none | dotted | dashed | solid | double | groove | ridge | inherit solid Rendering Basic 7.23.6 rule-thickness <length> 1.0pt Rendering Basic 7.33.14 scale-option width height width Refine Extended. Fallback: N/A use fallback for fo:scaling-value-citation 7.16.12 scaling uniform | non-uniform | inherit uniform Formatting Extended. Fallback: Initial value 7.16.13 scaling-method auto | integer-pixels | resample-any-method | inherit auto Formatting Extended. Fallback: Initial value 7.33.15 score-spaces true | false | inherit true Formatting Extended. Fallback: Initial value 7.10.7 script none | auto | < script auto Formatting Extended. Fallback: none 7.24.9 show-destination replace | new replace Action Extended. Fallback: N/A use fallback for fo:basic-link 7.34.21 size <length>{1,2} | auto | landscape | portrait | inherit auto Shorthand Complete 7.5.1 source-document <uri-specification> [<uri-specification>]* | none | inherit none Rendering Basic 7.11.6 space-after <space> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Formatting Basic 7.11.7 space-before <space> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Formatting Basic 7.12.1 space-end <space> | <percentage> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Formatting Basic 7.12.2 space-start <space> | <percentage> | inherit space.minimum=0pt, .optimum=0pt, .maximum=0pt, .conditionality=discard, . precedence Formatting Basic 7.22.4 span none | all | inherit none Formatting Extended. Fallback: Initial value 7.7.11 speak normal | none | spell-out | inherit normal Rendering Basic 7.7.12 speak-header once | always | inherit once Rendering Basic 7.7.13 speak-numeral digits | continuous | inherit continuous Rendering Basic 7.7.14 speak-punctuation code | none | inherit none Rendering Basic 7.7.15 speech-rate <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit medium Rendering Basic 7.33.16 src <uri-specification> | inherit none, value required Reference Basic 7.11.8 start-indent <length> | <percentage> | inherit 0pt Formatting Basic 7.24.10 starting-state show | hide show Action Extended. Fallback: N/A use fallback for fo:multi-switch 7.31.15 starts-row true | false false Formatting Extended. Fallback: Initial value 7.7.16 stress <number> | inherit 50 Rendering Basic 7.18.3 suppress-at-line-break auto | suppress | retain | inherit auto Formatting Extended. Fallback: Initial value 7.24.11 switch-to xsl-preceding | xsl-following | xsl-any | <name>[ <name>]* xsl-any Action Extended. Fallback: N/A use fallback for fo:multi-switch 7.31.16 table-layout auto | fixed | inherit auto Formatting Extended. Fallback: fixed 7.31.17 table-omit-footer-at-break true | false false Formatting Extended. Fallback: Initial value 7.31.18 table-omit-header-at-break true | false false Formatting Extended. Fallback: Initial value 7.24.12 target-presentation-context use-target-processing-context | <uri-specification> use-target-processing-context Action Extended. Fallback: N/A use fallback for fo:basic-link 7.24.13 target-processing-context document-root | <uri-specification> document-root Action Extended. Fallback: N/A use fallback for fo:basic-link 7.24.14 target-stylesheet use-normal-stylesheet | <uri-specification> use-normal-stylesheet Action Extended. Fallback: N/A use fallback for fo:basic-link 7.17.8 text-align start | center | end | justify | inside | outside | left right start Value change Basic 7.17.9 text-align-last relative | start | center | end | justify | inside | outside | left right relative Value change Extended. Fallback: Initial value 7.32.4 text-altitude use-font-metrics | <length> | <percentage> | inherit use-font-metrics Formatting Extended. Fallback: Initial value 7.18.4 text-decoration none | [ [ underline | no-underline] || [ overline | no-overline ] || [ line-through | no-line-through ] || [ blink | no-blink ] ]
| inherit none See prose. Extended. Fallback: Initial value 7.32.5 text-depth use-font-metrics | <length> | <percentage> | inherit use-font-metrics Formatting Extended. Fallback: Initial value 7.17.10 text-indent <length> | <percentage> | inherit 0pt Formatting Basic 7.18.5 text-shadow none | [<color> || <length> <length> <length>? ,]* [<color> || <length> <length> <length>?] | inherit none Rendering Extended. Fallback: Initial value 7.18.6 text-transform capitalize | uppercase | lowercase | none | inherit none Refine Extended. Fallback: Initial value 7.6.5 top <length> | <percentage> | auto | inherit auto Formatting Extended. Fallback: N/A due to fallback for absolute-position relative-position 7.18.7 treat-as-word-space auto | true | false | inherit auto Formatting Extended. Fallback: Initial value 7.32.6 unicode-bidi normal | embed | bidi-override | inherit normal Formatting Extended. Fallback: See prose 7.34.22 vertical-align baseline | middle | sub | super | text-top | text-bottom | <percentage> | <length> | top | bottom baseline Shorthand Complete 7.33.17 visibility visible | hidden | collapse | inherit visible Magic Extended. Fallback: Initial value 7.7.17 voice-family [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit depends on user agent Rendering Basic 7.7.18 volume <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit medium Rendering Basic 7.34.23 white-space normal | pre | nowrap | inherit normal Shorthand Complete 7.17.11 white-space-collapse false | true | inherit true Formatting Extended. Fallback: Initial value 7.17.12 white-space-treatment ignore | preserve | ignore-if-before-linefeed | ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit ignore-if-surrounding-linefeed Formatting Extended. Fallback: Initial value 7.21.7 widows <integer> | inherit 2 Formatting Basic 7.16.14 width <length> | <percentage> | auto | inherit auto Disappears Basic 7.18.8 word-spacing normal | <length> | <space> | inherit normal Disappears Extended. Fallback: Initial value 7.17.13 wrap-option no-wrap | wrap | inherit wrap Formatting Basic 7.32.7 writing-mode lr-tb | rl-tb | tb-rl | tb-lr | bt-lr | bt-rl | lr-bt | rl-bt | lr-alternating-rl-bt | lr-alternating-rl-tb | lr-inverting-rl-bt | lr-inverting-rl-tb | tb-lr-in-lr-pairs | lr | rl | tb | inherit lr-tb See prose. Basic 7.34.24 xml:lang <language-country> | inherit not defined for shorthand properties Shorthand Complete 7.33.18 z-index auto | <integer> | inherit auto Value change Extended. Fallback: N/A due to fallback for fo:block-container For each property the formatting objects it applies to is listed. It should be noted, however, that for some formatting objects there are qualifications on applicability or values permitted. Property absolute-position fo:block-container Property active-state fo:multi-property-set Property alignment-adjust fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property alignment-baseline fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property allowed-height-scale fo:external-graphic fo:instream-foreign-object Property allowed-width-scale fo:external-graphic fo:instream-foreign-object Property auto-restore fo:multi-switch Property azimuth fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property background-attachment fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property background-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property background-image fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property background-position-horizontal fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property background-position-vertical fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property background-repeat fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property baseline-shift fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property blank-or-not-blank fo:conditional-page-master-reference Property block-progression-dimension fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:table fo:table-caption fo:table-row fo:table-cell Property border-after-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-after-precedence fo:table fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell Property border-after-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-after-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-before-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-before-precedence fo:table fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell Property border-before-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-before-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-bottom-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-bottom-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-bottom-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-collapse fo:table Property border-end-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-end-precedence fo:table fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell Property border-end-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-end-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-left-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-left-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-left-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-right-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-right-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-right-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-separation fo:table Property border-start-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-start-precedence fo:table fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell Property border-start-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-start-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-top-color fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-top-style fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property border-top-width fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-column fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property bottom fo:block-container Property bottom fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property break-after fo:block fo:block-container fo:table-and-caption fo:table fo:table-row fo:list-block fo:list-item Property break-before fo:block fo:block-container fo:table-and-caption fo:table fo:table-row fo:list-block fo:list-item Property caption-side fo:table-and-caption Property case-name fo:multi-case Property case-title fo:multi-case Property change-bar-class fo:change-bar-begin fo:change-bar-end Property change-bar-color fo:change-bar-begin Property change-bar-offset fo:change-bar-begin Property change-bar-placement fo:change-bar-begin Property change-bar-style fo:change-bar-begin Property change-bar-width fo:change-bar-begin Property character fo:character Property clear fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:float Property clip fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline-container Property color fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:bookmark-title Property color-profile-name fo:color-profile Property column-count fo:region-body Property column-gap fo:region-body Property column-number fo:table-column fo:table-cell Property column-width fo:table-column Property content-height fo:external-graphic fo:instream-foreign-object Property content-type fo:external-graphic fo:instream-foreign-object Property content-width fo:external-graphic fo:instream-foreign-object Property country fo:block fo:character Property cue-after fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property cue-before fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property destination-placement-offset fo:basic-link Property direction fo:bidi-override Property display-align fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline-container fo:table-cell Property dominant-baseline fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property elevation fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property empty-cells fo:table-cell Property end-indent fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property ends-row fo:table-cell Property extent fo:region-before fo:region-after fo:region-start fo:region-end Property external-destination fo:basic-link fo:bookmark Property float fo:float Property flow-map-name fo:flow-map Property flow-map-reference fo:page-sequence Property flow-name fo:flow fo:static-content Property flow-name-reference fo:flow-name-specifier Property font-family fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-selection-strategy fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-size fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-size-adjust fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-stretch fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-style fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-variant fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property font-weight fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property force-page-count fo:page-sequence Property format fo:page-sequence fo:scaling-value-citation Property glyph-orientation-horizontal fo:character Property glyph-orientation-vertical fo:character Property grouping-separator fo:page-sequence fo:scaling-value-citation Property grouping-size fo:page-sequence fo:scaling-value-citation Property height fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:table fo:table-caption fo:table-row fo:table-cell Property hyphenate fo:block fo:character Property hyphenation-character fo:block fo:character Property hyphenation-keep fo:block Property hyphenation-ladder-count fo:block Property hyphenation-push-character-count fo:block fo:character Property hyphenation-remain-character-count fo:block fo:character Property id fo:root fo:page-sequence fo:page-sequence-wrapper fo:flow fo:static-content fo:block fo:block-container fo:bidi-override fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:basic-link fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-property-set fo:index-range-begin fo:float fo:footnote fo:footnote-body fo:wrapper Property index-class fo:root fo:page-sequence fo:page-sequence-wrapper fo:flow fo:static-content fo:block fo:block-container fo:bidi-override fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:basic-link fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-property-set fo:index-range-begin fo:float fo:footnote fo:footnote-body fo:wrapper Property index-key fo:root fo:page-sequence fo:page-sequence-wrapper fo:flow fo:static-content fo:block fo:block-container fo:bidi-override fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:basic-link fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-property-set fo:index-range-begin fo:float fo:footnote fo:footnote-body fo:wrapper Property indicate-destination fo:basic-link Property initial-page-number fo:page-sequence Property inline-progression-dimension fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:table fo:table-caption fo:table-cell Property internal-destination fo:basic-link fo:bookmark Property intrinsic-scale-value fo:scaling-value-citation Property intrusion-displace fo:block fo:block-container fo:table-and-caption fo:table fo:table-caption fo:list-block fo:list-item Property keep-together fo:block fo:block-container fo:inline fo:inline-container fo:table-and-caption fo:table fo:table-caption fo:table-row fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:basic-link Property keep-with-next fo:block fo:block-container fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-row fo:list-block fo:list-item fo:basic-link Property keep-with-previous fo:block fo:block-container fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-row fo:list-block fo:list-item fo:basic-link Property language fo:block fo:character Property last-line-end-indent fo:block Property leader-alignment fo:leader Property leader-length fo:leader Property leader-pattern fo:leader Property leader-pattern-width fo:leader Property left fo:block-container Property left fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property letter-spacing fo:bidi-override fo:character fo:initial-property-set fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property letter-value fo:page-sequence fo:scaling-value-citation Property linefeed-treatment fo:block Property line-height fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property line-height-shift-adjustment fo:block Property line-stacking-strategy fo:block Property margin-bottom fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property margin-bottom fo:title fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property margin-left fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property margin-left fo:title fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property margin-right fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property margin-right fo:title fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property margin-top fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property margin-top fo:title fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property marker-class-name fo:marker Property master-name fo:page-sequence-master fo:simple-page-master Property master-reference fo:page-sequence fo:single-page-master-reference fo:repeatable-page-master-reference fo:conditional-page-master-reference Property maximum-repeats fo:repeatable-page-master-reference fo:repeatable-page-master-alternatives Property media-usage fo:root Property merge-pages-across-index-key-references fo:index-page-citation-list Property merge-ranges-across-index-key-references fo:index-page-citation-list Property merge-sequential-page-numbers fo:index-page-citation-list Property number-columns-repeated fo:table-column Property number-columns-spanned fo:table-column fo:table-cell Property number-rows-spanned fo:table-cell Property odd-or-even fo:conditional-page-master-reference Property orphans fo:block Property overflow fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline-container Property padding-after fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-before fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-bottom fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-end fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-left fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-right fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-start fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property padding-top fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:title fo:block fo:block-container fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-cell fo:list-block fo:list-item fo:basic-link Property page-citation-strategy fo:page-number-citation-last Property page-height fo:simple-page-master Property page-number-treatment fo:index-key-reference Property page-position fo:conditional-page-master-reference Property page-width fo:simple-page-master Property pause-after fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property pause-before fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property pitch fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property pitch-range fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property play-during fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property precedence fo:region-before fo:region-after Property provisional-distance-between-starts fo:list-block Property provisional-label-separation fo:list-block Property reference-orientation fo:page-sequence fo:simple-page-master fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container fo:inline-container Property ref-id fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:index-range-end Property ref-index-key fo:index-key-reference Property region-name fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end Property region-name-reference fo:region-name-specifier Property relative-align fo:table-cell fo:list-item Property relative-position fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property rendering-intent fo:color-profile Property retrieve-boundary fo:retrieve-marker Property retrieve-boundary-within-table fo:retrieve-table-marker Property retrieve-class-name fo:retrieve-marker fo:retrieve-table-marker Property retrieve-position fo:retrieve-marker Property retrieve-position-within-table fo:retrieve-table-marker Property richness fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property right fo:block-container Property right fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property role fo:root fo:title fo:block fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:basic-link fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-properties fo:bookmark fo:bookmark-title fo:footnote fo:footnote-body fo:change-bar-begin fo:change-bar-end Property rule-style fo:leader Property rule-thickness fo:leader Property scale-option fo:scaling-value-citation Property scaling fo:external-graphic fo:instream-foreign-object Property scaling-method fo:external-graphic fo:instream-foreign-object Property score-spaces fo:bidi-override fo:character fo:initial-property-set fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property script fo:block fo:character Property show-destination fo:basic-link Property source-document fo:root fo:title fo:block fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:list-item-body fo:list-item-label fo:basic-link fo:multi-switch fo:multi-case fo:multi-toggle fo:multi-properties fo:bookmark fo:bookmark-title fo:footnote fo:footnote-body fo:change-bar-begin fo:change-bar-end Property space-after fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property space-before fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property space-end fo:title fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property space-start fo:title fo:character fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:basic-link Property span fo:block fo:block-container Property speak fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property speak-header fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property speak-numeral fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property speak-punctuation fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property speech-rate fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property src fo:color-profile fo:external-graphic Property start-indent fo:simple-page-master fo:region-body fo:block fo:block-container fo:table-and-caption fo:table fo:list-block fo:list-item Property starting-state fo:multi-case fo:bookmark Property starts-row fo:table-cell Property stress fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property suppress-at-line-break fo:character Property switch-to fo:multi-toggle Property table-layout fo:table Property table-omit-footer-at-break fo:table Property table-omit-header-at-break fo:table Property target-presentation-context fo:basic-link Property target-processing-context fo:basic-link Property target-stylesheet fo:basic-link Property text-align fo:block fo:external-graphic fo:instream-foreign-object fo:table-and-caption Property text-align-last fo:block Property text-altitude fo:block fo:character fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property text-decoration fo:character fo:initial-property-set fo:inline fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property text-depth fo:block fo:character fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property text-indent fo:block Property text-shadow fo:character fo:initial-property-set fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property text-transform fo:character fo:initial-property-set fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property top fo:block-container Property top fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link Property treat-as-word-space fo:character Property unicode-bidi fo:bidi-override Property visibility fo:title fo:block fo:character fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-column fo:table-header fo:table-footer fo:table-body fo:table-row Property voice-family fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property volume fo:title fo:block fo:bidi-override fo:character fo:initial-property-set fo:external-graphic fo:instream-foreign-object fo:inline fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation fo:table-and-caption fo:table fo:table-caption fo:table-header fo:table-footer fo:table-body fo:table-row fo:table-cell fo:list-block fo:list-item fo:basic-link fo:change-bar-begin fo:change-bar-end Property white-space-collapse fo:block Property white-space-treatment fo:block Property widows fo:block Property width fo:block-container fo:external-graphic fo:instream-foreign-object fo:inline fo:inline-container fo:table fo:table-caption fo:table-cell Property word-spacing fo:bidi-override fo:character fo:initial-property-set fo:leader fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property wrap-option fo:block fo:inline fo:page-number fo:page-number-citation fo:page-number-citation-last fo:scaling-value-citation Property writing-mode fo:page-sequence fo:simple-page-master fo:region-body fo:region-before fo:region-after fo:region-start fo:region-end fo:block-container fo:inline-container fo:table Property z-index fo:block-container fo:change-bar-begin World Wide Web Consortium. Extensible Markup Language (XML) 1.0. http://www.w3.org/TR/REC-xml/ World Wide Web Consortium. Extensible Markup Language (XML) 1.1. http://www.w3.org/TR/xml11/ World Wide Web Consortium. Namespaces in XML. http://www.w3.org/TR/REC-xml-names/ World Wide Web Consortium. Namespaces in XML 1.1. http://www.w3.org/TR/xml-names11/ World Wide Web Consortium. XSL Transformations (XSLT). http://www.w3.org/TR/xslt World Wide Web Consortium. XML Path Language. http://www.w3.org/TR/xpath World Wide Web Consortium. Resource Description Framework (RDF) Model and Syntax Specification http://www.w3.org/TR/REC-rdf-syntax/ International Commission on Illumination (CIE). Colorimetry http://www.cie.co.at/publ/abst/15-2004.html Institute of Electrical and Electronics Engineers. IEEE Standard for Binary Floating-Point Arithmetic International Organization for Standardization. ISO 31:1992, Amended 1998. Quantities and units International Organization for Standardization. ISO 639:1998. Code for the representation of names of languages International Organization for Standardization. ISO 639-2:1998. Codes for the representation of names of languages — Part 2: Alpha-3 code International Organization for Standardization. ISO 3166-1:1997. Codes for the representation of names of countries and their subdivisions — Part 1: Country codes International Organization for Standardization. ISO 3166-2:1998. Codes for the representation of names of countries and their subdivisions — Part 2: Country subdivision code International Organization for Standardization. ISO 3166-3:1999. Codes for the representation of names of countries and their subdivisions — Part 3: Code for formerly used names of countries International Organization for Standardization. ISO 15924:1998. Code for the representation of names of scripts International Organization for Standardization, International Electrotechnical Commission. ISO/IEC 10646:2000. Information technology — Universal Multiple-Octet Coded Character Set (UCS) —Part 1: Architecture and Basic Multilingual Plane IETF. RFC 2070. Internationalization of the Hypertext Markup Language http://www.ietf.org/rfc/rfc2070.txt IETF. RFC 2119. Key words for use in RFCs to Indicate Requirement Levels http://www.ietf.org/rfc/rfc2119.txt IETF. RFC 3066. Tags for the Identification of Languages http://www.ietf.org/rfc/rfc3066.txt IETF. RFC 3987. Internationalized Resource Identifiers (IRIs) http://www.ietf.org/rfc/rfc3987.txt Unicode Consortium. The Unicode Standard, Version 3.1.0. Unicode Standard Annex #9: The Bidirectional Algorithm. http://www.unicode.org/unicode/reports/tr9/ Unicode Consortium. Unicode Character Database. (See http://www.unicode.org/Public/UNIDATA/ Anderson, M., Motta, R., Chandrasekar, S., and Stokes, M. A Standard Default Color Space for the Internet - sRGB. http://www.w3.org/Graphics/Color/sRGB.html International Color Consortium. Specification ICC.1:1998-09, File Format for Color Profiles http://www.color.org/ICC-1_1998-09.PDF World Wide Web Consortium. Extensible Stylesheet Language (XSL). http://www.w3.org/TR/2001/REC-xsl-20011015/ World Wide Web Consortium. Extensible Stylesheet Language (XSL). http://www.w3.org/TR/2006/REC-xsl11-20061205/ World Wide Web Consortium. XSL Requirements, Version 2.0. http://www.w3.org/TR/xslfo20-req/ XSL Transformations (XSLT) Version 2.0 XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition) World Wide Web Consortium. Cascading Style Sheets, level 2 (CSS2) http://www.w3.org/TR/1998/REC-CSS2-19980512/ International Organization for Standardization, International Electrotechnical Commission. ISO/IEC 10179:1996. Document Style Semantics and Specification Language (DSSSL) Unicode Consortium. Davis, Mark and Whistler, Ken. Unicode Technical Standard #10: Unicode Collation Algorithm. http://www.unicode.org/unicode/reports/tr10/ Unicode Consortium. ürst, Martin and Freytag, Asmus. Unicode Technical Report #20. Unicode in XML and other Markup Languages http://www.unicode.org/unicode/reports/tr20/ Microsoft, Adobe. OpenType specification v.1.2 http://www.microsoft.com/truetype/tt/tt.htm World Wide Web Consortium. Associating stylesheets with XML documents. http://www.w3.org/TR/xml-stylesheet/ J. Gosling, B. Joy, and G. Steele. The Java Language Specification http://java.sun.com/docs/books/jls/index.html 7.6.1 absolute-position 7.24.1 active-state 7.15.1 alignment-adjust 7.15.2 alignment-baseline 7.16.1 allowed-height-scale 7.16.2 allowed-width-scale 7.24.2 auto-restore 7.7.1 azimuth 7.34.1 background 7.8.1 background-attachment 7.8.2 background-color 7.8.3 background-image 7.34.2 background-position 7.8.4 background-position-horizontal 7.8.5 background-position-vertical 7.8.6 background-repeat 7.15.4 baseline-shift 7.30.1 blank-or-not-blank 7.16.3 block-progression-dimension 7.34.3 border 7.8.7 border-after-color 7.31.1 border-after-precedence 7.8.8 border-after-style 7.8.9 border-after-width 7.8.10 border-before-color 7.31.2 border-before-precedence 7.8.11 border-before-style 7.8.12 border-before-width 7.34.4 border-bottom 7.8.13 border-bottom-color 7.8.14 border-bottom-style 7.8.15 border-bottom-width 7.31.3 border-collapse 7.34.5 border-color 7.8.16 border-end-color 7.31.4 border-end-precedence 7.8.17 border-end-style 7.8.18 border-end-width 7.34.6 border-left 7.8.19 border-left-color 7.8.20 border-left-style 7.8.21 border-left-width 7.34.7 border-right 7.8.22 border-right-color 7.8.23 border-right-style 7.8.24 border-right-width 7.31.5 border-separation 7.34.8 border-spacing 7.8.25 border-start-color 7.31.6 border-start-precedence 7.8.26 border-start-style 7.8.27 border-start-width 7.34.9 border-style 7.34.10 border-top 7.8.28 border-top-color 7.8.29 border-top-style 7.8.30 border-top-width 7.34.11 border-width 7.6.2 bottom 7.21.1 break-after 7.21.2 break-before 7.31.7 caption-side 7.24.3 case-name 7.24.4 case-title 7.33.1 change-bar-class 7.33.2 change-bar-color 7.33.3 change-bar-offset 7.33.4 change-bar-placement 7.33.5 change-bar-style 7.33.6 change-bar-width 7.18.1 character 7.20.1 clear 7.22.1 clip 7.19.1 color 7.19.2 color-profile-name 7.30.2 column-count 7.30.3 column-gap 7.31.8 column-number 7.31.9 column-width 7.16.4 content-height 7.33.7 content-type 7.16.5 content-width 7.10.1 country 7.34.12 cue 7.7.2 cue-after 7.7.3 cue-before 7.24.5 destination-placement-offset 7.32.1 direction 7.15.5 display-align 7.15.8 dominant-baseline 7.7.4 elevation 7.31.10 empty-cells 7.11.1 end-indent 7.31.11 ends-row 7.30.5 extent 7.24.6 external-destination 7.20.2 float 7.30.6 flow-map-name 7.30.7 flow-map-reference 7.30.8 flow-name 7.30.9 flow-name-reference 7.34.13 font 7.9.1 font-family 7.9.2 font-selection-strategy 7.9.3 font-size 7.9.4 font-size-adjust 7.9.5 font-stretch 7.9.6 font-style 7.9.7 font-variant 7.9.8 font-weight 7.30.10 force-page-count 7.29.1 format 7.32.2 glyph-orientation-horizontal 7.32.3 glyph-orientation-vertical 7.29.2 grouping-separator 7.29.3 grouping-size 7.16.6 height 7.10.2 hyphenate 7.10.3 hyphenation-character 7.17.1 hyphenation-keep 7.17.2 hyphenation-ladder-count 7.10.4 hyphenation-push-character-count 7.10.5 hyphenation-remain-character-count 7.33.8 id 7.25.1 index-class 7.25.2 index-key 7.24.7 indicate-destination 7.30.11 initial-page-number 7.16.7 inline-progression-dimension 7.24.8 internal-destination 7.33.9 intrinsic-scale-value 7.20.3 intrusion-displace 7.21.3 keep-together 7.21.4 keep-with-next 7.21.5 keep-with-previous 7.10.6 language 7.17.3 last-line-end-indent 7.23.1 leader-alignment 7.23.4 leader-length 7.23.2 leader-pattern 7.23.3 leader-pattern-width 7.6.3 left 7.18.2 letter-spacing 7.29.4 letter-value 7.17.7 linefeed-treatment 7.17.4 line-height 7.17.5 line-height-shift-adjustment 7.17.6 line-stacking-strategy 7.34.14 margin 7.11.2 margin-bottom 7.11.3 margin-left 7.11.4 margin-right 7.11.5 margin-top 7.26.1 marker-class-name 7.30.12 master-name 7.30.13 master-reference 7.16.8 max-height 7.30.14 maximum-repeats 7.16.9 max-width 7.30.15 media-usage 7.25.6 merge-pages-across-index-key-references 7.25.4 merge-ranges-across-index-key-references 7.25.5 merge-sequential-page-numbers 7.16.10 min-height 7.16.11 min-width 7.31.12 number-columns-repeated 7.31.13 number-columns-spanned 7.31.14 number-rows-spanned 7.30.16 odd-or-even 7.21.6 orphans 7.22.2 overflow 7.34.15 padding 7.8.31 padding-after 7.8.32 padding-before 7.8.33 padding-bottom 7.8.34 padding-end 7.8.35 padding-left 7.8.36 padding-right 7.8.37 padding-start 7.8.38 padding-top 7.34.16 page-break-after 7.34.17 page-break-before 7.34.18 page-break-inside 7.33.10 page-citation-strategy 7.30.17 page-height 7.25.3 page-number-treatment 7.30.18 page-position 7.30.19 page-width 7.34.19 pause 7.7.5 pause-after 7.7.6 pause-before 7.7.7 pitch 7.7.8 pitch-range 7.7.9 play-during 7.34.20 position 7.30.20 precedence 7.33.11 provisional-distance-between-starts 7.33.12 provisional-label-separation 7.22.3 reference-orientation 7.33.13 ref-id 7.25.7 ref-index-key 7.30.21 region-name 7.30.22 region-name-reference 7.15.9 relative-align 7.13.1 relative-position 7.19.3 rendering-intent 7.26.4 retrieve-boundary 7.26.2 retrieve-boundary-within-table 7.26.3 retrieve-class-name 7.26.5 retrieve-position 7.26.6 retrieve-position-within-table 7.7.10 richness 7.6.4 right 7.5.2 role 7.23.5 rule-style 7.23.6 rule-thickness 7.33.14 scale-option 7.16.12 scaling 7.16.13 scaling-method 7.33.15 score-spaces 7.10.7 script 7.24.9 show-destination 7.34.21 size 7.5.1 source-document 7.11.6 space-after 7.11.7 space-before 7.12.1 space-end 7.12.2 space-start 7.22.4 span 7.7.11 speak 7.7.12 speak-header 7.7.13 speak-numeral 7.7.14 speak-punctuation 7.7.15 speech-rate 7.33.16 src 7.11.8 start-indent 7.24.10 starting-state 7.31.15 starts-row 7.7.16 stress 7.18.3 suppress-at-line-break 7.24.11 switch-to 7.31.16 table-layout 7.31.17 table-omit-footer-at-break 7.31.18 table-omit-header-at-break 7.24.12 target-presentation-context 7.24.13 target-processing-context 7.24.14 target-stylesheet 7.17.8 text-align 7.17.9 text-align-last 7.32.4 text-altitude 7.18.4 text-decoration 7.32.5 text-depth 7.17.10 text-indent 7.18.5 text-shadow 7.18.6 text-transform 7.6.5 top 7.18.7 treat-as-word-space 7.32.6 unicode-bidi 7.34.22 vertical-align 7.33.17 visibility 7.7.17 voice-family 7.7.18 volume 7.34.23 white-space 7.17.11 white-space-collapse 7.17.12 white-space-treatment 7.21.7 widows 7.16.14 width 7.18.8 word-spacing 7.17.13 wrap-option 7.32.7 writing-mode 7.34.24 xml:lang 7.33.18 z-index This section lists all non-editorial changes that have been made: No errata has been added. New functionality has been added to support: Feathering and vertical alignment across pages and columns An initial capital formatting object A more general page-master Extension regions in the start and end directions Formatter feedback is being incorporated, e.g. for copyfitting Non-rectangular regions Marginalia Area alignment for block level formatting objects Trim and bleed boxes Added xml:base output-base-uri Additional color functions Allow copy-fitting. Added side-by-side Added numbering Added Ruby Added composition, improved widows and orphans, word and syllable Improved marginalia Updated vertical positioning Moved intro to Alignment properties This specification was developed and approved for publication by the W3C XSL Working Group (WG). WG approval of this specification does not necessarily imply that all WG members voted for its approval. During the development of XSL 2.0 the members of the XSL FO Subgroup were: TBC