123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <?xml version='1.0'?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
- xmlns:fo="http://www.w3.org/1999/XSL/Format"
- version='1.0'>
- <!-- ********************************************************************
- $Id: fop1.xsl 9293 2012-04-19 18:42:11Z bobstayton $
- ********************************************************************
- This file is part of the XSL DocBook Stylesheet distribution.
- See ../README or http://docbook.sf.net/release/xsl/current/ for
- copyright and other information.
- ******************************************************************** -->
- <!-- ==================================================================== -->
- <xsl:variable name="bookmarks.state">
- <xsl:choose>
- <xsl:when test="$bookmarks.collapse != 0">hide</xsl:when>
- <xsl:otherwise>show</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:template match="*" mode="fop1.outline">
- <xsl:apply-templates select="*" mode="fop1.outline"/>
- </xsl:template>
- <xsl:template match="set|book|part|reference|
- preface|chapter|appendix|article|topic
- |glossary|bibliography|index|setindex
- |refentry
- |sect1|sect2|sect3|sect4|sect5|section"
- mode="fop1.outline">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
- <xsl:variable name="bookmark-label">
- <xsl:apply-templates select="." mode="object.title.markup"/>
- </xsl:variable>
- <!-- Put the root element bookmark at the same level as its children -->
- <!-- If the object is a set or book, generate a bookmark for the toc -->
- <xsl:choose>
- <xsl:when test="self::index and $generate.index = 0"/>
- <xsl:when test="parent::*">
- <fo:bookmark internal-destination="{$id}">
- <xsl:attribute name="starting-state">
- <xsl:value-of select="$bookmarks.state"/>
- </xsl:attribute>
- <fo:bookmark-title>
- <xsl:value-of select="normalize-space($bookmark-label)"/>
- </fo:bookmark-title>
- <xsl:apply-templates select="*" mode="fop1.outline"/>
- </fo:bookmark>
- </xsl:when>
- <xsl:otherwise>
- <fo:bookmark internal-destination="{$id}">
- <xsl:attribute name="starting-state">
- <xsl:value-of select="$bookmarks.state"/>
- </xsl:attribute>
- <fo:bookmark-title>
- <xsl:value-of select="normalize-space($bookmark-label)"/>
- </fo:bookmark-title>
- </fo:bookmark>
- <xsl:variable name="toc.params">
- <xsl:call-template name="find.path.params">
- <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="contains($toc.params, 'toc')
- and (book|part|reference|preface|chapter|appendix|article|topic
- |glossary|bibliography|index|setindex
- |refentry
- |sect1|sect2|sect3|sect4|sect5|section)">
- <fo:bookmark internal-destination="toc...{$id}">
- <fo:bookmark-title>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'TableofContents'"/>
- </xsl:call-template>
- </fo:bookmark-title>
- </fo:bookmark>
- </xsl:if>
- <xsl:apply-templates select="*" mode="fop1.outline"/>
- </xsl:otherwise>
- </xsl:choose>
- <!--
- <fo:bookmark internal-destination="{$id}"/>
- -->
- </xsl:template>
- <xsl:template match="*" mode="fop1.foxdest">
- <xsl:apply-templates select="*" mode="fop1.foxdest"/>
- </xsl:template>
- <xsl:template match="set|book|part|reference|
- preface|chapter|appendix|article|topic
- |glossary|bibliography|index|setindex
- |refentry
- |sect1|sect2|sect3|sect4|sect5|section"
- mode="fop1.foxdest">
- <xsl:variable name="id">
- <xsl:call-template name="object.id"/>
- </xsl:variable>
- <xsl:variable name="bookmark-label">
- <xsl:apply-templates select="." mode="object.title.markup"/>
- </xsl:variable>
- <!--xsl:if test="$id != ''">
- <fox:destination internal-destination="{$id}"/>
- </xsl:if-->
- <!-- Put the root element bookmark at the same level as its children -->
- <!-- If the object is a set or book, generate a bookmark for the toc -->
- <xsl:choose>
- <xsl:when test="self::index and $generate.index = 0"/>
- <xsl:when test="parent::*">
- <fox:destination internal-destination="{$id}"/>
- <xsl:apply-templates select="*" mode="fop1.foxdest"/>
- </xsl:when>
- <xsl:otherwise>
- <fox:destination internal-destination="{$id}"/>
- <xsl:apply-templates select="*" mode="fop1.foxdest"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <!-- Metadata support ("Document Properties" in Adobe Reader) -->
- <xsl:template name="fop1-document-information">
- <xsl:variable name="authors" select="(//author|//editor|//corpauthor|//authorgroup)[1]"/>
- <xsl:variable name="title">
- <xsl:apply-templates select="/*[1]" mode="label.markup"/>
- <xsl:apply-templates select="/*[1]" mode="title.markup"/>
- <xsl:variable name="subtitle">
- <xsl:apply-templates select="/*[1]" mode="subtitle.markup">
- <xsl:with-param name="verbose" select="0"/>
- </xsl:apply-templates>
- </xsl:variable>
- <xsl:if test="$subtitle !=''">
- <xsl:text> - </xsl:text>
- <xsl:value-of select="$subtitle"/>
- </xsl:if>
- </xsl:variable>
- <fo:declarations>
- <x:xmpmeta xmlns:x="adobe:ns:meta/">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <!-- Dublin Core properties go here -->
- <!-- Title -->
- <dc:title><xsl:value-of select="normalize-space($title)"/></dc:title>
- <!-- Author -->
- <xsl:if test="$authors">
- <xsl:variable name="author">
- <xsl:choose>
- <xsl:when test="$authors[self::authorgroup]">
- <xsl:call-template name="person.name.list">
- <xsl:with-param name="person.list"
- select="$authors/*[self::author|self::corpauthor|
- self::othercredit|self::editor]"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$authors[self::corpauthor]">
- <xsl:value-of select="$authors"/>
- </xsl:when>
- <xsl:when test="$authors[orgname]">
- <xsl:value-of select="$authors/orgname"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="person.name">
- <xsl:with-param name="node" select="$authors"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <dc:creator><xsl:value-of select="normalize-space($author)"/></dc:creator>
- </xsl:if>
- <!-- Subject -->
- <xsl:if test="//subjectterm">
- <dc:description>
- <xsl:for-each select="//subjectterm">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </dc:description>
- </xsl:if>
- </rdf:Description>
- <rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
- <!-- PDF properties go here -->
- <!-- Keywords -->
- <xsl:if test="//keyword">
- <pdf:Keywords>
- <xsl:for-each select="//keyword">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </pdf:Keywords>
- </xsl:if>
- </rdf:Description>
- <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
- <!-- XMP properties go here -->
- <!-- Creator Tool -->
- <xmp:CreatorTool>DocBook XSL Stylesheets with Apache FOP</xmp:CreatorTool>
- </rdf:Description>
- </rdf:RDF>
- </x:xmpmeta>
- </fo:declarations>
- </xsl:template>
- </xsl:stylesheet>
|