<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
    </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-starting-within-page"/>
            <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: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-starting-within-page"/>
            <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: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-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-ending-within-page"/>
          </fo:block>
        </fo:static-content>
    
        <fo:flow flow-name="xsl-region-body">
          <fo:block space-before="6pt" space-after="6pt"
            font-weight="bold" 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>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 space-before="6pt" space-after="6pt"
            font-weight="bold" id="sect5-1" background-color="#DD1">
            <fo:marker marker-class-name="section">5.1 Specified, Computed, and Actual Values, and Inheritance</fo:marker>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 space-before="6pt" space-after="6pt"
            font-weight="bold" id="sect5-2" background-color="#DD1">
            <fo:marker marker-class-name="section">5.2 Specified Values</fo:marker>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 space-before="6pt" space-after="6pt"
            font-weight="bold" 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>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 space-before="6pt" space-after="6pt"
            font-weight="bold" id="sect6-1" background-color="#DD6">
            <fo:marker marker-class-name="section">6.1 Actual Values</fo:marker>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>
            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:flow>
      </fo:page-sequence>
    </fo:root>
  </fo>
  <checks>
    <!-- page 1 -->
    <true xpath="starts-with(//pageViewport[@nr=1]//regionBefore,'5 ')"/>
    <true xpath="starts-with(//pageViewport[@nr=1]//regionAfter,'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,'6 ')"/>
    <true xpath="starts-with(//pageViewport[@nr=2]//regionAfter,'6.1 ')"/>
    <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,'6 ')"/>
    <true xpath="starts-with(//pageViewport[@nr=3]//regionAfter,'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,'6.1 ')"/>
    <true xpath="starts-with(//pageViewport[@nr=4]//regionAfter,'6.1 ')"/>
    <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,'6 ')"/>
    <true xpath="starts-with(//pageViewport[@nr=5]//regionAfter,'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>
