Ваш второй вариант работает для меня как с FOP 2.0, так и с FOP 2.2:
<fo:page-sequence-master master-name="allPages">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference page-position="only" master-reference="singlePage"/>
<fo:conditional-page-master-reference page-position="any" master-reference="multiPage"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
Вы пробовали это с достаточным количеством контента, чтобы создать вторую страницу? Например, добавьте <fo:block break-before="page">content</fo:block>
, чтобы вызвать вторую страницу.
Если вы измените текст содержимого в вашем fo:static-content
на fo:region-after
, тогда вы получите лучшее представление о том, какой fo:conditional-page-master-reference
используется; e.g.:
<fo:static-content flow-name="xsl-region-after-single">
<fo:block>after single</fo:block>
</fo:static-content>
Способ работы fo:conditional-page-master-reference
(https://www.w3.org/TR/xsl11/#fo_conditional-page-master-reference)) заключается в том, что он выбирается, если он является первой альтернативой, для которой выполняются все его подусловия. Если для создания второй страницы достаточно содержимого, тогда подусловие page-position="only"
больше не выполняется, поэтому средство форматирования должно повторить попытку с другими альтернативами.
Форматировщик должен повторить попытку, потому что если это не так, то fo:repeatable-page-master-alternatives
(https://www.w3.org/TR/xsl11/#fo_repeatable-page-master-alternatives) не удовлетворяет его ограничениям (мой акцент):
Подпоследовательность страниц, отображаемых на этот спецификатор подпоследовательности, удовлетворяет ограничениям этого спецификатора подпоследовательности, если (a) подпоследовательность страниц состоит из нуля или более страниц, (b) каждая страница генерируется с использованием fo: simple-page-master, на который ссылается одна из альтернатив, являющихся дочерними для fo: repeatable-page-master-alternatives, (c) условия для этой альтернативы верны , (d) эта альтернатива является первой альтернативой в последовательности детей, для которой выполняются все условия, и (e) длина подпоследовательности меньше или равна значению «максимум-повторений».