summaryrefslogtreecommitdiffstats
path: root/kdoctools/docbook/xsl/manpages/xref.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'kdoctools/docbook/xsl/manpages/xref.xsl')
-rw-r--r--kdoctools/docbook/xsl/manpages/xref.xsl44
1 files changed, 44 insertions, 0 deletions
diff --git a/kdoctools/docbook/xsl/manpages/xref.xsl b/kdoctools/docbook/xsl/manpages/xref.xsl
new file mode 100644
index 000000000..671b87d93
--- /dev/null
+++ b/kdoctools/docbook/xsl/manpages/xref.xsl
@@ -0,0 +1,44 @@
+<?xml version='1.0'?>
+<!-- vim:set sts=2 shiftwidth=2 syntax=sgml: -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<xsl:template match="xref">
+ <xsl:variable name="targets" select="key('id', @linkend)"/>
+ <xsl:variable name="target" select="$targets[1]"/>
+ <xsl:variable name="type" select="local-name($target)"/>
+
+ <xsl:choose>
+ <xsl:when test="$type=''">
+ <xsl:message>
+ <xsl:text>xref to nonexistent id </xsl:text>
+ <xsl:value-of select="@linkend"/>
+ </xsl:message>
+ </xsl:when>
+
+ <xsl:when test="$type='refentry'">
+ <xsl:call-template name="do-citerefentry">
+ <xsl:with-param name="refentrytitle"
+ select="$target/refmeta/refentrytitle[1]"/>
+ <xsl:with-param name="manvolnum"
+ select="$target/refmeta/manvolnum"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="$type='refname'">
+ <xsl:call-template name="do-citerefentry">
+ <xsl:with-param name="refentrytitle" select="$target"/>
+ <xsl:with-param name="manvolnum"
+ select="$target/../../refmeta/manvolnum"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>[xref to </xsl:text>
+ <xsl:value-of select="$type"/>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>