XSL FO

Home

Reading assignments

Programming Assignments

Resources

Syllabus

Slide Sets

Final Project Ideas

Updates


    declarative formatting language

    Many specific tags and attributes even the short reference is over 20 pages

    Extensibility is limited, but platform independence is high

    translation to other formatters one implementation strategy

      TeX, Lout, Troff

    basic principles of xsl:fo

      pages are defined by templates, that contain areas for input

      These are like the arguments to the page function in Lilac

      They are also like Lout's accepting tokens

      They are also like the page templates used in graphic design programs.

    Declaring page setups

      fo:root

      fo:layout-master-set

      fo:simple-page-master

        contains region descriptions for the page

        attributes for page size, margins properties, orientation, writing system

      fo:region{-body | -before | -after | -start | -end}

        Borders, margins, colors, etc.

        More interesting: columns column-count, column-gap

      fo:page-sequence-master

        List of references to page-masters

        pattern for filling pages

        contains fo:single-page-master-reference, fo:repeatable-page-master-reference, repeatable-page-master-alternatives

      fo:single-conditional-page-master-alternatives

        contains fo:conditional page-master-reference

        conditions: page position, odd-or-even, blank-or-not-blank

      Building pages

        fo:page-sequence

        contains static content, and one "flow"

        fo:flow contains text objects to be laid out, into the page masters defined.

      layout objects

        block and inline elements: the MS-word model of documents (minus types)

        fo:page-number-citation

          uses ID/IDREF

          fo:block, fo:inline, fo:list-block, fo:list-item

        fo:footnote

        tables...

        fo:inline-container

          turns a block into an inline item, with flow properties

        fo:wrapper

          Removes redundancy, specifies properties that are inherited.

        fo:float

      page makeup properties

        absolute-position, relative-position

          top, right, bottom, left

        break/keep properties

          {page-break -before, -after, -inside

          break{-after, -before} = column page, even-page, odd-page, auto, inherit

          keep-together, keep-with-next (weighted by priority)

          widows, orphans