common.xsl revision b7be634703e0147134ba63da0657c59802fee6ef
883N/A<?xml version="1.0"?>
883N/A
883N/A<!--
883N/A Licensed to the Apache Software Foundation (ASF) under one or more
883N/A contributor license agreements. See the NOTICE file distributed with
883N/A this work for additional information regarding copyright ownership.
883N/A The ASF licenses this file to You under the Apache License, Version 2.0
883N/A (the "License"); you may not use this file except in compliance with
883N/A the License. You may obtain a copy of the License at
883N/A
883N/A http://www.apache.org/licenses/LICENSE-2.0
883N/A
883N/A Unless required by applicable law or agreed to in writing, software
883N/A distributed under the License is distributed on an "AS IS" BASIS,
883N/A WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
883N/A See the License for the specific language governing permissions and
883N/A limitations under the License.
883N/A-->
883N/A
883N/A<xsl:stylesheet version="1.0"
3996N/A xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
883N/A xmlns="http://www.w3.org/1999/xhtml">
883N/A
883N/A<!-- Constants used for case translation -->
883N/A<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
883N/A<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
883N/A
883N/A<!-- ==================================================================== -->
883N/A<!-- Process a documentation section -->
883N/A<!-- ==================================================================== -->
1273N/A<xsl:template match="section">
883N/A<xsl:apply-templates/>
4561N/A</xsl:template>
4561N/A
4561N/A<xsl:template match="section/title">
4561N/A<xsl:text>\subsection*{</xsl:text>
4561N/A<xsl:apply-templates/>
4561N/A<xsl:text>}</xsl:text><xsl:call-template name="label"/>
4561N/A<xsl:text>
883N/A</xsl:text>
883N/A</xsl:template>
883N/A
883N/A<xsl:template match="section/section/title">
883N/A<xsl:text>\subsubsection*{</xsl:text>
883N/A<xsl:apply-templates/>
883N/A<xsl:text>}</xsl:text><xsl:call-template name="label"/>
1653N/A<xsl:text>
883N/A</xsl:text>
883N/A</xsl:template>
883N/A
883N/A<xsl:template match="section/section/section/title">
883N/A<xsl:text>\subsubsection*{</xsl:text>
883N/A<xsl:apply-templates/>
883N/A<xsl:text>}</xsl:text><xsl:call-template name="label"/>
883N/A<xsl:text>
883N/A</xsl:text>
1574N/A</xsl:template>
1574N/A
1574N/A<xsl:template match="note/title"></xsl:template>
883N/A<xsl:template match="example/title"></xsl:template>
883N/A
883N/A<xsl:template name="label">
883N/A<xsl:if test="../@id">
883N/A<xsl:variable name="metafile" select="document(/*/@metafile)/metafile" />
883N/A<xsl:text>\label{</xsl:text><xsl:value-of
883N/Aselect="$metafile/path"/><xsl:value-of
883N/Aselect="$metafile/basename"/>
883N/A<xsl:text>:</xsl:text>
883N/A<xsl:value-of select="../@id"/>
887N/A<xsl:text>}</xsl:text>
887N/A</xsl:if>
887N/A</xsl:template>
913N/A
913N/A
913N/A<!-- ==================================================================== -->
913N/A<!-- <example> -->
883N/A<!-- ==================================================================== -->
3996N/A<!-- verbatim inside of fbox doesn't work for some reason -->
3996N/A<xsl:template match="example">
3996N/A<xsl:text>\par\smallskip\begin{center}</xsl:text>
3996N/A<xsl:if test="not(pre)"><xsl:text>\fbox{</xsl:text></xsl:if>
4100N/A<xsl:text>\begin{minipage}{.8\textwidth}\begin{flushleft}</xsl:text>
3996N/A<xsl:apply-templates select="title" mode="print" />
3996N/A<xsl:text>{\ttfamily\small </xsl:text>
3996N/A<xsl:text>\noindent </xsl:text><xsl:apply-templates/>
3996N/A<xsl:text>}</xsl:text>
<xsl:text>\end{flushleft}\end{minipage}</xsl:text>
<xsl:if test="not(pre)"><xsl:text>}</xsl:text></xsl:if>
<xsl:text>\end{center}\par\smallskip</xsl:text>
</xsl:template>
<xsl:template match="example/title" mode="print">
<xsl:text>\textbf{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}\\ </xsl:text>
</xsl:template>
<!-- ==================================================================== -->
<!-- indentations -->
<!-- ==================================================================== -->
<xsl:template match="indent">
<xsl:text>\begin{list}{}{\topsep 0pt\rightmargin 0pt\leftmargin 2em}
\item[] </xsl:text>
<xsl:apply-templates/>
<xsl:text>\end{list}</xsl:text>
</xsl:template>
<!-- ==================================================================== -->
<!-- <note> -->
<!-- ==================================================================== -->
<xsl:template match="note">
<xsl:text>\par\smallskip
{\Huge </xsl:text>
<xsl:choose>
<xsl:when test="@type='warning'">
<xsl:text>\fbox{!} </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>$\Longrightarrow$</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>}\begin{minipage}[t]{.8\textwidth}
\noindent </xsl:text>
<xsl:apply-templates select="title" mode="print" />
<xsl:apply-templates/>
<xsl:text>\end{minipage}\par\smallskip</xsl:text>
</xsl:template>
<xsl:template match="note/title" mode="print">
<xsl:text>\textbf{</xsl:text>
<xsl:apply-templates/>
<xsl:text>} \\
\noindent </xsl:text>
</xsl:template>
<!-- ==================================================================== -->
<!-- <directive> -->
<!-- Inserts link to another directive, which might be in another module. -->
<!-- References are converted into lower case. -->
<!-- ==================================================================== -->
<xsl:template match="directive" name="directive">
<xsl:text>\textsc{</xsl:text>
<xsl:if test="@type='section'"><xsl:text>\textless{}</xsl:text></xsl:if>
<xsl:choose>
<xsl:when test="@module">
<xsl:text>\hyperlink{/mod/</xsl:text>
<xsl:value-of select="normalize-space(@module)"/>
<xsl:text>:</xsl:text>
<xsl:choose>
<xsl:when test="@name">
<xsl:value-of
select="normalize-space(translate(@name,$uppercase,$lowercase))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="normalize-space(translate(.,$uppercase,$lowercase))"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>}{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@type='section'"><xsl:text>\textgreater{}</xsl:text></xsl:if>
<xsl:text>}</xsl:text>
</xsl:template>
<xsl:template match="directive" mode="tabular">
<xsl:text>\textsc{</xsl:text>
<xsl:if test="@type='section'"><xsl:text>\textless{}</xsl:text></xsl:if>
<xsl:choose>
<xsl:when test="@module">
<xsl:text>\hyperlink{/mod/</xsl:text>
<xsl:value-of select="normalize-space(@module)"/>
<xsl:text>:</xsl:text>
<xsl:choose>
<xsl:when test="@name">
<xsl:value-of
select="normalize-space(translate(@name,$uppercase,$lowercase))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="normalize-space(translate(.,$uppercase,$lowercase))"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>}{</xsl:text>
<xsl:apply-templates mode="tabular"/>
<xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates mode="tabular"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@type='section'"><xsl:text>\textgreater{}</xsl:text></xsl:if>
<xsl:text>}</xsl:text>
</xsl:template>
<!-- /directive -->
<!-- ==================================================================== -->
<!-- <module> -->
<!-- Inserts a link to refereed module -->
<!-- ==================================================================== -->
<xsl:template match="module" name="module">
<xsl:choose>
<xsl:when test="@outdated = 'true'">
<xsl:text>\textsc{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>\textsc{\hyperlink{/mod/</xsl:text>
<xsl:value-of select="normalize-space(.)"/>
<xsl:text>}{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}</xsl:text>
<xsl:text>}</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="module" mode="tabular">
<xsl:choose>
<xsl:when test="@outdated = 'true'">
<xsl:text>\textsc{</xsl:text>
<xsl:apply-templates mode="tabular"/>
<xsl:text>}</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>\textsc{\hyperlink{/mod/</xsl:text>
<xsl:value-of select="normalize-space(.)"/>
<xsl:text>}{</xsl:text>
<xsl:apply-templates/>
<xsl:text>}</xsl:text>
<xsl:text>}</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- /module -->
<!-- ==================================================================== -->
<!-- <related> -->
<!-- ==================================================================== -->
<xsl:template match="related">
<xsl:text>
\fbox{\begin{tabular}{rr}
\begin{minipage}[t]{.49\linewidth}
\textbf{</xsl:text>
<xsl:value-of select="$message[@id='relatedmodules']" />
<xsl:text>} \\
</xsl:text>
<xsl:for-each select="modulelist/module">
<xsl:call-template name="module"/>
<xsl:text> \\
</xsl:text>
</xsl:for-each>
<xsl:text>
\end{minipage} &amp;
\begin{minipage}[t]{.4\linewidth}
\textbf{</xsl:text>
<xsl:value-of select="$message[@id='relateddirectives']" />
<xsl:text>} \\
</xsl:text>
<xsl:for-each select="directivelist/directive">
<xsl:call-template name="directive"/>
<xsl:text> \\
</xsl:text>
</xsl:for-each>
<xsl:text>
\end{minipage}
\end{tabular}}
\smallskip
</xsl:text>
</xsl:template>
<!-- ==================================================================== -->
<!-- <seealso> -->
<!-- ==================================================================== -->
<xsl:template name="seealso">
<xsl:if test="seealso">
<xsl:text>\textbf{</xsl:text>
<xsl:value-of select="$message[@id='seealso']" />
<xsl:text>}\begin{itemize}</xsl:text>
<xsl:for-each select="seealso">
<xsl:text>\item </xsl:text>
<xsl:apply-templates />
<xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:text>\end{itemize}</xsl:text>
</xsl:if>
</xsl:template>
<!-- ==================================================================== -->
<!-- section-title -->
<!-- ==================================================================== -->
<xsl:template name="section-title">
<xsl:variable name="metafile" select="document(/*/@metafile)/metafile" />
<xsl:text>\section{</xsl:text><xsl:apply-templates select="title"/>
<xsl:text>}</xsl:text>
<xsl:text>\label{</xsl:text><xsl:value-of
select="$metafile/path"/><xsl:value-of
select="$metafile/basename"/>
<xsl:text>}
</xsl:text>
</xsl:template>
</xsl:stylesheet>