479 lines
15 KiB
XML
479 lines
15 KiB
XML
|
<?xml version="1.0"?>
|
||
|
|
||
|
<reference xml:id="template"><?dbhtml dir="template"?><?dbhtml filename="index.html"?>
|
||
|
|
||
|
|
||
|
<info>
|
||
|
<title>Titlepage Template Stylesheet Reference</title>
|
||
|
<releaseinfo role="meta">
|
||
|
$Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $
|
||
|
</releaseinfo>
|
||
|
</info>
|
||
|
<partintro xml:id="intro_partintro">
|
||
|
<title>Introduction</title>
|
||
|
|
||
|
<para>This is technical reference documentation for the
|
||
|
“titlepage” templates in the DocBook XSL Stylesheets.</para>
|
||
|
|
||
|
|
||
|
<para>This is not intended to be user documentation. It is
|
||
|
provided for developers writing customization layers for the
|
||
|
stylesheets.</para>
|
||
|
|
||
|
</partintro>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="templates">
|
||
|
<refnamediv>
|
||
|
<refname>t:templates</refname>
|
||
|
<refpurpose>Construct a stylesheet for the templates provided</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:templates"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>The <literal>t:templates</literal> element is the root of a
|
||
|
set of templates. This template creates an appropriate
|
||
|
<literal>xsl:stylesheet</literal> for the templates.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>If the <literal>t:templates</literal> element has a
|
||
|
<literal>base-stylesheet</literal> attribute, an
|
||
|
<literal>xsl:import</literal> statement is constructed for it.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star">
|
||
|
<refnamediv>
|
||
|
<refname>xsl:*</refname>
|
||
|
<refpurpose>Copy xsl: elements straight through</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="xsl:*"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template simply copies the xsl: elements
|
||
|
straight through into the result tree.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage">
|
||
|
<refnamediv>
|
||
|
<refname>t:titlepage</refname>
|
||
|
<refpurpose>Create the templates necessary to construct a title page</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:titlepage"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>The <literal>t:titlepage</literal> element creates a set of
|
||
|
templates for processing the titlepage for an element. The
|
||
|
<quote>root</quote> of this template set is the template named
|
||
|
<quote><literal>wrapper.titlepage</literal></quote>. That is the
|
||
|
template that should be called to generate the title page.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>The <literal>t:titlepage</literal> element has three attributes:
|
||
|
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry><term>element</term>
|
||
|
<listitem>
|
||
|
<para>The name of the source document element for which
|
||
|
these templates apply. In other words, to make a title page for the
|
||
|
<tag>article</tag> element, set the
|
||
|
<tag class="attribute">element</tag> attribute to
|
||
|
<quote><literal>article</literal></quote>. This attribute is required.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry><term>wrapper</term>
|
||
|
<listitem>
|
||
|
<para>The entire title page can be wrapped with an element.
|
||
|
This attribute identifies that element.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry><term>class</term>
|
||
|
<listitem>
|
||
|
<para>If the <tag class="attribute">class</tag> attribute
|
||
|
is set, a <tag class="attribute">class</tag> attribute with this
|
||
|
value will be added to the wrapper element that surrounds the entire
|
||
|
title page.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>Any other attributes are copied through literally to the
|
||
|
wrapper element.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>The content of a <literal>t:titlepage</literal> is one or
|
||
|
more <literal>t:titlepage-content</literal>,
|
||
|
<literal>t:titlepage-separator</literal>, and
|
||
|
<literal>t:titlepage-before</literal> elements.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>Each of these elements may be provided for the <quote>recto</quote>
|
||
|
and <quote>verso</quote> sides of the title page.</para>
|
||
|
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="attr_star_in_copy.literal.atts">
|
||
|
<refnamediv>
|
||
|
<refname>@* (in copy.literal.atts mode)</refname>
|
||
|
<refpurpose>Copy t:titlepage attributes</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="@*" mode="copy.literal.atts"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template copies all of the <quote>other</quote> attributes
|
||
|
from a <literal>t:titlepage</literal> element onto the specified
|
||
|
wrapper.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage-content">
|
||
|
<refnamediv>
|
||
|
<refname>t:titlepage-content</refname>
|
||
|
<refpurpose>Create templates for the content of one side of a title page</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:titlepage-content"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>The title page content, that is, the elements from the source
|
||
|
document that are rendered on the title page, can be controlled independently
|
||
|
for the recto and verso sides of the title page.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>The <literal>t:titlepage-content</literal> element has two attributes:
|
||
|
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry><term>side</term>
|
||
|
<listitem>
|
||
|
<para>Identifies the side of the page to which this title
|
||
|
page content applies. The
|
||
|
<tag class="attribute">side</tag> attribute is required and
|
||
|
must be set to either
|
||
|
<quote><literal>recto</literal></quote> or
|
||
|
<quote><literal>verso</literal></quote>. In addition, you must specify
|
||
|
exactly one <literal>t:titlepage-content</literal> for each side
|
||
|
within each <literal>t:titlepage</literal>.</para>
|
||
|
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
<varlistentry><term>order</term>
|
||
|
<listitem>
|
||
|
<para>Indicates how the order of the elements presented on
|
||
|
the title page is determined. If the
|
||
|
<tag class="attribute">order</tag> is
|
||
|
<quote><literal>document</literal></quote>, the elements are presented
|
||
|
in document order. Otherwise (if the
|
||
|
<tag class="attribute">order</tag> is
|
||
|
<quote><literal>stylesheet</literal></quote>), the elements are presented
|
||
|
in the order that they appear in the template (and consequently in
|
||
|
the stylesheet).</para>
|
||
|
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>The content of a <literal>t:titlepage-content</literal> element is
|
||
|
a list of element names. These names should be unqualified. They identify
|
||
|
the elements in the source document that should appear on the title page.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>Each element may have a single attribute:
|
||
|
<tag class="attribute">predicate</tag>. The value of this
|
||
|
attribute is used as a predicate for the expression that matches
|
||
|
the element on which it occurs.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>In other words, to put only the first three authors on the
|
||
|
recto-side of a title
|
||
|
page, you could specify:
|
||
|
|
||
|
<screen>
|
||
|
<t:titlepage-contents side="recto">
|
||
|
<!-- other titlepage elements -->
|
||
|
<author predicate="[count(previous-sibling::author)<2]"/>
|
||
|
<!-- other titlepage elements -->
|
||
|
</t:titlepage-contents>
|
||
|
</screen>
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>Usually, the elements so named are empty. But it is possible to
|
||
|
make one level of selection within them. Suppose that you want to
|
||
|
process <literal>authorgroup</literal> elements on the title page, but
|
||
|
you want to select only proper authors, editors, or corporate authors,
|
||
|
not collaborators or other credited authors.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>In that case, you can put a <literal>t:or</literal> group inside
|
||
|
the <literal>authorgroup</literal> element:
|
||
|
|
||
|
<screen>
|
||
|
<t:titlepage-contents side="recto">
|
||
|
<!-- other titlepage elements -->
|
||
|
<authorgroup>
|
||
|
<t:or>
|
||
|
<author/>
|
||
|
<editor/>
|
||
|
<corpauthor/>
|
||
|
</t:or>
|
||
|
</authorgroup>
|
||
|
<!-- other titlepage elements -->
|
||
|
</t:titlepage-contents>
|
||
|
</screen>
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>This will have the effect of automatically generating a template
|
||
|
for processing <literal>authorgroup</literal>s in the title page mode,
|
||
|
selecting only the specified children. If you need more complex processing,
|
||
|
you'll have to construct the templates by hand.</para>
|
||
|
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage-separator">
|
||
|
<refnamediv>
|
||
|
<refname>t:titlepage-separator</refname>
|
||
|
<refpurpose>Create templates for the separator</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:titlepage-separator"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>The title page is separated from the content which follows it by
|
||
|
the markup specified in the <literal>t:titlepage-separator</literal>
|
||
|
element.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="titlepage-before">
|
||
|
<refnamediv>
|
||
|
<refname>t:titlepage-before</refname>
|
||
|
<refpurpose>Create templates for what precedes a title page</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:titlepage-before"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>Each side of the title page is preceded by the markup specified
|
||
|
in the <literal>t:titlepage-before</literal> element for that
|
||
|
side.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_copy">
|
||
|
<refnamediv>
|
||
|
<refname>* (in copy mode)</refname>
|
||
|
<refpurpose>Copy elements</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="*" mode="copy"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template simply copies the elements that it applies to
|
||
|
straight through into the result tree.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="attr_star_in_copy">
|
||
|
<refnamediv>
|
||
|
<refname>@* (in copy mode)</refname>
|
||
|
<refpurpose>Copy attributes</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="@*" mode="copy"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template simply copies the attributes that it applies to
|
||
|
straight through into the result tree.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="attr_star_in_document.order">
|
||
|
<refnamediv>
|
||
|
<refname>* (in document.order mode)</refname>
|
||
|
<refpurpose>Create rules to process titlepage elements in document order</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="*" mode="document.order"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template is called to process all of the children of the
|
||
|
<literal>t:titlepage-content</literal> element. It creates the hairy
|
||
|
select expression necessary to process each of those elements in
|
||
|
the title page.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>Note that this template automatically handles the case where
|
||
|
some DocBook elements, like title and subtitle, can occur both inside
|
||
|
the *info elements where metadata is usually stored and outside.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>It also automatically calculates the name for the *info container
|
||
|
and handles elements that have historically had containers with different
|
||
|
names.</para>
|
||
|
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_document.order">
|
||
|
<refnamediv>
|
||
|
<refname>* (in document.order mode)</refname>
|
||
|
<refpurpose>Create rules to process titlepage elements in stylesheet order</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="*" mode="document.order"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template is called to process all of the children of the
|
||
|
<literal>t:titlepage-content</literal> element. It creates the set
|
||
|
of <literal>xsl:apply-templates</literal> elements necessary
|
||
|
process each of those elements in the title page.</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>Note that this template automatically handles the case where
|
||
|
some DocBook elements, like title and subtitle, can occur both inside
|
||
|
the *info elements where metadata is usually stored and outside.
|
||
|
</para>
|
||
|
|
||
|
|
||
|
|
||
|
<para>It also automatically calculates the name for the *info container
|
||
|
and handles elements that have historically had containers with different
|
||
|
names.</para>
|
||
|
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_titlepage.specialrules">
|
||
|
<refnamediv>
|
||
|
<refname>* (in titlepage.specialrules mode)</refname>
|
||
|
<refpurpose>Create templates for special rules</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="*" mode="titlepage.specialrules"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template is called to process all of the descendants of the
|
||
|
<literal>t:titlepage-content</literal> element that require special
|
||
|
processing. At present, that's just <literal>t:or</literal> elements.
|
||
|
</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="star_in_titlepage.subrules">
|
||
|
<refnamediv>
|
||
|
<refname>* (in titlepage.subrules mode)</refname>
|
||
|
<refpurpose>Create template for individual special rules</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="*" mode="titlepage.subrules"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template is called to process the children of special
|
||
|
template elements.
|
||
|
</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="or">
|
||
|
<refnamediv>
|
||
|
<refname>t:or</refname>
|
||
|
<refpurpose>Process the t:or special rule</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:or"/><xsl:template match="t:or" mode="titlepage.subrules"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>This template processes t:or.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="or_in_titlepage.subrules">
|
||
|
<refnamediv>
|
||
|
<refname>t:or (in titlepage.subrules mode)</refname>
|
||
|
<refpurpose>Process the t:or special rule in
|
||
|
titlepage.subrules mode</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template match="t:or" mode="titlepage.subrules"/></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>The titlepage.subrules mode doesn't apply to t:or, so just
|
||
|
reprocess this node in the normal mode.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
|
||
|
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="template.element-or-list">
|
||
|
<refnamediv>
|
||
|
<refname>element-or-list</refname>
|
||
|
<refpurpose>Construct the "or-list" used in the select attribute for
|
||
|
special rules.</refpurpose>
|
||
|
</refnamediv>
|
||
|
<refsynopsisdiv>
|
||
|
<synopsis><xsl:template name="element-or-list">
|
||
|
<xsl:param name="elements" select="*"/>
|
||
|
<xsl:param name="element.count" select="count($elements)"/>
|
||
|
<xsl:param name="count" select="1"/>
|
||
|
<xsl:param name="orlist"/>
|
||
|
...
|
||
|
</xsl:template></synopsis>
|
||
|
</refsynopsisdiv>
|
||
|
<refsect1><title>Description</title>
|
||
|
|
||
|
<para>Walk through each of the children of t:or, producing the
|
||
|
text of the select attribute.</para>
|
||
|
|
||
|
</refsect1></refentry>
|
||
|
</reference>
|
||
|
|