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>•</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