| |
---|
| | <xsl:message terminate="yes"> |
---|
| | <xsl:text>Required attribute "lectures-per-week" has not been supplied in calendar.</xsl:text> |
---|
| | </xsl:message> |
---|
| | </xsl:if> |
---|
| | |
---|
| | <!-- |
---|
| | Work out which columns to include based on the elements within the calendar. The week number and date columns will always appear in positions 1 and 2, and the rest follow in the order section, lecture, reading, laboratory, tutorial and assessment. This is slightly cumbersome, but it's pretty much forced on us by the way XSLT works. Since it doesn't matter if we draw the same \clines multiple times, if a column doesn't exist, we just set it's column number to the column number of the previous column. |
---|
| | --> |
---|
| | <xsl:variable name="week-column">1</xsl:variable> |
---|
| | <xsl:variable name="date-column">2</xsl:variable> |
---|
| | <xsl:variable name="section-column" select=" |
---|
| | if ( count( body//section ) > 0 ) |
---|
| | then $date-column + 1 |
---|
| | else $date-column" /> |
---|
| | <xsl:variable name="lecture-column-1" select=" |
---|
| | if ( count( body//lecture ) > 0 ) |
---|
| | then $section-column + 1 |
---|
| | else $section-column" /> |
---|
| | <xsl:variable name="lecture-column-2" select=" |
---|
| | if ( count( body//lecture ) > 0 ) |
---|
| | then $lecture-column-1 + 1 |
---|
| | else $lecture-column-1" /> |
---|
| | <xsl:variable name="reading-column" select=" |
---|
| | if ( count( body//reading ) > 0 ) |
---|
| | then $lecture-column-2 + 1 |
---|
| | else $lecture-column-2" /> |
---|
| | <xsl:variable name="laboratory-column-1" select=" |
---|
| | if ( count( body//laboratory ) > 0 ) |
---|
| | then $reading-column + 1 |
---|
| | else $reading-column" /> |
---|
| | <xsl:variable name="laboratory-column-2" select=" |
---|
| | if ( count( body//laboratory ) > 0 ) |
---|
| | then $laboratory-column-1 + 1 |
---|
| | else $laboratory-column-1" /> |
---|
| | <xsl:variable name="tutorial-column-1" select=" |
---|
| | if ( count( body//tutorial ) > 0 ) |
---|
| | then $laboratory-column-2 + 1 |
---|
| | else $laboratory-column-2" /> |
---|
| | <xsl:variable name="tutorial-column-2" select=" |
---|
| | if ( count( body//tutorial ) > 0 ) |
---|
| | then $tutorial-column-1 + 1 |
---|
| | else $tutorial-column-1" /> |
---|
| | <xsl:variable name="assessment-column" select=" |
---|
| | if ( count( body//assessment ) > 0 ) |
---|
| | then $tutorial-column-2 + 1 |
---|
| | else $tutorial-column-2" /> |
---|
| | |
---|
| | <!-- |
---|
| | The number of columns will be equal to the column number of the last column. |
---|
| | --> |
---|
| | <xsl:variable name="num-columns" select="xs:integer( $assessment-column )" /> |
---|
| | |
---|
| | <!-- |
---|
| | This is used in a few places to set the width of column cells, etc., that contain numbers. I can't remember why I decided to pick twice the number of weeks as the size, other than to ensure a decent spacing around the numbers? |
---|
| | --> |
---|
| |
---|
| | |
---|
| | <xsl:text>\resizebox{24cm}{!}{%</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:text>\begin{tabular}{|c|c|c|c|l|c|c|c|c|c|c|}</xsl:text> |
---|
| | <xsl:text>\begin{tabular}{|c|c</xsl:text> |
---|
| | <xsl:if test="$section-column > $date-column"> |
---|
| | <xsl:text>|c</xsl:text> |
---|
| | </xsl:if> |
---|
| | <xsl:if test="$lecture-column-1 > $section-column"> |
---|
| | <xsl:text>|c|l</xsl:text> |
---|
| | </xsl:if> |
---|
| | <xsl:if test="$reading-column > $lecture-column-2"> |
---|
| | <xsl:text>|c</xsl:text> |
---|
| | </xsl:if> |
---|
| | <xsl:if test="$laboratory-column-1 > $reading-column"> |
---|
| | <xsl:text>|c|c</xsl:text> |
---|
| | </xsl:if> |
---|
| | <xsl:if test="$tutorial-column-1 > $laboratory-column-2"> |
---|
| | <xsl:text>|c|c</xsl:text> |
---|
| | </xsl:if> |
---|
| | <xsl:if test="$assessment-column > $tutorial-column-2"> |
---|
| | <xsl:text>|c</xsl:text> |
---|
| | </xsl:if> |
---|
| | <xsl:text>|}</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <!-- |
---|
| | Calendar heading. We can't use generate-content-cell for this, because we're doing more complex processing of the cell contents than is possible with generate-content-cell. Here, we're calling three separate templates interspersed with text, whereas generate-content-cell can only accept a simple list of nodes to apply-templates to. |
---|
| | --> |
---|
| | <xsl:text>\multicolumn{11}{c}{\LARGE\textbf{</xsl:text> |
---|
| | <xsl:text>\multicolumn{</xsl:text> |
---|
| | <xsl:value-of select="$num-columns" /> |
---|
| | <xsl:text>}{c}{\LARGE\textbf{</xsl:text> |
---|
| | <xsl:call-template name="PaperCode" /> |
---|
| | <xsl:text> Teaching Calendar, </xsl:text> |
---|
| | <xsl:call-template name="PaperPeriod" /> |
---|
| | <xsl:text>, </xsl:text> |
---|
| |
---|
| | <!-- |
---|
| | Note that using generate-empty-cell here requires about three time as much code as just doing it inline :), but we gain in terms of output consistency. |
---|
| | --> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">11</xsl:with-param> |
---|
| | <xsl:with-param name="columns" select="xs:integer( $num-columns )" /> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | <xsl:text> \\</xsl:text> |
---|
| |
---|
| | <xsl:text>\hline</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <!-- The calendar itself. --> |
---|
| | <xsl:apply-templates select="header" /> |
---|
| | <xsl:apply-templates select="header"> |
---|
| | <xsl:with-param name="num-columns" select="xs:integer( $num-columns )" /> |
---|
| | </xsl:apply-templates> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:text>\hline\hline</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:apply-templates select="body" /> |
---|
| | <xsl:apply-templates select="body"> |
---|
| | <xsl:with-param name="week-column" select="xs:integer( $week-column )" /> |
---|
| | <xsl:with-param name="date-column" select="xs:integer( $date-column )" /> |
---|
| | <xsl:with-param name="section-column" select="xs:integer( $section-column )" /> |
---|
| | <xsl:with-param name="lecture-column-1" select="xs:integer( $lecture-column-1 )" /> |
---|
| | <xsl:with-param name="lecture-column-2" select="xs:integer( $lecture-column-2 )" /> |
---|
| | <xsl:with-param name="reading-column" select="xs:integer( $reading-column )" /> |
---|
| | <xsl:with-param name="laboratory-column-1" select="xs:integer( $laboratory-column-1 )" /> |
---|
| | <xsl:with-param name="laboratory-column-2" select="xs:integer( $laboratory-column-2 )" /> |
---|
| | <xsl:with-param name="tutorial-column-1" select="xs:integer( $tutorial-column-1 )" /> |
---|
| | <xsl:with-param name="tutorial-column-2" select="xs:integer( $tutorial-column-2 )" /> |
---|
| | <xsl:with-param name="assessment-column" select="xs:integer( $assessment-column )" /> |
---|
| | <xsl:with-param name="num-columns" select="xs:integer( $num-columns )" /> |
---|
| | </xsl:apply-templates> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:text>\hline\hline</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:apply-templates select="footer" /> |
---|
| | <xsl:apply-templates select="footer"> |
---|
| | <xsl:with-param name="num-columns" select="xs:integer( $num-columns )" /> |
---|
| | </xsl:apply-templates> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:text>\hline</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| |
---|
| | <!-- |
---|
| | Header/footer rows for the calendar table. To get proper table headings/footings, use HEADING/FOOTING. For other text, use NOTE. |
---|
| | --> |
---|
| | <template match="header|footer"> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:apply-templates /> |
---|
| | <common> |
---|
| | <xsl:param name="num-columns" /> |
---|
| | </common> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:apply-templates> |
---|
| | <xsl:with-param name="num-columns" select="xs:integer( $num-columns )" /> |
---|
| | </xsl:apply-templates> |
---|
| | <xsl:text> \\</xsl:text> |
---|
| | |
---|
| | <!-- |
---|
| | It's left to the parent template to add horizontal rules after the last header/footer element, as what gets output may vary depending on position in the table (e.g., double rule after the last header, but single rule after the last footer). |
---|
| |
---|
| | |
---|
| | @columns: The number of columns that the heading or footing spans. |
---|
| | --> |
---|
| | <template match="heading|footing"> |
---|
| | <common> |
---|
| | <xsl:param name="num-columns" /> |
---|
| | </common> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:call-template name="generate-content-cell"> |
---|
| | <!-- I'm slightly amazed that this actually works! --> |
---|
| | <xsl:with-param name="columns" select="if ( @columns ) then @columns else 1" /> |
---|
| |
---|
| | |
---|
| | @columns: The number of columns that the heading or footing spans. |
---|
| | --> |
---|
| | <template match="note"> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:call-template name="generate-content-cell"> |
---|
| | <xsl:with-param name="columns" select="if ( @columns ) then @columns else 1" /> |
---|
| | <common> |
---|
| | <xsl:param name="num-columns" /> |
---|
| | </common> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:call-template name="generate-content-cell"> |
---|
| | <xsl:with-param name="columns" select="if ( @columns ) then @columns else xs:integer( $num-columns )" /> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="align">left</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">|l|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </common> |
---|
| | <common formats="/html/xhtml/"> |
---|
| | <xsl:call-template name="generate-content-cell"> |
---|
| | <xsl:with-param name="columns" select="if ( @columns ) then @columns else 1" /> |
---|
| | <xsl:with-param name="columns" select="if ( @columns ) then @columns else xs:integer( $num-columns )" /> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="align">left</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </common> |
---|
| |
---|
| | A week in the calendar. Each week has an associated number (automatically generated) and a date range, and spans some defined number of rows (default 2). The week number and date range are only generated for the first of these rows. |
---|
| | --> |
---|
| | <template match="week"> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:param name="week-column" /> |
---|
| | <xsl:param name="date-column" /> |
---|
| | <xsl:param name="section-column" /> |
---|
| | <xsl:param name="lecture-column-1" /> |
---|
| | <xsl:param name="lecture-column-2" /> |
---|
| | <xsl:param name="reading-column" /> |
---|
| | <xsl:param name="laboratory-column-1" /> |
---|
| | <xsl:param name="laboratory-column-2" /> |
---|
| | <xsl:param name="tutorial-column-1" /> |
---|
| | <xsl:param name="tutorial-column-2" /> |
---|
| | <xsl:param name="assessment-column" /> |
---|
| | <xsl:param name="num-columns" /> |
---|
| | |
---|
| | <xsl:for-each select="row"> |
---|
| | |
---|
| | <!-- |
---|
| | If we're going to start a new section on this row, draw a rule under the previous section to separate them (editorial: tabular borders in LaTeX are pretty awful compared to HTML). The horrible XPath logic is as follows: |
---|
| |
---|
| | or ( ../preceding-sibling::week[1]/@holiday ) |
---|
| | ) |
---|
| | ) |
---|
| | )"> |
---|
| | <xsl:text>\cline{3-3}</xsl:text> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$section-column" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$section-column" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | </xsl:if> |
---|
| | |
---|
| | <!-- Output the week number and dates columns, but only on the first row of the week. --> |
---|
| | <xsl:choose> |
---|
| |
---|
| | <!-- |
---|
| | We have to apply each of the sub-templates manually, not so much to ensure the correct ordering, but so that we can correctly output empty cells when a lecture, laboratory or tutorial element is missing. |
---|
| | --> |
---|
| | <xsl:apply-templates select="section" /> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | <xsl:if test="$section-column > $date-column"> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:if> |
---|
| | |
---|
| | <!-- |
---|
| | Lecture cells span two columns, so we need to explicitly output a two-column empty cell if there's no lecture element for the current row. |
---|
| | --> |
---|
| | <xsl:apply-templates select="lecture" /> |
---|
| | <xsl:if test="count( lecture ) = 0"> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">2</xsl:with-param> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | <xsl:if test="$lecture-column-1 > $section-column"> |
---|
| | <xsl:if test="count( lecture ) = 0"> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">2</xsl:with-param> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </xsl:if> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:if> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | |
---|
| | <xsl:apply-templates select="reading" /> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | <xsl:if test="$reading-column > $lecture-column-2"> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:if> |
---|
| | |
---|
| | <!-- |
---|
| | Labs and tutorials are similar to lectures, except that they span two columns and all rows for the week, so only the the first row of the week will have a laboratory or tutorial element, empty or otherwise. If this laboratory or tutorial element has content (i.e., isn't empty), then we need to skip over these cells for the remaining rows of the week. If this element is empty (or there's no element at all) then we output a two-column empty cell for all rows. |
---|
| | |
---|
| | Note that we use "../row[1]" rather than one of the "preceding" axes, as the latter are effectively indexed in reverse. |
---|
| | --> |
---|
| | <xsl:apply-templates select="laboratory" /> |
---|
| | <xsl:if test="count( laboratory ) = 0"> |
---|
| | <xsl:choose> |
---|
| | <xsl:when test="not( ../row[1]/laboratory/node() )"> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">2</xsl:with-param> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </xsl:when> |
---|
| | <xsl:otherwise> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:otherwise> |
---|
| | </xsl:choose> |
---|
| | <xsl:if test="$laboratory-column-1 > $reading-column"> |
---|
| | <xsl:if test="count( laboratory ) = 0"> |
---|
| | <xsl:choose> |
---|
| | <xsl:when test="not( ../row[1]/laboratory/node() )"> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">2</xsl:with-param> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </xsl:when> |
---|
| | <xsl:otherwise> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:otherwise> |
---|
| | </xsl:choose> |
---|
| | </xsl:if> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:if> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | |
---|
| | <xsl:apply-templates select="tutorial" /> |
---|
| | <xsl:if test="count( tutorial ) = 0"> |
---|
| | <xsl:choose> |
---|
| | <xsl:when test="not( ../row[1]/tutorial/node() )"> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">2</xsl:with-param> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </xsl:when> |
---|
| | <xsl:otherwise> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:otherwise> |
---|
| | </xsl:choose> |
---|
| | <xsl:if test="$tutorial-column-1 > $laboratory-column-2"> |
---|
| | <xsl:if test="count( tutorial ) = 0"> |
---|
| | <xsl:choose> |
---|
| | <xsl:when test="not( ../row[1]/tutorial/node() )"> |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">2</xsl:with-param> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | </xsl:when> |
---|
| | <xsl:otherwise> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:otherwise> |
---|
| | </xsl:choose> |
---|
| | </xsl:if> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | </xsl:if> |
---|
| | <xsl:call-template name="tabular-column-separator" /> |
---|
| | |
---|
| | <!-- |
---|
| | Assessments always span a single column and span all rows for a week, so no additional special handling is required for missing elements. |
---|
| | --> |
---|
| |
---|
| | and ( ( count( ../following-sibling::week ) = 0 ) |
---|
| | or ( ../following-sibling::week[1]/@holiday ) |
---|
| | ) |
---|
| | )"> |
---|
| | <xsl:text> \cline{4-5}</xsl:text> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$lecture-column-1" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$lecture-column-2" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | </xsl:if> |
---|
| | |
---|
| | <!-- |
---|
| | Underline laboratory and tutorial cells. Logic is as above, plus a test whether this is the last row of the week. (KER-SPLODE) |
---|
| |
---|
| | or ( ../following-sibling::week[1]/@holiday ) |
---|
| | ) |
---|
| | ) |
---|
| | )"> |
---|
| | <xsl:text>\cline{1-2}\cline{6-6}\cline{11-11}</xsl:text> |
---|
| | <!-- Week number & date columns. --> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$week-column" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$date-column" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | <!-- Reading column. --> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$reading-column" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$reading-column" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | <!-- Assessment column. --> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$assessment-column" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$assessment-column" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | <!-- Laboratory columns. --> |
---|
| | <xsl:if test="not( ../row[1]/laboratory/@rows )"> |
---|
| | <xsl:text>\cline{7-8}</xsl:text> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$laboratory-column-1" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$laboratory-column-2" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | </xsl:if> |
---|
| | <!-- Tutorial columns. --> |
---|
| | <xsl:if test="not( ../row[1]/tutorial/@rows )"> |
---|
| | <xsl:text>\cline{9-10}</xsl:text> |
---|
| | <xsl:text> \cline{</xsl:text> |
---|
| | <xsl:value-of select="$tutorial-column-1" /> |
---|
| | <xsl:text>-</xsl:text> |
---|
| | <xsl:value-of select="$tutorial-column-2" /> |
---|
| | <xsl:text>}</xsl:text> |
---|
| | </xsl:if> |
---|
| | </xsl:if> |
---|
| | |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| |
---|
| | <!-- |
---|
| | Weeks that are holidays have no week number or date range, just a text description. |
---|
| | --> |
---|
| | <template match="week[@holiday]"> |
---|
| | <common> |
---|
| | <xsl:param name="num-columns" /> |
---|
| | </common> |
---|
| | <common formats="/latex/xelatex/"> |
---|
| | <xsl:text>\hline\hline</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:call-template name="generate-content-cell"> |
---|
| | <xsl:with-param name="columns">11</xsl:with-param> |
---|
| | <xsl:with-param name="columns" select="xs:integer( $num-columns )" /> |
---|
| | <xsl:with-param name="rows">2</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">|c|</xsl:with-param> |
---|
| | <xsl:with-param name="style">\LARGE\sffamily\bfseries</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | <xsl:text> \\</xsl:text> |
---|
| | <xsl:call-template name="newline-internal" /> |
---|
| | |
---|
| | <xsl:call-template name="generate-empty-cell"> |
---|
| | <xsl:with-param name="columns">11</xsl:with-param> |
---|
| | <xsl:with-param name="columns" select="xs:integer( $num-columns )" /> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="column-format">|c|</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| | <xsl:text> \\</xsl:text> |
---|
| |
---|
| | </common> |
---|
| | <common formats="/html/xhtml/"> |
---|
| | <tr> |
---|
| | <xsl:call-template name="generate-content-cell"> |
---|
| | <xsl:with-param name="columns">11</xsl:with-param> |
---|
| | <xsl:with-param name="columns" select="xs:integer( $num-columns )" /> |
---|
| | <xsl:with-param name="rows">1</xsl:with-param> |
---|
| | <xsl:with-param name="colour">blue-ou large</xsl:with-param> |
---|
| | <xsl:with-param name="style">border: 2px solid #777777; font-style: italic; font-weight: bold;</xsl:with-param> |
---|
| | </xsl:call-template> |
---|
| |
---|