summaryrefslogtreecommitdiffstats
path: root/kdoctools/docbook/xsl/common/targets.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'kdoctools/docbook/xsl/common/targets.xsl')
-rw-r--r--kdoctools/docbook/xsl/common/targets.xsl263
1 files changed, 263 insertions, 0 deletions
diff --git a/kdoctools/docbook/xsl/common/targets.xsl b/kdoctools/docbook/xsl/common/targets.xsl
new file mode 100644
index 000000000..6da203705
--- /dev/null
+++ b/kdoctools/docbook/xsl/common/targets.xsl
@@ -0,0 +1,263 @@
+<?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"
+ version='1.0'>
+
+<!-- ********************************************************************
+ $Id$
+ ********************************************************************
+
+ This file is part of the XSL DocBook Stylesheet distribution.
+ See ../README or http://nwalsh.com/docbook/xsl/ for copyright
+ and other information.
+
+ ******************************************************************** -->
+
+<!-- ==================================================================== -->
+
+<!-- cross reference target collection -->
+
+<doc:mode mode="collect.targets" xmlns="">
+<refpurpose>Collects information for potential cross reference targets</refpurpose>
+<refdescription>
+<para>Processing the root element in the
+<literal role="mode">collect.targets</literal> mode produces
+a set of target database elements that can be used by
+the olink mechanism to resolve external cross references.
+The collection process is controlled by the <literal>
+collect.xref.targets</literal> parameter, which can be
+<literal>yes</literal> to collect targets and process
+the document for output, <literal>only</literal> to
+only collect the targets, and <literal>no</literal>
+(default) to not collect the targets and only process the document.
+</para>
+<para>
+A <literal>targets.filename</literal> parameter must be
+specified to receive the output if
+<literal>collect.xref.targets</literal> is
+set to <literal>yes</literal> so as to
+redirect the target data to a file separate from the
+document output.
+</para>
+</refdescription>
+</doc:mode>
+
+<!-- ============================================================ -->
+
+<xsl:template match="*" mode="collect.targets">
+ <xsl:choose>
+ <xsl:when test="$collect.xref.targets = 'yes' and $targets.filename = ''">
+ <xsl:message>
+ Must specify a $targets.filename parameter when
+ $collect.xref.targets is set to 'yes'.
+ The xref targets were not collected.
+ </xsl:message>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="$targets.filename">
+ <xsl:call-template name="write.chunk">
+ <xsl:with-param name="filename" select="$targets.filename"/>
+ <xsl:with-param name="method" select="'xml'"/>
+ <xsl:with-param name="encoding" select="'utf-8'"/>
+ <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
+ <xsl:with-param name="doctype-public" select="''"/>
+ <xsl:with-param name="doctype-system" select="''"/>
+ <xsl:with-param name="indent" select="'yes'"/>
+ <xsl:with-param name="quiet" select="0"/>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Else write to standard output -->
+ <xsl:apply-templates select="." mode="olink.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="olink.href.target">
+ <xsl:param name="nd" select="."/>
+
+ <xsl:value-of select="$olink.base.uri"/>
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$nd"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Templates for extracting cross reference information
+ from a document for use in an xref database.
+-->
+
+<xsl:template name="attrs">
+ <xsl:param name="nd" select="."/>
+
+ <xsl:attribute name="element">
+ <xsl:value-of select="local-name(.)"/>
+ </xsl:attribute>
+
+ <xsl:attribute name="href">
+ <xsl:call-template name="olink.href.target">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ </xsl:attribute>
+
+ <xsl:variable name="num">
+ <xsl:apply-templates select="$nd" mode="label.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+
+ <xsl:if test="$num">
+ <xsl:attribute name="number">
+ <xsl:value-of select="$num"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$nd/@id">
+ <xsl:attribute name="targetptr">
+ <xsl:value-of select="$nd/@id"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$nd/@lang">
+ <xsl:attribute name="lang">
+ <xsl:value-of select="$nd/@lang"/>
+ </xsl:attribute>
+ </xsl:if>
+
+</xsl:template>
+
+<xsl:template name="div">
+ <xsl:param name="nd" select="."/>
+
+ <div>
+ <xsl:call-template name="attrs">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ <ttl>
+ <xsl:apply-templates select="$nd" mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </ttl>
+ <xreftext>
+ <xsl:choose>
+ <xsl:when test="$nd/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$nd"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$nd" mode="xref-to">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xreftext>
+ <xsl:apply-templates mode="olink.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template name="obj">
+ <xsl:param name="nd" select="."/>
+
+ <obj>
+ <xsl:call-template name="attrs">
+ <xsl:with-param name="nd" select="$nd"/>
+ </xsl:call-template>
+ <ttl>
+ <xsl:apply-templates select="$nd" mode="title.markup">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </ttl>
+ <xreftext>
+ <xsl:choose>
+ <xsl:when test="$nd/@xreflabel">
+ <xsl:call-template name="xref.xreflabel">
+ <xsl:with-param name="target" select="$nd"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$nd" mode="xref-to">
+ <xsl:with-param name="verbose" select="0"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xreftext>
+ </obj>
+</xsl:template>
+
+<xsl:template match="text()|processing-instruction()|comment()"
+ mode="olink.mode">
+ <!-- nop -->
+</xsl:template>
+
+<!--
+<xsl:template match="*" mode="olink.mode">
+</xsl:template>
+-->
+
+<xsl:template match="set" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="book" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="preface|chapter|appendix" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="part|reference" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="article" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="bibliography|bibliodiv" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="biblioentry|bibliomixed" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="refentry" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="section|sect1|sect2|sect3|sect4|sect5" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="refsection|refsect1|refsect2|refsect3" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="figure|example|table" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="equation[title]" mode="olink.mode">
+ <xsl:call-template name="obj"/>
+</xsl:template>
+
+<xsl:template match="qandaset|qandaentry" mode="olink.mode">
+ <xsl:call-template name="div"/>
+</xsl:template>
+
+<xsl:template match="*" mode="olink.mode">
+ <xsl:if test="@id">
+ <xsl:call-template name="obj"/>
+ </xsl:if>
+ <xsl:apply-templates mode="olink.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>