You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by ro...@pfpc.com on 2004/11/22 16:49:47 UTC

Header Help

Hi,
Please help me out in fixing this header problem. I am trying to create an
xsl for XHTML with an extra header tag in it. This represent the header. I
want the header in the first page only .Rest of the pages should not
contain the header. I have created the following style sheet. But it does
not seems to work .Please help me out.
Thanks and Regards
Rohit

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo
="http://www.w3.org/1999/XSL/Format" xmlns:html
="http://www.w3.org/1999/xhtml" version="1.0">
      <xsl:output indent="yes"/>
      <!-- ##################################################### -->
      <xsl:template match="/">
            <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
                  <fo:layout-master-set>
                        <!-- MAJOR CHANGES START -->
                              <fo:simple-page-master master-name
="firstpage" page-height="11in" page-width="8.5in" margin-top="1.25in"
margin-bottom="1.0in" margin-left="1.25in" margin-right="1.25in">
                                    <fo:region-before region-name
="firstheader" extent="2.0in" margin-left="0.5in" margin-right="0.5in"/>
                                    <fo:region-after extent="2.0in"
margin-left="0.5in" margin-right="0.5in"/>
                                    <fo:region-body margin-top="2.5cm"
margin-bottom="2.5cm" />
                              </fo:simple-page-master>
                              <fo:simple-page-master master-name
="restpages" page-height="11in" page-width="8.5in" margin-top="1.25in"
margin-bottom="1.0in" margin-left="1.25in" margin-right="1.25in">
                                    <fo:region-before extent="2.0in"
margin-left="0.5in" margin-right="0.5in"/>
                                    <fo:region-after extent="2.0in"
margin-left="0.5in" margin-right="0.5in"/>
                                    <fo:region-body margin-top="2.5cm"
margin-bottom="2.5cm" />
                              </fo:simple-page-master>
                        <!-- MAJOR CHANGES END -->
                  <fo:page-sequence-master master-name="all">
                      <fo:repeatable-page-master-alternatives>
                        <fo:conditional-page-master-reference page-position
="first"
                              master-reference="firstpage"/>
                        <fo:conditional-page-master-reference page-position
="rest"
                                master-reference="restpages"/>
                      </fo:repeatable-page-master-alternatives>
                  </fo:page-sequence-master>

                  </fo:layout-master-set>
                  <fo:page-sequence master-reference="firstpage">

                        <xsl:apply-templates/>
                  </fo:page-sequence>
                  <fo:page-sequence master-reference="restpages">

                        <xsl:apply-templates/>
                  </fo:page-sequence>
            </fo:root>
      </xsl:template>
      <!-- ##################- title -############################ -->
      <xsl:template match="html:title">

      </xsl:template>
      <!-- #####################- body -############################ -->
      <!-- MAJOR CHANGES START -->
      <xsl:template match="html:body">

            <!-- The following static content renders the html:header tag
within every pdf page -->
            <fo:static-content flow-name="firstheader">
                        <fo:block font-size="{fontsize}pt" font-family
="serif" line-height="10pt" color="red">
                        <xsl:apply-templates select="html:header"/>
                        </fo:block>
            </fo:static-content>


            <!-- The following static content renders the html:footer tag
within every pdf page -->
            <fo:static-content flow-name="xsl-region-after">
                  <fo:block text-align="center" font-size="{fontsize}pt"
font-family="serif" line-height="10pt" color="red">
                        <xsl:apply-templates select="html:footer"/>
                  </fo:block>
                  <!-- This block renders the page number -->
                  <fo:block text-align="right" font-size="10pt" font-family
="serif">
                        Page <fo:page-number/>
                  </fo:block>
            </fo:static-content>


            <!-- This flow applies all tenplates available to the body tags
content -->
            <!-- Attention: editor content must always be wraped e.g. by a
p tag. plaintext in source view causes a fop error -->
            <fo:flow flow-name="xsl-region-body" font-family="Times"
font-size="12pt">
                  <xsl:apply-templates select="html:body-content"/>
            </fo:flow>

      </xsl:template>


      <!-- MAJOR CHANGES END -->
      <!-- #####################- paragraph -######################## -->
      <xsl:template match="html:p">
            <xsl:element name="fo:block">
                  <xsl:attribute name
="space-before.minimum">10pt</xsl:attribute>
                  <xsl:attribute name
="space-before.maximum">16pt</xsl:attribute>
                  <xsl:attribute name
="space-before.optimum">14pt</xsl:attribute>
                  <xsl:attribute name
="space-after.minimum">10pt</xsl:attribute>
                  <xsl:attribute name
="space-after.maximum">16pt</xsl:attribute>
                  <xsl:attribute name
