| <?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$ |
| </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> |
| |