You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2003/10/16 20:45:04 UTC
cvs commit: ws-axis/contrib/axisdocs/src/documentation/skins/common/xslt/fo document2fo.xsl footerinfo.xsl pdfoutline.xsl
dims 2003/10/16 11:45:04
Added: contrib/axisdocs/src/documentation/skins/common/xslt/fo
document2fo.xsl footerinfo.xsl pdfoutline.xsl
Log:
Doc contribution from "Tetsuya Kitahata" <te...@apache.org>:
Step #1: download Apache Forrest from http://xml.apache.org/forrest/ (version 0.5.1) and install.
Step #2: From unzipped directory ($AXIS), run "forrest site" and the html files will be created at
$AXIS/build/site/ directory.
Revision Changes Path
1.1 ws-axis/contrib/axisdocs/src/documentation/skins/common/xslt/fo/document2fo.xsl
Index: document2fo.xsl
===================================================================
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
<xsl:output method="xml"/>
<xsl:param name="numbersections" select="'true'"/>
<!-- Section depth at which we stop numbering and just indent -->
<xsl:param name="numbering-max-depth" select="'3'"/>
<xsl:param name="ctxbasedir" select="."/>
<xsl:param name="xmlbasedir"/>
<xsl:include href="pdfoutline.xsl"/>
<xsl:include href="footerinfo.xsl"/>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="first-page"
page-height="11in"
page-width="8.5in"
margin-top="1in"
margin-bottom="1in"
margin-left="1.25in"
margin-right="1in">
<fo:region-body
margin-top="0.5in"
margin-bottom=".5in"/>
<fo:region-after
region-name="first-footer"
extent=".5in"
display-align="before"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="even-page"
page-height="11in"
page-width="8.5in"
margin-top="1in"
margin-bottom="1in"
margin-left="1.25in"
margin-right="1in">
<fo:region-before
region-name="even-header"
extent="0.5in"
border-bottom="0.5pt solid"/>
<fo:region-body
margin-top="0.5in"
margin-bottom=".5in"/>
<fo:region-after
region-name="even-footer"
extent=".5in"
display-align="before"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="odd-page"
page-height="11in"
page-width="8.5in"
margin-top="1in"
margin-bottom="1in"
margin-left="1.25in"
margin-right="1in">
<fo:region-before
region-name="odd-header"
extent="0.5in"
border-bottom="0.5pt solid"/>
<fo:region-body
margin-top="0.5in"
margin-bottom=".5in"/>
<fo:region-after
region-name="odd-footer"
extent=".5in"
display-align="before"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="book">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference
page-position="first"
master-reference="first-page"/>
<fo:conditional-page-master-reference
odd-or-even="odd"
master-reference="odd-page"/>
<fo:conditional-page-master-reference
odd-or-even="even"
master-reference="even-page"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
<xsl:apply-templates select="/document" mode="outline"/>
<fo:page-sequence master-reference="book">
<fo:title><xsl:value-of select="document/header/title"/></fo:title>
<xsl:apply-templates/>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="document">
<fo:title><xsl:value-of select="header/title"/></fo:title>
<fo:static-content flow-name="first-footer">
<fo:block
border-top="0.25pt solid"
padding-before="6pt"
text-align="center">
<xsl:apply-templates select="footer"/>
</fo:block>
<fo:block
text-align="start">
Page <fo:page-number/>
</fo:block>
<xsl:call-template name="info"/>
</fo:static-content>
<fo:static-content flow-name="even-header">
<fo:block
text-align="end"
font-style="italic">
<xsl:value-of select="header/title"/>
</fo:block>
</fo:static-content>
<fo:static-content flow-name="even-footer">
<fo:block
border-top="0.25pt solid"
padding-before="6pt"
text-align="center">
<xsl:apply-templates select="footer"/>
</fo:block>
<fo:block
text-align="end">
Page <fo:page-number/>
</fo:block>
<xsl:call-template name="info"/>
</fo:static-content>
<fo:static-content flow-name="odd-header">
<fo:block
text-align="start"
font-style="italic">
<xsl:value-of select="header/title"/>
</fo:block>
</fo:static-content>
<fo:static-content flow-name="odd-footer">
<fo:block
border-top="0.25pt solid"
padding-before="6pt"
text-align="center">
<xsl:apply-templates select="footer"/>
</fo:block>
<fo:block
text-align="start">
Page <fo:page-number/>
</fo:block>
<xsl:call-template name="info"/>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:block
padding-before="24pt"
padding-after="24pt"
font-size="24pt"
font-weight="bold"
id="{generate-id()}">
<xsl:value-of select="header/title"/>
</fo:block>
<fo:block
text-align="justify"
padding-before="18pt"
padding-after="18pt">
<xsl:apply-templates/>
</fo:block>
</fo:flow>
</xsl:template>
<xsl:template match="abstract">
<fo:block
font-size="12pt"
text-align="center"
space-before="20pt"
space-after="25pt"
width="7.5in"
font-family="serif"
font-style="italic">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="notice">
<fo:block
font-size="10pt"
text-align="left"
space-before="20pt"
width="7.5in"
font-family="serif"
border-top="0.25pt solid"
border-bottom="0.25pt solid"
padding-before="6pt"
padding-after="6pt">
NOTICE: <xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="anchor">
<fo:block id="{@id}"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="section">
<xsl:param name="level">0</xsl:param>
<xsl:variable name="size">
<xsl:choose>
<xsl:when test="number($level) = 1">
<xsl:value-of select="14"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="12"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:block
font-family="serif"
font-size="{$size}pt"
font-weight="bold"
space-before="12pt"
space-after="4pt">
<xsl:attribute name="id">
<xsl:choose>
<xsl:when test="normalize-space(@id)!=''">
<xsl:value-of select="@id"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="generate-id()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$numbersections = 'true' and number($level) < $numbering-max-depth+1">
<xsl:number format="1.1.1.1.1.1.1" count="section" level="multiple"/>
<xsl:text>. </xsl:text>
</xsl:if>
<!-- For sections 4 or more nestings deep, indent instead of number -->
<xsl:if test="number($level) > $numbering-max-depth+1">
<xsl:attribute name="start-indent">
<xsl:value-of select="4+number($level)"/><xsl:text>pt</xsl:text>
</xsl:attribute>
</xsl:if>
<xsl:value-of select="title"/>
</fo:block>
<xsl:apply-templates>
<xsl:with-param name="level" select="number($level)+1"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="title">
<!-- do nothing as titles are handled in their parent templates -->
</xsl:template>
<xsl:template match="subtitle">
<xsl:param name="level">0</xsl:param>
<xsl:variable name="size" select="16-(number($level)*1.5)"/>
<fo:block
font-weight="bold"
font-size="{$size}pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="authors">
<fo:block
space-before="20pt"
font-weight="bold"
font-size="9pt">
by
<xsl:for-each select="person">
<xsl:value-of select="@name"/>
<xsl:if test="not(position() = last())">, </xsl:if>
</xsl:for-each>
</fo:block>
</xsl:template>
<xsl:template match="p">
<fo:block
space-before="4pt"
space-after="4pt"
font-family="serif">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="source">
<fo:block
font-family="monospace"
font-size="10pt"
background-color="#f0f0f0"
white-space-collapse="false"
linefeed-treatment="preserve"
white-space-treatment="preserve"
wrap-option="no-wrap"
text-align="start">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="ol|ul">
<fo:list-block
provisional-distance-between-starts="18pt"
provisional-label-separation="3pt"
text-align="start">
<xsl:apply-templates/>
</fo:list-block>
</xsl:template>
<xsl:template match="ol/li">
<fo:list-item>
<fo:list-item-label
end-indent="label-end()">
<fo:block>
<xsl:number format="1."/>
</fo:block>
</fo:list-item-label>
<fo:list-item-body
start-indent="body-start()">
<fo:block
font-family="serif">
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
<!-- Emulate browser handling of these invalid combinations that our DTD
unfortunately allows -->
<xsl:template match="ul/ul | ul/ol | ol/ul | ol/ol">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block></fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block font-family="serif">
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
<xsl:template match="ul/li">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block>•</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block
font-family="serif">
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
<xsl:template match="dl">
<fo:list-block
provisional-distance-between-starts="18pt"
provisional-label-separation="3pt"
text-align="start">
<xsl:apply-templates/>
</fo:list-block>
</xsl:template>
<xsl:template match="dt">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block></fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block
font-weight="bold">
<xsl:apply-templates/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</xsl:template>
<xsl:template match="dd">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<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:template>
<xsl:template match="strong">
<fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="em">
<fo:inline font-style="italic"><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="code">
<fo:inline font-family="monospace"><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match="warning">
<fo:block
margin-left="0.25in"
margin-right="0.25in"
font-weight="bold"
font-size="10pt"
font-family="serif"
space-before="10pt"
border-before-style="solid"
border-start-style="solid"
border-end-style="solid"
border-color="#D00000"
background-color="#D00000"
color="#ffffff">
<xsl:choose>
<xsl:when test="@label"><xsl:value-of select="@label"/></xsl:when>
<xsl:otherwise>Note: </xsl:otherwise>
</xsl:choose><xsl:value-of select="title"/>
</fo:block>
<fo:block
margin-left="0.25in"
margin-right="0.25in"
font-family="serif"
font-size="8pt"
border-after-style="solid"
border-start-style="solid"
border-end-style="solid"
border-color="#D00000"
background-color="#fff0f0"
padding-start="3pt"
padding-end="3pt"
padding-before="3pt"
padding-after="3pt"
space-after="10pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="note">
<fo:block
margin-left="0.25in"
margin-right="0.25in"
font-weight="bold"
font-size="10pt"
color="#ffffff"
font-family="serif"
space-before="10pt"
border-before-style="solid"
border-start-style="solid"
border-end-style="solid"
border-color="#A0C9F5"
background-color="#A0C9F5">
<xsl:choose>
<xsl:when test="@label"><xsl:value-of select="@label"/></xsl:when>
<xsl:otherwise>Note: </xsl:otherwise>
</xsl:choose><xsl:value-of select="title"/>
</fo:block>
<fo:block
margin-left="0.25in"
margin-right="0.25in"
font-family="serif"
font-size="8pt"
space-after="10pt"
border-after-style="solid"
border-start-style="solid"
border-end-style="solid"
border-color="#A0C9F5"
background-color="#F0F0FF"
padding-start="3pt"
padding-end="3pt"
padding-before="3pt"
padding-after="3pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="fixme">
<fo:block
margin-left="0.25in"
margin-right="0.25in"
font-weight="bold"
font-size="10pt"
color="#FFFFFF"
font-family="serif"
space-before="10pt"
border-before-style="solid"
border-start-style="solid"
border-end-style="solid"
border-color="#C6C650"
background-color="#C6C650">
FIXME (<xsl:value-of select="@author"/>): <xsl:value-of select="title"/>
</fo:block>
<fo:block
margin-left="0.25in"
margin-right="0.25in"
font-family="serif"
font-size="8pt"
space-after="10pt"
border-after-style="solid"
border-start-style="solid"
border-end-style="solid"
border-color="#C6C650"
background-color="#FFF0F0"
padding-start="3pt"
padding-end="3pt"
padding-before="3pt"
padding-after="3pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="link">
<xsl:choose>
<xsl:when test="starts-with(@href, '#')">
<fo:basic-link color="blue" text-decoration="underline" internal-destination="{substring(@href,2)}">
<xsl:apply-templates/>
</fo:basic-link>
</xsl:when>
<xsl:otherwise>
<fo:basic-link color="blue" text-decoration="underline" external-destination="{@href}"><xsl:apply-templates/></fo:basic-link>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="figure|img">
<fo:block text-align="center">
<xsl:if test="normalize-space(@id)!=''">
<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:if>
<!-- Make relative paths absolute -->
<xsl:variable name="imgpath">
<xsl:choose>
<xsl:when test="starts-with(string(@src), 'images/') or contains(string(@src), '../images')">
<xsl:value-of select="concat($ctxbasedir, 'resources/images/' , substring-after(@src, 'images'))"/>
</xsl:when>
<xsl:otherwise><xsl:value-of select="concat($ctxbasedir, $xmlbasedir, @src)"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<fo:external-graphic src="{$imgpath}">
<xsl:if test="@height">
<xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute>
</xsl:if>
<xsl:if test="@width">
<xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute>
</xsl:if>
</fo:external-graphic>
<!-- alt text -->
<xsl:if test="normalize-space(@alt)!=''">
<fo:block><xsl:value-of select="@alt"/></fo:block>
</xsl:if>
</fo:block>
</xsl:template>
<xsl:template match="table">
<!-- FIXME: Apache FOP must have column widths specified at present,
this section can be removed when this limitation is removed from Fop.
Unfortunately, this means that each column is a fixed width,
but at least the table displays! -->
<xsl:variable name="max-number-columns">
<xsl:for-each select="tr">
<xsl:sort select="count(td|th)" data-type="number" order="descending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="count(td|th)"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="column-width">
<xsl:value-of select="6.25 div number($max-number-columns)"/>in
</xsl:variable>
<fo:table>
<fo:table-column>
<xsl:attribute name="column-width">
<xsl:value-of select="$column-width"/>
</xsl:attribute>
<xsl:attribute name="number-columns-repeated">
<xsl:value-of select="number($max-number-columns)"/>
</xsl:attribute>
</fo:table-column>
<!-- End of hack for Fop support (if removing this hack, remember
you need the <fo:table> element) -->
<fo:table-body
font-size="10pt"
font-family="sans-serif">
<xsl:apply-templates select="tr"/>
</fo:table-body>
</fo:table>
<!-- FIXME: Apache Fop does not support the caption element yet.
This hack will display the table caption accordingly. -->
<xsl:if test="caption">
<fo:block
text-align="center"
font-weight="bold">
Table
<xsl:text> </xsl:text>
<xsl:number count="table" level="multiple"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="caption"/>
</fo:block>
</xsl:if>
</xsl:template>
<xsl:template match="tr">
<fo:table-row>
<xsl:apply-templates/>
</fo:table-row>
</xsl:template>
<xsl:template match="th">
<fo:table-cell
padding-before="4pt"
padding-after="4pt"
padding-start="4pt"
padding-end="4pt"
background-color="#A0C9F5">
<xsl:attribute name="number-columns-spanned">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
<xsl:attribute name="number-rows-spanned">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
<fo:block
text-align="center">
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="td">
<fo:table-cell
padding-before="4pt"
padding-after="4pt"
padding-start="4pt"
padding-end="4pt"
border="1pt solid #A0C9F5">
<xsl:attribute name="number-columns-spanned">
<xsl:value-of select="@colspan"/>
</xsl:attribute>
<xsl:attribute name="number-rows-spanned">
<xsl:value-of select="@rowspan"/>
</xsl:attribute>
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:table-cell>
</xsl:template>
<xsl:template match="br">
<fo:block></fo:block>
</xsl:template>
<xsl:template match="legal">
<fo:inline
font-size="8pt">
<xsl:apply-templates/>
</fo:inline>
</xsl:template>
<!-- ====================================================================== -->
<!-- Local Extensions section -->
<!-- ====================================================================== -->
<xsl:template match="citation">
<fo:inline>
[<xsl:value-of select="@def"/>]
</fo:inline>
</xsl:template>
</xsl:stylesheet>
1.1 ws-axis/contrib/axisdocs/src/documentation/skins/common/xslt/fo/footerinfo.xsl
Index: footerinfo.xsl
===================================================================
<?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"
version="1.0">
<!--
Named template to generate a short message in the PDF footer, from text in
skinconf.xml. By default, the message is a copyright statement. If a credit
with @role='pdf' is present, that is used instead. Eg:
<credit role="pdf">
<name>Generated by Apache FOP 1.0-dev</name>
<url>http://xml.apache.org/forrest/fop/dev/</url>
</credit>
-->
<xsl:param name="config-file" select="'../../../../skinconf.xml'"/>
<xsl:variable name="config" select="document($config-file)/skinconfig"/>
<xsl:template name="info">
<xsl:variable name="pdfcredit" select="$config/credits/credit[@role = 'pdf']"/>
<xsl:variable name="text">
<xsl:if test="$pdfcredit">
<xsl:value-of select="$pdfcredit/name"/>
</xsl:if>
<xsl:if test="not($pdfcredit)">
<xsl:text>Copyright © </xsl:text><xsl:value-of select="$config/year"/> <xsl:value-of
select="$config/vendor"/><xsl:text> All rights reserved.</xsl:text>
</xsl:if>
</xsl:variable>
<xsl:variable name="url" select="$pdfcredit/url"/>
<fo:block-container font-style="italic" absolute-position="absolute"
left="0pt" top="0pt" right="6.25in" bottom="150pt"
font-size="10pt">
<xsl:if test="not($url)">
<fo:block text-align="center" color="lightgrey">
<xsl:value-of select="$text"/>
</fo:block>
</xsl:if>
<xsl:if test="$url">
<fo:block text-align="center">
<fo:basic-link color="lightgrey"
external-destination="{$url}">
<xsl:value-of select="$text"/>
</fo:basic-link>
</fo:block>
<fo:block text-align="center">
<fo:basic-link color="lightgrey"
external-destination="{$url}">
<xsl:value-of select="$url"/>
</fo:basic-link>
</fo:block>
</xsl:if>
</fo:block-container>
</xsl:template>
</xsl:stylesheet>
1.1 ws-axis/contrib/axisdocs/src/documentation/skins/common/xslt/fo/pdfoutline.xsl
Index: pdfoutline.xsl
===================================================================
<?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:fox="http://xml.apache.org/fop/extensions"
version="1.0">
<xsl:template match="document" mode="outline">
<xsl:apply-templates select="body/section" mode="outline"/>
</xsl:template>
<xsl:template match="section" mode="outline">
<fox:outline>
<xsl:attribute name="internal-destination">
<xsl:choose>
<xsl:when test="normalize-space(@id)!=''">
<xsl:value-of select="@id"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="generate-id()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<fox:label>
<xsl:number format="1.1.1.1.1.1.1" count="section" level="multiple"/>
<xsl:text> </xsl:text>
<xsl:value-of select="title"/>
</fox:label>
<xsl:apply-templates select="section" mode="outline"/>
</fox:outline>
</xsl:template>
</xsl:stylesheet>