diff options
Diffstat (limited to 'test/layoutengine/testcases/markers_6b.xml')
-rw-r--r-- | test/layoutengine/testcases/markers_6b.xml | 299 |
1 files changed, 299 insertions, 0 deletions
diff --git a/test/layoutengine/testcases/markers_6b.xml b/test/layoutengine/testcases/markers_6b.xml new file mode 100644 index 000000000..a303f121e --- /dev/null +++ b/test/layoutengine/testcases/markers_6b.xml @@ -0,0 +1,299 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright 2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks markers, especially the retrieval of markers +belonging to a preceding page -- nested areas. + </p> + </info> + <fo> + <fo:root + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:fox="http://xml.apache.org/fop/extensions" + xmlns:svg="http://www.w3.org/2000/svg"> + <fo:layout-master-set> + <fo:simple-page-master master-name="odd" + page-width="5in" page-height="5in"> + <fo:region-body margin="0.5in 0in"/> + <fo:region-before extent="0.5in" region-name="before-odd"/> + <fo:region-after extent="0.5in" region-name="after-odd"/> + </fo:simple-page-master> + <fo:simple-page-master master-name="even" + page-width="5in" page-height="5in"> + <fo:region-body margin="0.5in 0in"/> + <fo:region-before extent="0.5in" region-name="before-even"/> + <fo:region-after extent="0.5in" region-name="after-even"/> + </fo:simple-page-master> + <fo:page-sequence-master master-name="odd-even"> + <fo:repeatable-page-master-alternatives> + <fo:conditional-page-master-reference + master-reference="odd" + page-position="any" + odd-or-even="odd" /> + <fo:conditional-page-master-reference + master-reference="even" + page-position="any" + odd-or-even="even" /> + </fo:repeatable-page-master-alternatives> + </fo:page-sequence-master> + </fo:layout-master-set> + + <fo:page-sequence master-reference="odd-even"> + <fo:static-content flow-name="before-odd"> + <fo:block> + <fo:retrieve-marker retrieve-class-name="chapter" + retrieve-boundary="page-sequence" + retrieve-position="first-including-carryover"/> + <fo:leader leader-length.minimum="12pt" + leader-length.optimum="80pt" + leader-length.maximum="100%" leader-pattern="space"> + </fo:leader>page <fo:page-number/></fo:block> + <fo:block> + <fo:retrieve-marker retrieve-class-name="chapter" + retrieve-boundary="page-sequence" + retrieve-position="first-starting-within-page"/> + </fo:block> + </fo:static-content> + <fo:static-content flow-name="before-even"> + <fo:block> + <fo:retrieve-marker retrieve-class-name="section" + retrieve-boundary="page-sequence" + retrieve-position="first-including-carryover"/> + <fo:leader leader-length.minimum="12pt" + leader-length.optimum="80pt" + leader-length.maximum="100%" leader-pattern="space"> + </fo:leader>page <fo:page-number/> + </fo:block> + <fo:block> + <fo:retrieve-marker retrieve-class-name="chapter" + retrieve-boundary="page-sequence" + retrieve-position="first-starting-within-page"/> + </fo:block> + </fo:static-content> + <fo:static-content flow-name="after-odd"> + <fo:block text-align="end"> + <fo:retrieve-marker retrieve-class-name="chapter" + retrieve-boundary="page-sequence" + retrieve-position="last-starting-within-page"/> + </fo:block> + <fo:block text-align="end"> + <fo:retrieve-marker retrieve-class-name="chapter" + retrieve-boundary="page-sequence" + retrieve-position="last-ending-within-page"/> + </fo:block> + </fo:static-content> + <fo:static-content flow-name="after-even"> + <fo:block text-align="end"> + <fo:retrieve-marker retrieve-class-name="section" + retrieve-boundary="page-sequence" + retrieve-position="last-starting-within-page"/> + </fo:block> + <fo:block text-align="end"> + <fo:retrieve-marker retrieve-class-name="section" + retrieve-boundary="page-sequence" + retrieve-position="last-ending-within-page"/> + </fo:block> + </fo:static-content> + + <fo:flow flow-name="xsl-region-body"> + <fo:block id="ch5" background-color="#EE1"> + <fo:marker marker-class-name="chapter">5 Property Refinement / Resolution</fo:marker> + <fo:marker marker-class-name="section">5 Property Refinement / Resolution</fo:marker> + <fo:block space-before="6pt" space-after="6pt" font-weight="bold"> +5 Property Refinement / Resolution + </fo:block> + <fo:block> + During refinement the set of properties that apply to a +formatting object is transformed into a set of traits that define +constraints on the result of formatting. For many traits there is a +one-to-one correspondence with a property; for other traits the +transformation is more complex. Details on the transformation are +described below. + </fo:block> + <fo:block id="sect5-1" background-color="#DD1"> + <fo:marker marker-class-name="section">5.1 Specified, Computed, and Actual Values, and Inheritance</fo:marker> + <fo:block space-before="6pt" space-after="6pt" font-weight="bold"> +5.1 Specified, Computed, and Actual Values, and Inheritance + </fo:block> + <fo:block> + 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. + </fo:block> + </fo:block> + <fo:block id="sect5-2" background-color="#DD1"> + <fo:marker marker-class-name="section">5.2 Specified Values</fo:marker> + <fo:block space-before="6pt" space-after="6pt" font-weight="bold"> +5.2 Specified Values + </fo:block> + <fo:block> + The specified value of a property is determined using the +following mechanisms (in order of precedence) + </fo:block> + <fo:block> + 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". + </fo:block> + <fo:block> + Otherwise, if the property is inheritable, use the value +of that property from the parent formatting object, generally the +computed value (see below). + </fo:block> + </fo:block> + </fo:block> + <fo:block id="ch6" background-color="#EE6"> + <fo:marker marker-class-name="chapter">6 Shorthand Expansion</fo:marker> + <fo:marker marker-class-name="section">6 Shorthand Expansion</fo:marker> + <fo:block space-before="6pt" space-after="6pt" font-weight="bold"> +6 Shorthand Expansion + </fo:block> + <fo:block> + In XSL there are two kinds of shorthand properties; those +originating from CSS, such as "border", and those that arise from +breaking apart and/or combining CSS properties, such as +"page-break-inside". In XSL both types of shorthands are handled in +the same way. + </fo:block> + <fo:block id="sect6-1" background-color="#DD6"> + <fo:marker marker-class-name="section">6.1 Actual Values</fo:marker> + <fo:block space-before="6pt" space-after="6pt" font-weight="bold"> +6.1 Actual Values + </fo:block> + <fo:block> + 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 where the style of the border is "none" +is forced to be "0pt". + </fo:block> + </fo:block> + </fo:block> + + <fo:block id="ch7" background-color="#EEE"> + <fo:block> + 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 relative to the writing-mode (e.g., padding-before) or a +direction in terms of the absolute geometric orientation of the +viewport (e.g., padding-top). These two properties are called the +relative property and the absolute property, +respectively. Collectively, they are called "corresponding +properties". + </fo:block> + <fo:block> + 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" at the top level of a document is "lr-tb", then +"padding-start" corresponds to "padding-left", but if the +"writing-mode" is "rl-tb", then "padding-start" corresponds to +"padding-right". The exact specification of how to compute the values +of corresponding properties is given in [5.3 Computing the Values of +Corresponding Properties]. + </fo:block> + <fo:block> + 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" property). In the cases where +child elements do not inherit the computed value, this is described in +the property definition. + </fo:block> + <fo:block> + 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 to an +integral number of media pixels. The actual value is the +computed value after any such adjustments have been +applied. + </fo:block> + <fo:block> + 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. + </fo:block> + </fo:block> + + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <!-- page 1 --> + <true xpath="starts-with(//pageViewport[@nr=1]//regionBefore/block[1],'5 ')"/> + <true xpath="starts-with(//pageViewport[@nr=1]//regionBefore/block[2],'5 ')"/> + <true xpath="starts-with(//pageViewport[@nr=1]//regionAfter/block[1],'5 ')"/> + <true xpath="starts-with(//pageViewport[@nr=1]//regionAfter/block[2],'5 ')"/> + <true xpath="//pageViewport[@nr=1]//regionBody//block[starts-with(.,'5 ')]"/> + <true xpath="//pageViewport[@nr=1]//regionBody//block[starts-with(.,'5.1 ')]"/> + <true xpath="//pageViewport[@nr=1]//regionBody//block[starts-with(.,'5.2 ')]"/> + <!-- page 2 --> + <true xpath="starts-with(//pageViewport[@nr=2]//regionBefore/block[1],'5 ')"/> + <true xpath="starts-with(//pageViewport[@nr=2]//regionBefore/block[2],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=2]//regionAfter/block[1],'6.1 ')"/> + <true xpath="starts-with(//pageViewport[@nr=2]//regionAfter/block[2],'5 ')"/> + <true xpath="//pageViewport[@nr=2]//regionBody//block[starts-with(.,'6 ')]"/> + <true xpath="//pageViewport[@nr=2]//regionBody//block[starts-with(.,'6.1 ')]"/> + <!-- page 3 --> + <true xpath="starts-with(//pageViewport[@nr=3]//regionBefore/block[1],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=3]//regionBefore/block[2],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=3]//regionAfter/block[1],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=3]//regionAfter/block[2],'6 ')"/> + <true xpath="not(//pageViewport[@nr=3]//regionBody//block[starts-with(.,'6 ')])"/> + <true xpath="not(//pageViewport[@nr=3]//regionBody//block[starts-with(.,'6.1 ')])"/> + <!-- page 4 --> + <true xpath="starts-with(//pageViewport[@nr=4]//regionBefore/block[1],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=4]//regionBefore/block[2],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=4]//regionAfter/block[1],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=4]//regionAfter/block[2],'6 ')"/> + <true xpath="not(//pageViewport[@nr=4]//regionBody//block[starts-with(.,'6 ')])"/> + <true xpath="not(//pageViewport[@nr=4]//regionBody//block[starts-with(.,'6.1 ')])"/> + <!-- page 5 --> + <true xpath="starts-with(//pageViewport[@nr=5]//regionBefore/block[1],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=5]//regionBefore/block[2],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=5]//regionAfter/block[1],'6 ')"/> + <true xpath="starts-with(//pageViewport[@nr=5]//regionAfter/block[2],'6 ')"/> + <true xpath="not(//pageViewport[@nr=5]//regionBody//block[starts-with(.,'6 ')])"/> + <true xpath="not(//pageViewport[@nr=5]//regionBody//block[starts-with(.,'6.1 ')])"/> + </checks> +</testcase> |