diff options
Diffstat (limited to 'doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl')
-rw-r--r-- | doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl | 500 |
1 files changed, 500 insertions, 0 deletions
diff --git a/doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl b/doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl new file mode 100644 index 0000000..e7de5f5 --- /dev/null +++ b/doc/editor_configs/serna/scons/docbook-xsl-serna/gentext.xsl @@ -0,0 +1,500 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + exclude-result-prefixes="doc" + xmlns:dtm="http://syntext.com/Extensions/DocumentTypeMetadata-1.0" + extension-element-prefixes="dtm" + version='1.0'> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="xpath.location"/> +<xsl:template name="xpath.location" dtm:id="xpath.location"> + <xsl:param name="node" select="."/> + <xsl:param name="path" select="''"/> + + <xsl:variable name="next.path"> + <xsl:value-of select="local-name($node)"/> + <xsl:if test="$path != ''">/</xsl:if> + <xsl:value-of select="$path"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$node/parent::*"> + <xsl:call-template name="xpath.location"> + <xsl:with-param name="node" select="$node/parent::*"/> + <xsl:with-param name="path" select="$next.path"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:text>/</xsl:text> + <xsl:value-of select="$next.path"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.title.template"/> +<xsl:template match="*" mode="object.title.template" dtm:id="all.object.title.template"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<dtm:doc dtm:idref="chapter.object.title.template"/> +<xsl:template match="chapter" mode="object.title.template" dtm:id="chapter.object.title.template"> + <xsl:choose> + <xsl:when test="$chapter.autolabel != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title-numbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title-unnumbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<dtm:doc dtm:idref="appendix.object.title.template"/> +<xsl:template match="appendix" mode="object.title.template" dtm:id="appendix.object.title.template"> + <xsl:choose> + <xsl:when test="$appendix.autolabel != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title-numbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title-unnumbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<dtm:doc dtm:elements="section|simplesect|sect1|sect2|sect3|sect4|sect5|refsect1|refsect2|refsect3|bridgehead" dtm:idref="sections.object.title.template sections.object.xref.template"/> +<xsl:template match="section|sect1|sect2|sect3|sect4|sect5|simplesect + |bridgehead" + mode="object.title.template" dtm:id="sections.object.title.template"> + <xsl:choose> + <xsl:when test="$section.autolabel != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title-numbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title-unnumbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<dtm:doc dtm:idref="procedure.object.title.template"/> +<xsl:template match="procedure" mode="object.title.template" dtm:id="procedure.object.title.template"> + <xsl:choose> + <xsl:when test="$formal.procedures != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + <xsl:text>.formal</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.subtitle.template"/> +<xsl:template match="*" mode="object.subtitle.template" dtm:id="all.object.subtitle.template"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'subtitle'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.xref.template"/> +<xsl:template match="*" mode="object.xref.template" dtm:id="all.object.xref.template"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="referrer"/> + + <xsl:variable name="number-and-title-template"> + <xsl:call-template name="gentext.template.exists"> + <xsl:with-param name="context" select="'xref-number-and-title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$number-and-title-template != 0 + and $xref.with.number.and.title != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'xref-number-and-title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'xref'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="section|simplesect + |sect1|sect2|sect3|sect4|sect5 + |refsect1|refsect2|refsect3 + |bridgehead" + mode="object.xref.template" dtm:id="sections.object.xref.template"> + + <xsl:variable name="number-and-title-template"> + <xsl:call-template name="gentext.template.exists"> + <xsl:with-param name="context" select="'xref-number-and-title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$number-and-title-template != 0 + and $xref.with.number.and.title != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'xref-number-and-title'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="$section.autolabel != 0"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'section-xref-numbered'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'section-xref'"/> + <xsl:with-param name="name"> + <xsl:call-template name="xpath.location"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.title.markup"/> +<xsl:template match="*" mode="object.title.markup" dtm:id="all.object.title.markup"> + <xsl:param name="allow-anchors" select="0"/> + <xsl:variable name="template"> + <xsl:apply-templates select="." mode="object.title.template"/> + </xsl:variable> + +<!-- + <xsl:message> + <xsl:text>object.title.markup: </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text>: </xsl:text> + <xsl:value-of select="$template"/> + </xsl:message> +--> + + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + <xsl:with-param name="template" select="$template"/> + </xsl:call-template> +</xsl:template> + +<dtm:doc dtm:idref="all.object.title.markup.textonly"/> +<xsl:template match="*" mode="object.title.markup.textonly" dtm:id="all.object.title.markup.textonly"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </xsl:variable> + <xsl:value-of select="$title"/> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.titleabbrev.markup"/> +<xsl:template match="*" mode="object.titleabbrev.markup" dtm:id="all.object.titleabbrev.markup"> + <xsl:param name="allow-anchors" select="0"/> + + <!-- Just for consistency in template naming --> + + <xsl:apply-templates select="." mode="titleabbrev.markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:apply-templates> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.subtitle.markup"/> +<xsl:template match="*" mode="object.subtitle.markup" dtm:id="all.object.subtitle.markup"> + <xsl:variable name="template"> + <xsl:apply-templates select="." mode="object.subtitle.template"/> + </xsl:variable> + + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="template" select="$template"/> + </xsl:call-template> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="all.object.xref.markup"/> +<xsl:template match="*" mode="object.xref.markup" dtm:id="all.object.xref.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="referrer"/> + + <xsl:variable name="template"> + <xsl:apply-templates select="." mode="object.xref.template"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + </xsl:apply-templates> + </xsl:variable> + +<!-- + <xsl:message> + <xsl:text>object.xref.markup: </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text>(</xsl:text> + <xsl:value-of select="$xrefstyle"/> + <xsl:text>, </xsl:text> + <xsl:value-of select="$purpose"/> + <xsl:text>)</xsl:text> + <xsl:text>: [</xsl:text> + <xsl:value-of select="$template"/> + <xsl:text>]</xsl:text> + </xsl:message> +--> + + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="template" select="$template"/> + </xsl:call-template> +</xsl:template> + +<dtm:doc dtm:idref="listitem.object-xref-markup"/> +<xsl:template match="listitem" mode="object.xref.markup" dtm:id="listitem.object-xref-markup"> + <xsl:choose> + <xsl:when test="parent::orderedlist"> + <xsl:variable name="template"> + <xsl:apply-templates select="." mode="object.xref.template"/> + </xsl:variable> + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="template" select="$template"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Xref is only supported to listitems in an</xsl:text> + <xsl:text> orderedlist: </xsl:text> + <xsl:value-of select="@id"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ============================================================ --> +<dtm:doc dtm:idref="substitute-markup"/> +<xsl:template name="substitute-markup" dtm:id="substitute-markup"> + <xsl:param name="template" select="''"/> + <xsl:param name="allow-anchors" select="'0'"/> + <xsl:param name="title" select="''"/> + <xsl:param name="subtitle" select="''"/> + <xsl:param name="label" select="''"/> + <xsl:param name="pagenumber" select="''"/> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="referrer"/> + + <xsl:choose> + <xsl:when test="contains($template, '%')"> + <xsl:value-of select="substring-before($template, '%')"/> + <xsl:variable name="candidate" + select="substring(substring-after($template, '%'), 1, 1)"/> + <xsl:choose> + <xsl:when test="$candidate = 't'"> + <xsl:apply-templates select="." mode="insert.title.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="title"> + <xsl:choose> + <xsl:when test="$title != ''"> + <xsl:copy-of select="$title"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="title.markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 's'"> + <xsl:apply-templates select="." mode="insert.subtitle.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="subtitle"> + <xsl:choose> + <xsl:when test="$subtitle != ''"> + <xsl:copy-of select="$subtitle"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="subtitle.markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 'n'"> + <xsl:apply-templates select="." mode="insert.label.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="label"> + <xsl:choose> + <xsl:when test="$label != ''"> + <xsl:copy-of select="$label"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 'p'"> + <xsl:apply-templates select="." mode="insert.pagenumber.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="pagenumber"> + <xsl:choose> + <xsl:when test="$pagenumber != ''"> + <xsl:copy-of select="$pagenumber"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="pagenumber.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 'd'"> + <xsl:apply-templates select="." mode="insert.direction.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="direction"> + <xsl:choose> + <xsl:when test="$referrer"> + <xsl:variable name="referent-is-below"> + <xsl:for-each select="preceding::xref"> + <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:choose> + <xsl:when test="$referent-is-below = ''"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'above'"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'below'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = '%' "> + <xsl:text>%</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/> + </xsl:otherwise> + </xsl:choose> + <!-- recurse with the rest of the template string --> + <xsl:variable name="rest" + select="substring($template, + string-length(substring-before($template, '%'))+3)"/> + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="template" select="$rest"/> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + <xsl:with-param name="title" select="$title"/> + <xsl:with-param name="subtitle" select="$subtitle"/> + <xsl:with-param name="label" select="$label"/> + <xsl:with-param name="pagenumber" select="$label"/> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$template"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ============================================================ --> + +</xsl:stylesheet> |