diff options
author | Alexander Bokovoy <ab@samba.org> | 2003-04-30 21:39:49 +0000 |
---|---|---|
committer | Alexander Bokovoy <ab@samba.org> | 2003-04-30 21:39:49 +0000 |
commit | bd30b6066f1a28663b28466a67064149b6e060a4 (patch) | |
tree | dc4478c5aafd9078f380e5e2ea11926519905fb0 /docs/docbook/xslt/db2latex/lists.mod.xsl | |
parent | 049791de5b6e43e827e2be01a65958389d9c76e2 (diff) | |
download | samba-bd30b6066f1a28663b28466a67064149b6e060a4.tar.gz samba-bd30b6066f1a28663b28466a67064149b6e060a4.tar.bz2 samba-bd30b6066f1a28663b28466a67064149b6e060a4.zip |
Docbook XML conversion: XSLT and build infrastructure
(This used to be commit f4f6e0b29e744077dfb836745716a659a49d7529)
Diffstat (limited to 'docs/docbook/xslt/db2latex/lists.mod.xsl')
-rw-r--r-- | docs/docbook/xslt/db2latex/lists.mod.xsl | 455 |
1 files changed, 455 insertions, 0 deletions
diff --git a/docs/docbook/xslt/db2latex/lists.mod.xsl b/docs/docbook/xslt/db2latex/lists.mod.xsl new file mode 100644 index 0000000000..29afd0f58d --- /dev/null +++ b/docs/docbook/xslt/db2latex/lists.mod.xsl @@ -0,0 +1,455 @@ +<?xml version='1.0'?> +<!--############################################################################# +| $Id: lists.mod.xsl,v 1.1 2003/04/30 21:39:49 ab Exp $ +|- ############################################################################# +| $Author: ab $ +| +| PURPOSE: ++ ############################################################################## --> + +<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'> + + + + <!--############################################################################# --> + <!-- DOCUMENTATION --> + <doc:reference id="lists" xmlns=""> + <referenceinfo> + <releaseinfo role="meta"> + $Id: lists.mod.xsl,v 1.1 2003/04/30 21:39:49 ab Exp $ + </releaseinfo> + <authorgroup> + <author> <firstname>Ramon</firstname> <surname>Casellas</surname> </author> + <author> <firstname>James</firstname> <surname>Devenish</surname> </author> + </authorgroup> + <copyright> + <year>2000</year> <year>2001</year> <year>2002</year> <year>2003</year> + <holder>Ramon Casellas</holder> + </copyright> + </referenceinfo> + + <title>Lists <filename>lists.mod.xsl</filename></title> + <partintro> + <section><title>Introduction</title> + <para></para> + </section> + </partintro> + </doc:reference> + + + + <xsl:template match="variablelist/title| orderedlist/title | itemizedlist/title | simplelist/title"> + <xsl:text> {\sc </xsl:text> + <xsl:apply-templates/> + <xsl:text>} </xsl:text> + </xsl:template> + + + <xsl:template match="itemizedlist"> + <xsl:if test="title"> <xsl:apply-templates select="title"/></xsl:if> + <xsl:text> \begin{itemize} </xsl:text> + <xsl:apply-templates select="listitem"/> + <xsl:text> \end{itemize} </xsl:text> + </xsl:template> + + + <xsl:template match="orderedlist"> + <xsl:variable name="numeration"> + <xsl:choose> + <xsl:when test="@numeration"> + <xsl:value-of select="@numeration"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="arabic"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="title"> <xsl:apply-templates select="title"/></xsl:if> + <xsl:text> \begin{enumerate}</xsl:text> + <xsl:if test="@numeration"> + <xsl:choose> + <xsl:when test="@numeration='arabic'"> <xsl:text>[1]</xsl:text> </xsl:when> + <xsl:when test="@numeration='upperalpha'"><xsl:text>[A]</xsl:text> </xsl:when> + <xsl:when test="@numeration='loweralpha'"><xsl:text>[a]</xsl:text> </xsl:when> + <xsl:when test="@numeration='upperroman'"><xsl:text>[I]</xsl:text> </xsl:when> + <xsl:when test="@numeration='lowerroman'"><xsl:text>[i]</xsl:text> </xsl:when> + </xsl:choose> + </xsl:if> + <xsl:apply-templates select="listitem"/> + \end{enumerate} + </xsl:template> + + + + <xsl:template match="variablelist"> + <xsl:if test="title"> + <xsl:apply-templates select="title"/> + </xsl:if> + <xsl:text> \noindent </xsl:text> + <xsl:text> \begin{description} </xsl:text> + <xsl:apply-templates select="varlistentry"/> + <xsl:text> \end{description} </xsl:text> + </xsl:template> + + + <xsl:template match="listitem"> + <xsl:text> %--- Item </xsl:text> + <xsl:text>\item </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + </xsl:template> + + + <xsl:template match="varlistentry"> + <xsl:variable name="id"> + <xsl:call-template name="label.id"/> + </xsl:variable> + <xsl:text>\item[</xsl:text><xsl:apply-templates select="term"/><xsl:text>]\mbox{} % mbox is a trick to induce different typesetting decisions</xsl:text> + <xsl:apply-templates select="listitem"/> + </xsl:template> + + + <xsl:template match="varlistentry/term"> + <xsl:apply-templates/><xsl:text>, </xsl:text> + </xsl:template> + + <xsl:template match="varlistentry/term[position()=last()]"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="varlistentry/listitem"> + <xsl:apply-templates/> + </xsl:template> + + + <xsl:template name="tabular.string"> + <xsl:param name="cols" select="1"/> + <xsl:param name="i" select="1"/> + <xsl:choose> + <xsl:when test="$i > $cols"></xsl:when> + <xsl:otherwise> + <xsl:text>l</xsl:text> + <xsl:call-template name="tabular.string"> + <xsl:with-param name="i" select="$i+1"/> + <xsl:with-param name="cols" select="$cols"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + + <!--========================================================================== + | Inline simplelist. It is rendered as a list of comma separated values. + | We make the difference between the last member and the rest. XSL easily + | allows this. + +============================================================================--> + + <xsl:template match="simplelist[@type='inline']"> + <xsl:apply-templates/> + </xsl:template> + <xsl:template match="simplelist[@type='inline']/member"> + <xsl:apply-templates/> + <xsl:text>, </xsl:text> + </xsl:template> + <xsl:template match="simplelist[@type='inline']/member[position()=last()]"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="simplelist[@type='horiz']"> + <xsl:variable name="cols"> + <xsl:choose> + <xsl:when test="@columns"> + <xsl:value-of select="@columns"/> + </xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:text> </xsl:text> + <xsl:text>\begin{tabular*}{\linewidth}{</xsl:text> + <xsl:call-template name="tabular.string"> + <xsl:with-param name="cols" select="$cols"/> + </xsl:call-template> + <xsl:text>} </xsl:text> + <xsl:call-template name="simplelist.horiz"> + <xsl:with-param name="cols" select="$cols"/> + </xsl:call-template> + <xsl:text> \end{tabular*} </xsl:text> + </xsl:template> + + + + + <xsl:template name="simplelist.horiz"> + <xsl:param name="cols">1</xsl:param> + <xsl:param name="cell">1</xsl:param> + <xsl:param name="members" select="./member"/> + <xsl:if test="$cell <= count($members)"> + <xsl:text> </xsl:text> + <xsl:call-template name="simplelist.horiz.row"> + <xsl:with-param name="cols" select="$cols"/> + <xsl:with-param name="cell" select="$cell"/> + <xsl:with-param name="members" select="$members"/> + </xsl:call-template> + <xsl:text> \\</xsl:text> + <xsl:call-template name="simplelist.horiz"> + <xsl:with-param name="cols" select="$cols"/> + <xsl:with-param name="cell" select="$cell + $cols"/> + <xsl:with-param name="members" select="$members"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="simplelist.horiz.row"> + <xsl:param name="cols">1</xsl:param> + <xsl:param name="cell">1</xsl:param> + <xsl:param name="members" select="./member"/> + <xsl:param name="curcol">1</xsl:param> + <xsl:if test="$curcol <= $cols"> + <xsl:choose> + <xsl:when test="$members[position()=$cell]"> + <xsl:apply-templates select="$members[position()=$cell]"/> + <xsl:text> </xsl:text> + <xsl:if test="$curcol < $cols"> + <xsl:call-template name="generate.latex.cell.separator"/> + </xsl:if> + </xsl:when> + </xsl:choose> + <xsl:call-template name="simplelist.horiz.row"> + <xsl:with-param name="cols" select="$cols"/> + <xsl:with-param name="cell" select="$cell+1"/> + <xsl:with-param name="members" select="$members"/> + <xsl:with-param name="curcol" select="$curcol+1"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + + + + + + + + + + <xsl:template match="simplelist|simplelist[@type='vert']"> + <xsl:variable name="cols"> + <xsl:choose> + <xsl:when test="@columns"> + <xsl:value-of select="@columns"/> + </xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:text> </xsl:text> + <!--<xsl:text>\vspace{1cm} </xsl:text>--> + <xsl:text>\begin{tabular*}{\linewidth}{</xsl:text> + <xsl:call-template name="tabular.string"> + <xsl:with-param name="i" select="1"/> + <xsl:with-param name="cols" select="$cols"/> + </xsl:call-template> + <xsl:text>}</xsl:text> + <xsl:call-template name="simplelist.vert"> + <xsl:with-param name="cols" select="$cols"/> + </xsl:call-template> + <xsl:text> \end{tabular*} </xsl:text> + <!--<xsl:text>\vspace{1cm} </xsl:text>--> + </xsl:template> + + + + <xsl:template name="simplelist.vert"> + <xsl:param name="cols">1</xsl:param> + <xsl:param name="cell">1</xsl:param> + <xsl:param name="members" select="./member"/> + <xsl:param name="rows" select="floor((count($members)+$cols - 1) div $cols)"/> + <xsl:if test="$cell <= $rows"> + <xsl:text> </xsl:text> + <xsl:call-template name="simplelist.vert.row"> + <xsl:with-param name="cols" select="$cols"/> + <xsl:with-param name="rows" select="$rows"/> + <xsl:with-param name="cell" select="$cell"/> + <xsl:with-param name="members" select="$members"/> + </xsl:call-template> + <xsl:text> \\</xsl:text> + <xsl:call-template name="simplelist.vert"> + <xsl:with-param name="cols" select="$cols"/> + <xsl:with-param name="cell" select="$cell+1"/> + <xsl:with-param name="members" select="$members"/> + <xsl:with-param name="rows" select="$rows"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + + <xsl:template name="simplelist.vert.row"> + <xsl:param name="cols">1</xsl:param> + <xsl:param name="rows">1</xsl:param> + <xsl:param name="cell">1</xsl:param> + <xsl:param name="members" select="./member"/> + <xsl:param name="curcol">1</xsl:param> + <xsl:if test="$curcol <= $cols"> + <xsl:choose> + <xsl:when test="$members[position()=$cell]"> + <xsl:apply-templates select="$members[position()=$cell]"/> + <xsl:text> </xsl:text> + <xsl:if test="$curcol < $cols"> + <xsl:call-template name="generate.latex.cell.separator"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="simplelist.vert.row"> + <xsl:with-param name="cols" select="$cols"/> + <xsl:with-param name="rows" select="$rows"/> + <xsl:with-param name="cell" select="$cell+$rows"/> + <xsl:with-param name="members" select="$members"/> + <xsl:with-param name="curcol" select="$curcol+1"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + <xsl:template match="member"> + <xsl:apply-templates/> + </xsl:template> + + + + + <xsl:template match="segmentedlist"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="segmentedlist/title"> + <xsl:text> {\sc </xsl:text> + <xsl:apply-templates/> + <xsl:text>} \\ </xsl:text> + </xsl:template> + + <xsl:template match="segtitle"> + </xsl:template> + + <xsl:template match="segtitle" mode="segtitle-in-seg"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="seglistitem"> + <xsl:apply-templates/> + <xsl:choose> + <xsl:when test="position()=last()"><xsl:text> </xsl:text></xsl:when> + <xsl:otherwise><xsl:text> \\ </xsl:text></xsl:otherwise> + </xsl:choose> + </xsl:template> + + + + + <xsl:template match="seg"> + <xsl:variable name="segnum" select="position()"/> + <xsl:variable name="seglist" select="ancestor::segmentedlist"/> + <xsl:variable name="segtitles" select="$seglist/segtitle"/> + + <!-- + Note: segtitle is only going to be the right thing in a well formed + SegmentedList. If there are too many Segs or too few SegTitles, + you'll get something odd...maybe an error + --> + + <xsl:text>{ \em </xsl:text> + <xsl:apply-templates select="$segtitles[$segnum=position()]" mode="segtitle-in-seg"/> + <xsl:text>:} </xsl:text> + <xsl:apply-templates/> + </xsl:template> + + + + + + + + + + + <!-- ==================================================================== --> + + <xsl:template match="calloutlist"> + <xsl:if test="./title"> + <xsl:apply-templates select="./title" mode="calloutlist.title.mode"/> + </xsl:if> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="calloutlist/title"> + </xsl:template> + + <xsl:template match="calloutlist/title" mode="calloutlist.title.mode"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="callout"> + <dt> + <xsl:call-template name="callout.arearefs"> + <xsl:with-param name="arearefs" select="@arearefs"/> + </xsl:call-template> + </dt> + <dl><xsl:apply-templates/></dl> + </xsl:template> + + <xsl:template name="callout.arearefs"> + <xsl:param name="arearefs"></xsl:param> + <xsl:if test="$arearefs!=''"> + <xsl:choose> + <xsl:when test="substring-before($arearefs,' ')=''"> + <xsl:call-template name="callout.arearef"> + <xsl:with-param name="arearef" select="$arearefs"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="callout.arearef"> + <xsl:with-param name="arearef" + select="substring-before($arearefs,' ')"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="callout.arearefs"> + <xsl:with-param name="arearefs" + select="substring-after($arearefs,' ')"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + + + + <xsl:template name="callout.arearef"> + <xsl:param name="arearef"></xsl:param> + <xsl:variable name="targets" select="//node()[@id=$arearef]"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:choose> + <xsl:when test="count($target)=0"> + <xsl:value-of select="$arearef"/> + <xsl:text>callout ???</xsl:text> + </xsl:when> + <xsl:when test="local-name($target)='co'"> + <!-- FIXME --> + <xsl:text>\href{ </xsl:text> + <xsl:value-of select="$target/@id"/> + <xsl:text>}{</xsl:text> + <xsl:value-of select="$target/@id"/><xsl:text>} </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>callout ???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + +</xsl:stylesheet> |