<?xml version='1.0'?> <!DOCTYPE xsl:stylesheet [ <!ENTITY % xsldoc.ent SYSTEM "./xsldoc.ent"> %xsldoc.ent; ]> <!--############################################################################# | $Id: procedure.mod.xsl,v 1.12 2004/01/13 04:35:43 j-devenish Exp $ |- ############################################################################# | $Author: j-devenish $ + ############################################################################## --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" exclude-result-prefixes="doc" version='1.0'> <doc:reference id="procedure" xmlns=""> <referenceinfo> <releaseinfo role="meta"> $Id: procedure.mod.xsl,v 1.12 2004/01/13 04:35:43 j-devenish Exp $ </releaseinfo> <authorgroup> &ramon; &james; </authorgroup> <copyright> <year>2000</year><year>2001</year><year>2002</year><year>2003</year><year>2004</year> <holder>Ramon Casellas</holder> </copyright> <revhistory> <doc:revision rcasver="1.10">&rev_2003_05;</doc:revision> </revhistory> </referenceinfo> <title>Procedures <filename>procedure.mod.xsl</filename></title> <partintro> <para> </para> </partintro> </doc:reference> <doc:template xmlns=""> <refpurpose>Process <doc:db>procedure</doc:db> elements</refpurpose> <doc:description> <para> Format a titled, enumerated list of steps. </para> </doc:description> <doc:variables> <itemizedlist> <listitem><simpara><xref linkend="param.formal.title.placement"/></simpara></listitem> </itemizedlist> </doc:variables> <doc:params> <variablelist> <varlistentry> <term>mode</term> <listitem><simpara> Although the <sgmltag class="attribute">mode</sgmltag> parameter is normally empty, this template recognises a special value of <quote>custom</quote>. This influences the type of environment and the method of labelling <doc:db basename="step">steps</doc:db>. </simpara></listitem> </varlistentry> <varlistentry> <term>environment</term> <listitem><simpara> This determines the &LaTeX; environment that will be used for each <doc:db>step</doc:db>'s <function condition="latex">item</function>. When the <literal>mode</literal> is <quote>custom</quote>, this parameter defaults to <quote>description</quote>. Otherwise, the default is <quote>enumerate</quote>. </simpara></listitem> </varlistentry> </variablelist> </doc:params> <doc:notes> <para> By default, the &LaTeX; <function condition="env">enumerate</function> environment is used and any <doc:db>step</doc:db>'s <doc:db>title</doc:db> will be typeset after its automatic step number. However, when the <literal>mode</literal> variable is equal to <quote>custom</quote>, the <function condition="env">description</function> environment will be used and step titles will be typeset <emphasis>instead</emphasis> of step numbers. </para> <para> Although the procedure is a formal, titled block, is is not typeset using <function condition="latex">subsection</function>. </para> </doc:notes> <doc:samples> <simplelist type='inline'> &test_book; &test_chemistry; &test_procedure; </simplelist> </doc:samples> <doc:seealso> <itemizedlist> <listitem><simpara><xref linkend="template.procedure/title"/></simpara></listitem> </itemizedlist> </doc:seealso> </doc:template> <xsl:template match="procedure" name="procedure"> <xsl:param name="mode" select="''"/> <xsl:param name="environment"> <xsl:choose> <xsl:when test="$mode='custom'"> <xsl:text>description</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>enumerate</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:param> <xsl:variable name="placement"> <xsl:call-template name="generate.formal.title.placement"> <xsl:with-param name="object" select="local-name(.)" /> </xsl:call-template> </xsl:variable> <xsl:variable name="preamble" select="node()[not(self::blockinfo or self::title or self::subtitle or self::titleabbrev or self::step)]"/> <xsl:choose> <xsl:when test="$placement='before' or $placement=''"> <xsl:apply-templates select="title" mode="procedure.title"/> <xsl:apply-templates select="$preamble"/> <xsl:text>\begin{</xsl:text> <xsl:value-of select="$environment"/> <xsl:text>} </xsl:text> <xsl:apply-templates select="step"> <xsl:with-param name="mode" select="$mode"/> </xsl:apply-templates> <xsl:text>\end{</xsl:text> <xsl:value-of select="$environment"/> <xsl:text>} </xsl:text> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="$preamble"/> <xsl:text>\begin{</xsl:text> <xsl:value-of select="$environment"/> <xsl:text>} </xsl:text> <xsl:apply-templates select="step"> <xsl:with-param name="mode" select="$mode"/> </xsl:apply-templates> <xsl:text>\end{</xsl:text> <xsl:value-of select="$environment"/> <xsl:text>} </xsl:text> <xsl:apply-templates select="title" mode="procedure.title"/> </xsl:otherwise> </xsl:choose> </xsl:template> <doc:template xmlns=""> <refpurpose>Process a <doc:db>procedure</doc:db>'s <doc:db>title</doc:db> </refpurpose> <doc:description> <para> Format a special bridgehead. </para> </doc:description> <doc:variables> <itemizedlist> <listitem><simpara><xref linkend="param.latex.procedure.title.style"/></simpara></listitem> <listitem><simpara><xref linkend="param.latex.apply.title.templates"/></simpara></listitem> </itemizedlist> </doc:variables> <doc:notes> <para> The title is typeset as a paragraph. </para> </doc:notes> <doc:samples> <simplelist type='inline'> &test_book; &test_procedure; </simplelist> </doc:samples> </doc:template> <xsl:template match="procedure/title"> <xsl:text> {</xsl:text> <xsl:value-of select="$latex.procedure.title.style"/> <xsl:text>{</xsl:text> <xsl:choose> <xsl:when test="$latex.apply.title.templates=1"> <xsl:apply-templates/> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> <xsl:text>}} </xsl:text> </xsl:template> <doc:template basename="step" xmlns=""> <refpurpose>Process <doc:db>step</doc:db> elements </refpurpose> <doc:description> <para> Format steps and substeps as part of a procedure. </para> </doc:description> <doc:variables> <itemizedlist> <listitem><simpara><xref linkend="param.latex.step.title.style"/></simpara></listitem> </itemizedlist> </doc:variables> <doc:params> <variablelist> <varlistentry> <term>mode</term> <listitem><simpara> The <quote>mode</quote> from the parent <doc:db>procedure</doc:db>. This template needs to know when the <quote>custom</quote> mode is in use, because it needs to pass the step's title as an optional argument to the &LaTeX; <function condition="latex">item</function> command (see <xref linkend="template.procedure"/>). The mode is normally received from the enclosing <doc:db>procedure</doc:db> or <doc:db>substeps</doc:db> template. </simpara></listitem> </varlistentry> <varlistentry> <term>title</term> <listitem><simpara> The string (typically empty). See <xref linkend="template.generate.step.title"/> </simpara></listitem> </varlistentry> </variablelist> </doc:params> <doc:notes> <para> Each step is typeset using the &LaTeX; <function condition="latex">item</function> command. </para> <para> If there is no <doc:db>title</doc:db> element, the step will be numbered automatically by &LaTeX;. </para> </doc:notes> <doc:samples> <simplelist type='inline'> &test_book; &test_chemistry; &test_procedure; </simplelist> </doc:samples> <doc:seealso> <itemizedlist> <listitem><simpara><xref linkend="template.generate.step.title"/></simpara></listitem> </itemizedlist> </doc:seealso> </doc:template> <xsl:template match="step" name="step"> <xsl:param name="mode" select="''"/> <xsl:param name="title"> <xsl:call-template name="generate.step.title"> <xsl:with-param name="mode" select="$mode"/> </xsl:call-template> </xsl:param> <xsl:choose> <xsl:when test="$title!='' and $mode='custom'"> <xsl:text> \item[{</xsl:text> <xsl:value-of select="$latex.step.title.style"/> <!-- by default \sc --> <xsl:text>{</xsl:text> <xsl:value-of select="$title"/> <xsl:text>}}] {</xsl:text> </xsl:when> <xsl:when test="$title!=''"> <xsl:text> \item{{</xsl:text> <xsl:value-of select="$latex.step.title.style"/> <!-- by default \sc --> <xsl:text>{</xsl:text> <xsl:value-of select="$title"/> <xsl:text>}} </xsl:text> </xsl:when> <xsl:otherwise> <xsl:text> \item{</xsl:text> </xsl:otherwise> </xsl:choose> <xsl:apply-templates select="node()[not(self::title)]"/> <xsl:text>} </xsl:text> </xsl:template> <doc:template xmlns=""> <refpurpose>Generate a <doc:db>step</doc:db>'s title </refpurpose> <doc:description> <para> By default, simply applies templates for <doc:db>title</doc:db> elements. </para> </doc:description> <doc:variables> &no_var; </doc:variables> <doc:params> <variablelist> <varlistentry> <term>mode</term> <listitem><simpara> See <xref linkend="template.procedure"/>. When the mode is <quote>custom</quote>, this template will use the XSL <literal>number</literal> element to format a title such as "1.", "2.", etc. Otherwise, any <doc:db>title</doc:db> elements will be used. </simpara></listitem> </varlistentry> </variablelist> </doc:params> <doc:notes> <para> If this template generates no content, the <doc:db>step</doc:db> will either be numbered automatically by &LaTeX; or left unlabelled (depending on the <quote>mode</quote>). </para> </doc:notes> </doc:template> <xsl:template name="generate.step.title"> <xsl:param name="mode"/> <xsl:choose> <xsl:when test="title"> <xsl:apply-templates select="title"/> </xsl:when> <xsl:when test="$mode='custom'"> <xsl:number format="1."/> </xsl:when> <!-- otherwise, empty --> </xsl:choose> </xsl:template> <doc:template xmlns=""> <refpurpose>Process <doc:db>substep</doc:db> elements </refpurpose> <doc:description> <para> Format substeps as part of a step. </para> </doc:description> <doc:variables> &no_var; </doc:variables> <doc:params> <variablelist> <varlistentry> <term>mode</term> <listitem><simpara> See <xref linkend="template.procedure"/>. </simpara></listitem> </varlistentry> <varlistentry> <term>environment</term> <listitem><simpara> See <xref linkend="template.procedure"/>. </simpara></listitem> </varlistentry> </variablelist> </doc:params> <doc:notes> <para> Substeps are typeset by nesting a &LaTeX; <function condition="env">enumerate</function> environment. </para> </doc:notes> <doc:samples> <simplelist type='inline'> &test_book; &test_procedure; </simplelist> </doc:samples> </doc:template> <xsl:template match="substeps"> <xsl:param name="mode" select="''"/> <xsl:param name="environment"> <xsl:choose> <xsl:when test="$mode='custom'"> <xsl:text>description</xsl:text> </xsl:when> <xsl:otherwise> <xsl:text>enumerate</xsl:text> </xsl:otherwise> </xsl:choose> </xsl:param> <xsl:text>\begin{</xsl:text> <xsl:value-of select="$environment"/> <xsl:text>} </xsl:text> <xsl:apply-templates select="step"> <xsl:with-param name="mode" select="$mode"/> </xsl:apply-templates> <xsl:text>\end{</xsl:text> <xsl:value-of select="$environment"/> <xsl:text>} </xsl:text> </xsl:template> </xsl:stylesheet>