="space-after.optimum">14pt</xsl:attribute>
                  <xsl:call-template name="get-align-attr"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template name="get-align-attr">
            <xsl:choose>
                  <xsl:when test="./@align">
                        <xsl:attribute name="text-align">
                              <xsl:value-of select="./@align"/>
                        </xsl:attribute>
                  </xsl:when>
            </xsl:choose>
      </xsl:template>
      <!-- ##############- basic inline styles -##################### -->
      <xsl:template match="html:strong|html:bold">
            <fo:inline font-weight="bold">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:em|html:i">
            <fo:inline font-style="italic">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <!-- #######################- headings -####################### -->
      <xsl:template match="html:h1">
            <xsl:element name="fo:block">
                  <xsl:attribute name="font-size">24pt</xsl:attribute>
                  <xsl:call-template name="get-heading-attrs"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template match="html:h2">
            <xsl:element name="fo:block">
                  <xsl:attribute name="font-size">20pt</xsl:attribute>
                  <xsl:call-template name="get-heading-attrs"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template match="html:h3">
            <xsl:element name="fo:block">
                  <xsl:attribute name="font-size">18pt</xsl:attribute>
                  <xsl:call-template name="get-heading-attrs"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template match="html:h4">
            <xsl:element name="fo:block">
                  <xsl:attribute name="font-size">16pt</xsl:attribute>
                  <xsl:call-template name="get-heading-attrs"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template match="html:h5">
            <xsl:element name="fo:block">
                  <xsl:attribute name="font-size">14pt</xsl:attribute>
                  <xsl:call-template name="get-heading-attrs"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template match="html:h6">
            <xsl:element name="fo:block">
                  <xsl:attribute name="font-size">12pt</xsl:attribute>
                  <xsl:call-template name="get-heading-attrs"/>
                  <xsl:apply-templates/>
            </xsl:element>
      </xsl:template>
      <xsl:template name="get-heading-attrs">
            <xsl:attribute name="font-weight">bold</xsl:attribute>
            <xsl:attribute name="space-before">6pt</xsl:attribute>
            <xsl:attribute name="space-after">6pt</xsl:attribute>
            <xsl:call-template name="get-align-attr"/>
      </xsl:template>
      <!-- #######################- lists -####################### -->
      <xsl:template match="html:ol">
            <fo:list-block start-indent="1em" space-before="6pt"
space-after="6pt" provisional-label-separation="3pt" space-before.optimum
="6pt">
                  <xsl:for-each select="./html:li">
                        <fo:list-item>
                              <fo:list-item-label>
                                    <fo:block>
                                          <xsl:value-of select="position
()"/>.</fo:block>
                              </fo:list-item-label>
                              <fo:list-item-body start-indent="body-start
()">
                                    <fo:block>
                                          <xsl:apply-templates/>
                                    </fo:block>
                              </fo:list-item-body>
                        </fo:list-item>
                  </xsl:for-each>
            </fo:list-block>
      </xsl:template>
      <xsl:template match="html:ul">
            <fo:list-block start-indent="1em" space-before="6pt"
space-after="6pt" provisional-label-separation="3pt" space-before.optimum
="6pt">
                  <xsl:for-each select="./html:li">
                        <fo:list-item>
                              <fo:list-item-label>
                                    <fo:block>&#x2022;</fo:block>
                              </fo:list-item-label>
                              <fo:list-item-body start-indent="body-start
()">
                                    <fo:block>
                                          <xsl:apply-templates/>
                                    </fo:block>
                              </fo:list-item-body>
                        </fo:list-item>
                  </xsl:for-each>
            </fo:list-block>
      </xsl:template>
      <xsl:template match="html:br">
            <fo:block/>
            <xsl:apply-templates/>
      </xsl:template>
      <!-- #################- font-styles, -size declared through span
-######################## -->
      <xsl:template match="html:span[@style='font-size:12pt']|html:span
[@style='font-size:Normalpt']">
            <fo:block font-size="12pt">
                  <xsl:apply-templates/>
            </fo:block>
      </xsl:template>
      <xsl:template match="html:span[@style='font-size:8pt']">
            <fo:inline font-size="8pt">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-size:10pt']">
            <fo:inline font-size="10pt">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-size:14pt']">
            <fo:inline font-size="14pt">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-size:18pt']">
            <fo:inline font-size="18pt">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-size:24pt']">
            <fo:inline font-size="24pt">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-size:36pt']">
            <fo:inline font-size="36pt">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
12pt']|html:span[@style='font-size:Normalpt']">
            <fo:block font-size="12pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:block>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
8pt']">
            <fo:inline font-size="8pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
10pt']">
            <fo:inline font-size="10pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
14pt']">
            <fo:inline font-size="14pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
18pt']">
            <fo:inline font-size="18pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
24pt']">
            <fo:inline font-size="24pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Times; font-size:
36pt']">
            <fo:inline font-size="36pt" font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
12pt']|html:span[@style='font-size:Normalpt']">
            <fo:block font-size="12pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:block>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
8pt']">
            <fo:inline font-size="8pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
10pt']">
            <fo:inline font-size="10pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
14pt']">
            <fo:inline font-size="14pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
18pt']">
            <fo:inline font-size="18pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
24pt']">
            <fo:inline font-size="24pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family: Arial; font-size:
36pt']">
            <fo:inline font-size="36pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family:Arial']">
            <fo:inline font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <xsl:template match="html:span[@style='font-family:Times']">
            <fo:inline font-family="Times">
                  <xsl:apply-templates/>
            </fo:inline>
      </xsl:template>
      <!-- #################- special custom tags -########################
-->
      <xsl:template match="html:pagebreak">
            <fo:block break-before="page" text-align="right"/>
      </xsl:template>
      <xsl:template match="html:signature">
            <fo:block font-size="12pt" font-family="sans-serif">
                  <xsl:apply-templates/>
            </fo:block>
      </xsl:template>

      <!-- #################- Tables (not supported in sample)
-######################## -->
            <xsl:template match="html:table">
                  <xsl:if test="@bordercolor">
                        <fo:table border-width="{@border}px" border-style
="solid" border-color="{@bordercolor}" background-color="{@bgcolor}"
text-align="left" table-layout="fixed">
                              <fo:table-column column-width="{@colwidth}"/>
                              <fo:table-column column-width="{@colwidth}"/>
                              <fo:table-body padding-left="2pt"
padding-right="2pt" padding-top="2pt" padding-bottom="2pt">
                                    <xsl:apply-templates select="html:tr"/>
                              </fo:table-body>
                        </fo:table>
                  </xsl:if>
                  <xsl:if test="not(@bordercolor)">
                        <fo:table border-width="{@border}px" border-style
="solid" border-color="white" background-color="{@bgcolor}" text-align
="left" table-layout="fixed">
                              <fo:table-column column-width="{@colwidth}"/>
                              <fo:table-column column-width="{@colwidth}"/>
                              <fo:table-body padding-left="2pt"
padding-right="2pt" padding-top="2pt" padding-bottom="2pt">
                                    <xsl:apply-templates select="html:tr"/>
                              </fo:table-body>
                        </fo:table>
                  </xsl:if>

            </xsl:template>

            <xsl:template match="html:tr">
                  <fo:table-row padding-left="2pt" padding-right="2pt"
padding-top="2pt" padding-bottom="2pt">
                        <xsl:apply-templates select="html:th|html:td"/>
                  </fo:table-row>
            </xsl:template>

            <xsl:template match="html:th">
                  <fo:table-cell font-weight="bold" text-align="center"
border-width="1px" border-style="solid">
                        <fo:block>
                              <xsl:apply-templates/>
                        </fo:block>
                  </fo:table-cell>
            </xsl:template>

            <xsl:template match="html:td">
                  <fo:table-cell border-width="{../../@border}"
border-style="solid" border-color="lightgrey" >
                        <fo:block padding-left="{../../@cellpadding}px"
padding-right="{../../@cellpadding}px" padding-top="{../../@cellpadding}px"
padding-bottom="{../../@cellpadding}px">
                              <xsl:apply-templates/>
                        </fo:block>
                  </fo:table-cell>
            </xsl:template>
<!-- #################- IMAGES -######################## -->
            <xsl:template match="html:img">
                  <fo:block space-after="12pt">
                        <fo:external-graphic src="{@src}">
                              <xsl:if test="@width">
                                    <xsl:attribute name="width">
                                          <xsl:choose>
                                                <xsl:when test="contains
(@width, 'px')">
                                                      <xsl:value-of select
="@width"/>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                      <xsl:value-of select
="concat(@width, 'px')"/>
                                                </xsl:otherwise>
                                          </xsl:choose>
                                    </xsl:attribute>
                              </xsl:if>
                              <xsl:if test="@height">
                                    <xsl:attribute name="height">
                                          <xsl:choose>
                                                <xsl:when test="contains
(@height, 'px')">
                                                      <xsl:value-of select
="@height"/>
                                                </xsl:when>
                                                <xsl:otherwise>
                                                      <xsl:value-of select
="concat(@height, 'px')"/>
                                                </xsl:otherwise>
                                          </xsl:choose>
                                    </xsl:attribute>
                              </xsl:if>
                        </fo:external-graphic>
                  </fo:block>

            </xsl:template>

</xsl:stylesheet>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-user-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-user-help@xml.apache.org