From: Norman Walsh Date: Mon, 2 Apr 2001 13:45:17 +0000 (+0000) Subject: Initial checkin X-Git-Tag: release/1.79.1~6^2~6655 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6f3433f952f867a3ac87e3e4b1d70d4db0f38e4;p=docbook-dsssl Initial checkin --- diff --git a/xsl/template/README b/xsl/template/README new file mode 100644 index 000000000..a84d084bf --- /dev/null +++ b/xsl/template/README @@ -0,0 +1,15 @@ +This directory contains rudimentary support for the notion of +stylesheet templates. + +The idea is that if you want to change the behavior of the +stylesheets, for example, processing different bibliography +elements, you will construct a tempate document that describes +what you want and then process that template with the "template" +stylesheet. + +The result of this processing will be a customization layer for +the DocBook XSL Stylesheets that does what you want. This +removes the stylesheet customizer from the burdon of figuring +out how the stylesheets work and modifying them. + +In theory, anyway... \ No newline at end of file diff --git a/xsl/template/biblioentry.xsl b/xsl/template/biblioentry.xsl new file mode 100644 index 000000000..44a26dd31 --- /dev/null +++ b/xsl/template/biblioentry.xsl @@ -0,0 +1,72 @@ + + + + + + + biblioentry + + + id + + object.id + + + + + {$id} + {name(.)} + + + {$id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bibliography.mode + + + + + + + + + + bibliography.mode + + + diff --git a/xsl/template/testtemplate.xml b/xsl/template/testtemplate.xml new file mode 100644 index 000000000..9a9c3c857 --- /dev/null +++ b/xsl/template/testtemplate.xml @@ -0,0 +1,38 @@ + + + +docbook.css + + + + <subtitle predicate="[1]"/> + <corpauthor/> + <author/> + <authorgroup> + <t:or> + <corpauthor/> + <author/> + <editor/> + </t:or> + </authorgroup> + <editor/> + <releaseinfo/> + <copyright/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> +</t:titlepage> + +<t:biblioentry> + <abbrev/> + <title/> + <t:or> + <authorgroup/> + <author/> + </t:or> + <biblioset/> +</t:biblioentry> + +</t:templates> \ No newline at end of file diff --git a/xsl/template/titlepage.xsl b/xsl/template/titlepage.xsl new file mode 100644 index 000000000..6b08fcff1 --- /dev/null +++ b/xsl/template/titlepage.xsl @@ -0,0 +1,1043 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0" + xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + exclude-result-prefixes="doc" + version='1.0'> + +<!-- ******************************************************************** + $Id$ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://nwalsh.com/docbook/xsl/ for copyright + and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<doc:reference xmlns=""> +<referenceinfo> +<releaseinfo role="meta"> +$Id$ +</releaseinfo> +<author><surname>Walsh</surname> +<firstname>Norman</firstname></author> +<copyright><year>1999</year><year>2000</year> +<holder>Norman Walsh</holder> +</copyright> +</referenceinfo> +<title>Template Stylesheet Reference + + +
Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
+
+ + + + + + + + + + + +Construct a stylesheet for the templates provided + + +The t:templates element is the root of a +set of templates. This template creates an appropriate +xsl:stylesheet for the templates. + +If the t:templates element has a +base-stylesheet attribute, an +xsl:import statement is constructed for it. + + + + + + 1.0 + + + + This stylesheet was created by + template/titlepage.xsl; + do not edit it by hand. + + + + + + + + + + + + + + + + + + + + +Copy xsl: elements straight through + + +This template simply copies the xsl: elements +straight through into the result tree. + + + + + + + + + + +Create the templates necessary to construct a title page + + +The t:titlepage element creates a set of +templates for processing the titlepage for an element. The +root of this template set is the template named +wrapper.titlepage. That is the +template that should be called to generate the title page. + + +The t:titlepage element has three attributes: + + +element +The name of the source document element for which +these templates apply. In other words, to make a title page for the +article element, set the +element attribute to +article. This attribute is required. + + +wrapper +The entire title page can be wrapped with an element. +This attribute identifies that element. + + +class +If the class attribute +is set, a class attribute with this +value will be added to the wrapper element that surrounds the entire +title page. + + + + + +Any other attributes are copied through literally to the +wrapper element. + +The content of a t:titlepage is one or +more t:titlepage-content, +t:titlepage-separator, and +t:titlepage-before elements. + +Each of these elements may be provided for the recto +and verso sides of the title page. + + + + + + + + + + + + + + .titlepage + + + + + + + + + .titlepage.before.recto + + + + + + + .titlepage.recto + + + + + + + .titlepage.before.verso + + + + + + + .titlepage.verso + + + + + + + .titlepage.separator + + + + + + + + + + + + + + * + + + .titlepage.recto.mode + + + if an element isn't found in this mode, + + try the generic titlepage.mode + + + . + titlepage.mode + + + + + + + + * + + + .titlepage.verso.mode + + + if an element isn't found in this mode, + + try the generic titlepage.mode + + + . + titlepage.mode + + + + + + + + + + + + + + + + + .titlepage. + + .auto.mode + + + + + + .titlepage. + + .style + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + .titlepage. + + .mode + + + + + + + + + + + + + + +Copy t:titlepage attributes + + +This template copies all of the other attributes +from a t:titlepage element onto the specified +wrapper. + + + + + + + + + + + + + + + + + + +Create templates for the content of one side of a title page + + +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. + +The t:titlepage-content element has two attributes: + + +side +Identifies the side of the page to which this title +page content applies. The +side attribute is required and +must be set to either +recto or +verso. In addition, you must specify +exactly one t:titlepage-content for each side +within each t:titlepage. + + +order +Indicates how the order of the elements presented on +the title page is determined. If the +order is +document, the elements are presented +in document order. Otherwise (if the +order is +stylesheet), the elements are presented +in the order that they appear in the template (and consequently in +the stylesheet). + + + + + +The content of a t:titlepage-content 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. + + +Each element may have a single attribute: +predicate. The value of this +attribute is used as a predicate for the expression that matches +the element on which it occurs. + +In other words, to put only the first three authors on the +recto-side of a title +page, you could specify: + + + + + + +]]> + + +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 authorgroup elements on the title page, but +you want to select only proper authors, editors, or corporate authors, +not collaborators or other credited authors. + +In that case, you can put a t:or group inside +the authorgroup element: + + + + + + + + + + + + +]]> + + +This will have the effect of automatically generating a template +for processing authorgroups 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. + + + + + + + + + + + + + Illegal value specified for @side + on t:titlepage-content: + + + + + + The @side attribute is required on + t:titlepage-content. + + + + + + + + .titlepage. + + .auto.mode + + + + + + + .titlepage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Create templates for the separator + + +The title page is separated from the content which follows it by +the markup specified in the t:titlepage-separator +element. + + + + + + + + + .titlepage.separator + + + + + + + + + + +Create templates for what precedes a title page + + +Each side of the title page is preceded by the markup specified +in the t:titlepage-before element for that +side. + + + + + + + + + .titlepage.before. + + + + + + + + + + + +Copy elements + + +This template simply copies the elements that it applies to +straight through into the result tree. + + + + + + + + + + + + + +Copy attributes + + +This template simply copies the attributes that it applies to +straight through into the result tree. + + + + + + + + + + + + +Create rules to process titlepage elements in document order + + +This template is called to process all of the children of the +t:titlepage-content element. It creates the hairy +select expression necessary to process each of those elements in +the title page. + +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. + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + + + info + + + + + + artheader + + + + + + + + + + docinfo + + + + + + + + + + recto + + + + + + + .titlepage. + + .auto.mode + + + + | + + + + ( + + + + / + + + + | + + / + + + + + | + + + + + ) + + + + + + + +Create rules to process titlepage elements in stylesheet order + + +This template is called to process all of the children of the +t:titlepage-content element. It creates the set +of xsl:apply-templates elements necessary +process each of those elements in the title page. + +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. + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + + + info + + + + + + artheader + + + + + + + + + + docinfo + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + .titlepage. + + .style + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Force can only be used with named-templates. + + + + + + + + + + + + ( + + + + / + + + + | + + / + + + + + | + + + + + ) + + + + + + + + + + + +Create templates for special rules + + +This template is called to process all of the descendants of the +t:titlepage-content element that require special +processing. At present, that's just t:or elements. + + + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + + + + + + + + + + + + + + + + +Create template for individual special rules + + +This template is called to process the children of special +template elements. + + + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + + + + +Process the t:or special rule + + +This template processes t:or. + + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + + + + + +Process the t:or special rule in +titlepage.subrules mode + + +The titlepage.subrules mode doesn't apply to t:or, so just +reprocess this node in the normal mode. + + + + + + + + + + +Construct the "or-list" used in the select attribute for +special rules. + + +Walk through each of the children of t:or, producing the +text of the select attribute. + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + +