Chris,
The FO processor bumps the start of the long example to the next page
because of the keep-together.within-column="always" property on the block
containing the example. That's from the 'formal.object.properties'
attribute-set.
You're wondering why, since it won't fit on the next page either, the FO
processor doesn't just start it on page 1. The way FO processors work with
keeps is that the property adds a "keep condition" to the block, which is
tested on the first page. It fails to fit there, so it bumps it to the
next page and consumes the keep condition. On the second page there is no
keep condition, so it just starts there. The FO processor doesn't look
ahead to see if it fits on the second page, and then backtrack to the first
page. It just processes the content for the current page. For all it
knows, the second page could be a bigger page-master that would fit the
example, if it were to test it. But it doesn't test it on the second page.
The solution is to add a processing instruction to this example:
<example>
...
Now it should start on the first page.
Bob Stayton
Sagehill Enterprises
DocBook Consulting
bobs@sagehill.net