diff options
Diffstat (limited to '3rdParty/DocBook/XSL/html/html.xsl')
-rw-r--r-- | 3rdParty/DocBook/XSL/html/html.xsl | 370 |
1 files changed, 370 insertions, 0 deletions
diff --git a/3rdParty/DocBook/XSL/html/html.xsl b/3rdParty/DocBook/XSL/html/html.xsl new file mode 100644 index 0000000..42f78d7 --- /dev/null +++ b/3rdParty/DocBook/XSL/html/html.xsl @@ -0,0 +1,370 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: html.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- These variables set the align attribute value for HTML output based on + the writing-mode specified in the gentext file for the document's lang. --> + +<xsl:variable name="direction.align.start"> + <xsl:choose> + <xsl:when test="starts-with($writing.mode, 'lr')">left</xsl:when> + <xsl:when test="starts-with($writing.mode, 'rl')">right</xsl:when> + <xsl:otherwise>left</xsl:otherwise> + </xsl:choose> +</xsl:variable> + +<xsl:variable name="direction.align.end"> + <xsl:choose> + <xsl:when test="starts-with($writing.mode, 'lr')">right</xsl:when> + <xsl:when test="starts-with($writing.mode, 'rl')">left</xsl:when> + <xsl:otherwise>right</xsl:otherwise> + </xsl:choose> +</xsl:variable> + +<xsl:variable name="direction.mode"> + <xsl:choose> + <xsl:when test="starts-with($writing.mode, 'lr')">ltr</xsl:when> + <xsl:when test="starts-with($writing.mode, 'rl')">rtl</xsl:when> + <xsl:otherwise>ltr</xsl:otherwise> + </xsl:choose> +</xsl:variable> + +<!-- The generate.html.title template is currently used for generating HTML --> +<!-- "title" attributes for some inline elements only, but not for any --> +<!-- block elements. It is called in eleven places in the inline.xsl --> +<!-- file. But it's called by all the inline.* templates (e.g., --> +<!-- inline.boldseq), which in turn are called by other (element) --> +<!-- templates, so it results, currently, in supporting generation of the --> +<!-- HTML "title" attribute for a total of about 92 elements. --> +<!-- You can use mode="html.title.attribute" to get a title for --> +<!-- an element specified by a param, including targets of cross references. --> +<xsl:template name="generate.html.title"> + <xsl:apply-templates select="." mode="html.title.attribute"/> +</xsl:template> + +<!-- Generate a title attribute for the context node --> +<xsl:template match="*" mode="html.title.attribute"> + <xsl:variable name="is.title"> + <xsl:call-template name="gentext.template.exists"> + <xsl:with-param name="context" select="'title'"/> + <xsl:with-param name="name" select="local-name(.)"/> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="is.title-numbered"> + <xsl:call-template name="gentext.template.exists"> + <xsl:with-param name="context" select="'title-numbered'"/> + <xsl:with-param name="name" select="local-name(.)"/> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="is.title-unnumbered"> + <xsl:call-template name="gentext.template.exists"> + <xsl:with-param name="context" select="'title-unnumbered'"/> + <xsl:with-param name="name" select="local-name(.)"/> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="has.title.markup"> + <xsl:apply-templates select="." mode="title.markup"> + <xsl:with-param name="verbose" select="0"/> + </xsl:apply-templates> + </xsl:variable> + + <xsl:variable name="gentext.title"> + <xsl:if test="$has.title.markup != '???TITLE???' and + ($is.title != 0 or + $is.title-numbered != 0 or + $is.title-unnumbered != 0)"> + <xsl:apply-templates select="." + mode="object.title.markup.textonly"/> + </xsl:if> + </xsl:variable> + + <xsl:choose> + <xsl:when test="string-length($gentext.title) != 0"> + <xsl:attribute name="title"> + <xsl:value-of select="$gentext.title"/> + </xsl:attribute> + </xsl:when> + <!-- Fall back to alt if available --> + <xsl:when test="alt"> + <xsl:attribute name="title"> + <xsl:value-of select="normalize-space(alt)"/> + </xsl:attribute> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="qandaentry" mode="html.title.attribute"> + <xsl:apply-templates select="question" mode="html.title.attribute"/> +</xsl:template> + +<xsl:template match="question" mode="html.title.attribute"> + <xsl:variable name="label.text"> + <xsl:apply-templates select="." mode="qanda.label"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="string-length($label.text) != 0"> + <xsl:attribute name="title"> + <xsl:value-of select="$label.text"/> + </xsl:attribute> + </xsl:when> + <!-- Fall back to alt if available --> + <xsl:when test="alt"> + <xsl:attribute name="title"> + <xsl:value-of select="normalize-space(alt)"/> + </xsl:attribute> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="dir"> + <xsl:param name="inherit" select="0"/> + + <xsl:variable name="dir"> + <xsl:choose> + <xsl:when test="@dir"> + <xsl:value-of select="@dir"/> + </xsl:when> + <xsl:when test="$inherit != 0"> + <xsl:value-of select="ancestor::*/@dir[1]"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="$dir != ''"> + <xsl:attribute name="dir"> + <xsl:value-of select="$dir"/> + </xsl:attribute> + </xsl:if> +</xsl:template> + +<xsl:template name="anchor"> + <xsl:param name="node" select="."/> + <xsl:param name="conditional" select="1"/> + <xsl:variable name="id"> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$node"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="$conditional = 0 or $node/@id or $node/@xml:id"> + <a name="{$id}"/> + </xsl:if> +</xsl:template> + +<xsl:template name="href.target.uri"> + <xsl:param name="context" select="."/> + <xsl:param name="object" select="."/> + <xsl:text>#</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="href.target"> + <xsl:param name="context" select="."/> + <xsl:param name="object" select="."/> + <xsl:text>#</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="href.target.with.base.dir"> + <xsl:param name="context" select="."/> + <xsl:param name="object" select="."/> + <xsl:if test="$manifest.in.base.dir = 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:call-template name="href.target"> + <xsl:with-param name="context" select="$context"/> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="dingbat"> + <xsl:param name="dingbat">bullet</xsl:param> + <xsl:call-template name="dingbat.characters"> + <xsl:with-param name="dingbat" select="$dingbat"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="dingbat.characters"> + <!-- now that I'm using the real serializer, all that dingbat malarky --> + <!-- isn't necessary anymore... --> + <xsl:param name="dingbat">bullet</xsl:param> + <xsl:choose> + <xsl:when test="$dingbat='bullet'">•</xsl:when> + <xsl:when test="$dingbat='copyright'">©</xsl:when> + <xsl:when test="$dingbat='trademark'">™</xsl:when> + <xsl:when test="$dingbat='trade'">™</xsl:when> + <xsl:when test="$dingbat='registered'">®</xsl:when> + <xsl:when test="$dingbat='service'">(SM)</xsl:when> + <xsl:when test="$dingbat='nbsp'"> </xsl:when> + <xsl:when test="$dingbat='ldquo'">“</xsl:when> + <xsl:when test="$dingbat='rdquo'">”</xsl:when> + <xsl:when test="$dingbat='lsquo'">‘</xsl:when> + <xsl:when test="$dingbat='rsquo'">’</xsl:when> + <xsl:when test="$dingbat='em-dash'">—</xsl:when> + <xsl:when test="$dingbat='mdash'">—</xsl:when> + <xsl:when test="$dingbat='en-dash'">–</xsl:when> + <xsl:when test="$dingbat='ndash'">–</xsl:when> + <xsl:otherwise> + <xsl:text>•</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="id.warning"> + <xsl:if test="$id.warnings != 0 and not(@id) and not(@xml:id) and parent::*"> + <xsl:variable name="title"> + <xsl:choose> + <xsl:when test="title"> + <xsl:value-of select="title[1]"/> + </xsl:when> + <xsl:when test="substring(local-name(*[1]), + string-length(local-name(*[1])-3) = 'info') + and *[1]/title"> + <xsl:value-of select="*[1]/title[1]"/> + </xsl:when> + <xsl:when test="refmeta/refentrytitle"> + <xsl:value-of select="refmeta/refentrytitle"/> + </xsl:when> + <xsl:when test="refnamediv/refname"> + <xsl:value-of select="refnamediv/refname[1]"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:message> + <xsl:text>ID recommended on </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:if test="$title != ''"> + <xsl:text>: </xsl:text> + <xsl:choose> + <xsl:when test="string-length($title) > 40"> + <xsl:value-of select="substring($title,1,40)"/> + <xsl:text>...</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$title"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:message> + </xsl:if> +</xsl:template> + +<xsl:template name="generate.class.attribute"> + <xsl:param name="class" select="local-name(.)"/> + <xsl:apply-templates select="." mode="class.attribute"> + <xsl:with-param name="class" select="$class"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="class.attribute"> + <xsl:param name="class" select="local-name(.)"/> + <!-- permit customization of class attributes --> + <!-- Use element name by default --> + <xsl:attribute name="class"> + <xsl:apply-templates select="." mode="class.value"> + <xsl:with-param name="class" select="$class"/> + </xsl:apply-templates> + </xsl:attribute> +</xsl:template> + +<xsl:template match="*" mode="class.value"> + <xsl:param name="class" select="local-name(.)"/> + <!-- permit customization of class value only --> + <!-- Use element name by default --> + <xsl:value-of select="$class"/> +</xsl:template> + +<!-- Apply common attributes such as class, lang, dir --> +<xsl:template name="common.html.attributes"> + <xsl:param name="inherit" select="0"/> + <xsl:param name="class" select="local-name(.)"/> + <xsl:apply-templates select="." mode="common.html.attributes"> + <xsl:with-param name="class" select="$class"/> + <xsl:with-param name="inherit" select="$inherit"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="*" mode="common.html.attributes"> + <xsl:param name="class" select="local-name(.)"/> + <xsl:param name="inherit" select="0"/> + <xsl:call-template name="generate.html.lang"/> + <xsl:call-template name="dir"> + <xsl:with-param name="inherit" select="$inherit"/> + </xsl:call-template> + <xsl:apply-templates select="." mode="class.attribute"> + <xsl:with-param name="class" select="$class"/> + </xsl:apply-templates> + <xsl:call-template name="generate.html.title"/> +</xsl:template> + +<!-- Apply common attributes not including class --> +<xsl:template name="locale.html.attributes"> + <xsl:apply-templates select="." mode="locale.html.attributes"/> +</xsl:template> + +<xsl:template match="*" mode="locale.html.attributes"> + <xsl:call-template name="generate.html.lang"/> + <xsl:call-template name="dir"/> + <xsl:call-template name="generate.html.title"/> +</xsl:template> + +<!-- Pass through any lang attributes --> +<xsl:template name="generate.html.lang"> + <xsl:apply-templates select="." mode="html.lang.attribute"/> +</xsl:template> + +<xsl:template match="*" mode="html.lang.attribute"> + <!-- match the attribute name to the output type --> + <xsl:choose> + <xsl:when test="@lang and $stylesheet.result.type = 'html'"> + <xsl:attribute name="lang"> + <xsl:value-of select="@lang"/> + </xsl:attribute> + </xsl:when> + <xsl:when test="@lang and $stylesheet.result.type = 'xhtml'"> + <xsl:attribute name="xml:lang"> + <xsl:value-of select="@lang"/> + </xsl:attribute> + </xsl:when> + <xsl:when test="@xml:lang and $stylesheet.result.type = 'html'"> + <xsl:attribute name="lang"> + <xsl:value-of select="@xml:lang"/> + </xsl:attribute> + </xsl:when> + <xsl:when test="@xml:lang and $stylesheet.result.type = 'xhtml'"> + <xsl:attribute name="xml:lang"> + <xsl:value-of select="@xml:lang"/> + </xsl:attribute> + </xsl:when> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> + |