« Return to Thread: header & footer in custom title page

Re: header & footer in custom title page

by spr :: Rate this Message:

Reply to Author | View in Thread

Hi Bob,

I tried to follow as per the link you mentioned. But get an exception:
SEVERE: Exception
javax.xml.transform.TransformerException: java.lang.IllegalStateException: endElement() called for fo:root where there i
s no current element.
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:168)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:115)
        at org.apache.fop.cli.Main.startFOP(Main.java:166)
        at org.apache.fop.cli.Main.main(Main.java:197)

---------

; SystemID: file:/D:/wrk/BookTest/docbook-xsl-ns-1.73.2/fo/docbook.xsl; Line#: 219; Column#: 59
javax.xml.transform.TransformerException: java.lang.IllegalStateException: endElement() called for fo:root where there i
s no current element.
        at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2416)

--snip--remainder of errors ---snip---

Here is the modification in calling page-master:
<xsl:with-param
      name    = "master-reference"
      select  = "readme" />

Here is the template I created:
It is essentially a copy of "titlepage" in "fo/pagesetup.xsl"

<xsl:template name="user.pagemasters">
    <fo:simple-page-master master-name="readme-first"
                           page-width="{$page.width}"
                           page-height="{$page.height}"
                           margin-top="{$page.margin.top}"
                           margin-bottom="{$page.margin.bottom}"
                           margin-left="{$margin.left.inner}"
                           margin-right="{$page.margin.outer}">
      <xsl:if test="$axf.extensions != 0">
        <xsl:call-template name="axf-page-master-properties">
          <xsl:with-param name="page.master">readme-first</xsl:with-param>
        </xsl:call-template>
      </xsl:if>
      <fo:region-body margin-bottom="{$body.margin.bottom}"
                      margin-top="{$body.margin.top}"
                      column-gap="{$column.gap.titlepage}"
                      column-count="{$column.count.titlepage}">
      </fo:region-body>
      <fo:region-before region-name="xsl-region-before-first"
                        extent="{$region.before.extent}"
                        display-align="before"/>
      <fo:region-after region-name="xsl-region-after-first"
                       extent="{$region.after.extent}"
                        display-align="after"/>
    </fo:simple-page-master>

    <fo:simple-page-master master-name="readme-odd"
                           page-width="{$page.width}"
                           page-height="{$page.height}"
                           margin-top="{$page.margin.top}"
                           margin-bottom="{$page.margin.bottom}"
                           margin-left="{$margin.left.inner}"
                           margin-right="{$page.margin.outer}">
      <xsl:if test="$axf.extensions != 0">
        <xsl:call-template name="axf-page-master-properties">
          <xsl:with-param name="page.master">readme-odd</xsl:with-param>
        </xsl:call-template>
      </xsl:if>
      <fo:region-body margin-bottom="{$body.margin.bottom}"
                      margin-top="{$body.margin.top}"
                      column-gap="{$column.gap.titlepage}"
                      column-count="{$column.count.titlepage}">
      </fo:region-body>
      <fo:region-before region-name="xsl-region-before-odd"
                        extent="{$region.before.extent}"
                        display-align="before"/>
      <fo:region-after region-name="xsl-region-after-odd"
                       extent="{$region.after.extent}"
                        display-align="after"/>
    </fo:simple-page-master>

    <fo:simple-page-master master-name="readme-even"
                           page-width="{$page.width}"
                           page-height="{$page.height}"
                           margin-top="{$page.margin.top}"
                           margin-bottom="{$page.margin.bottom}"
                           margin-left="{$margin.left.outer}"
                           margin-right="{$page.margin.inner}">
      <xsl:if test="$axf.extensions != 0">
        <xsl:call-template name="axf-page-master-properties">
          <xsl:with-param name="page.master">readme-even</xsl:with-param>
        </xsl:call-template>
      </xsl:if>
      <fo:region-body margin-bottom="{$body.margin.bottom}"
                      margin-top="{$body.margin.top}"
                      column-gap="{$column.gap.titlepage}"
                      column-count="{$column.count.titlepage}">
      </fo:region-body>
      <fo:region-before region-name="xsl-region-before-even"
                        extent="{$region.before.extent}"
                        display-align="before"/>
      <fo:region-after region-name="xsl-region-after-even"
                       extent="{$region.after.extent}"
                        display-align="after"/>
    </fo:simple-page-master>
   
    <fo:page-sequence-master master-name="readme">
      <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference master-reference="blank"
                                              blank-or-not-blank="blank"/>
        <fo:conditional-page-master-reference master-reference="readme-first"
                                              page-position="first"/>
        <fo:conditional-page-master-reference master-reference="readme-odd"
                                              odd-or-even="odd"/>
        <fo:conditional-page-master-reference
                                              odd-or-even="even">
          <xsl:attribute name="master-reference">
            <xsl:choose>
              <xsl:when test="$double.sided != 0">readme-even</xsl:when>
              <xsl:otherwise>readme-odd</xsl:otherwise>
            </xsl:choose>
          </xsl:attribute>
        </fo:conditional-page-master-reference>
      </fo:repeatable-page-master-alternatives>
    </fo:page-sequence-master>

</xsl:template>

Where could I be going wrong?

~spr

Bob Stayton wrote:
This line indicates you are using the 'titlepage' master name for your extra
page:

<xsl:with-param
      name    = "master-reference"
      select  = "$titlepage-master-reference" />

That is why your new page sequence behaves like the front title pages.  My
mail described how to set up an alternative master name to use on those
pages, then you can customize them to behave differently.  In this case,
just naming the master other than 'titlepage' will recover the headers and
footers.

Bob Stayton
Sagehill Enterprises
bobs@sagehill.net
~spr

 « Return to Thread: header & footer in custom title page