diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:49:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 16:49:04 +0000 |
commit | 16f504a9dca3fe3b70568f67b7d41241ae485288 (patch) | |
tree | c60f36ada0496ba928b7161059ba5ab1ab224f9d /doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl | |
parent | Initial commit. (diff) | |
download | virtualbox-upstream.tar.xz virtualbox-upstream.zip |
Adding upstream version 7.0.6-dfsg.upstream/7.0.6-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl')
-rw-r--r-- | doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl b/doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl new file mode 100644 index 00000000..073487d5 --- /dev/null +++ b/doc/manual/docbook-refentry-link-replacement-xsl-gen.xsl @@ -0,0 +1,203 @@ +<?xml version="1.0"?> +<!-- + docbook-refentry-link-replacement-xsl-gen.xsl: + XSLT stylesheet for generate a stylesheet that replaces links + to the user manual in the manpages. +--> +<!-- + Copyright (C) 2006-2022 Oracle and/or its affiliates. + + This file is part of VirtualBox base platform packages, as + available from https://www.virtualbox.org. + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation, in version 3 of the + License. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <https://www.gnu.org/licenses>. + + SPDX-License-Identifier: GPL-3.0-only +--> + +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + > + + <xsl:output method="text" version="1.0" encoding="utf-8" indent="yes"/> + <xsl:strip-space elements="*"/> + +<xsl:param name="g_sMode" select="not-specified"/> + + <!-- Translatable strings --> + <xsl:variable name="sChapter" select="'chapter'"/> + <xsl:variable name="sSection" select="'section'"/> + <xsl:variable name="sOfManual" select="'of the user manual'"/> + <xsl:variable name="sInManual" select="'in the user manual'"/> + + +<!-- Default operation is to supress output --> +<xsl:template match="node()|@*"> + <xsl:apply-templates/> +</xsl:template> + + +<!-- Remove all remarks. --> +<xsl:template match="remark"/> + +<!-- +Output header and footer. +--> +<xsl:template match="/"> + <xsl:if test="$g_sMode = 'first'"> + <xsl:text><?xml version="1.0"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > +<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" /> +<xsl:template match="node()|@*"> + <xsl:copy> + <xsl:apply-templates select="node()|@*"/> + </xsl:copy> +</xsl:template> + +</xsl:text> + </xsl:if> + <xsl:apply-templates/> + <xsl:if test="$g_sMode = 'last'"> + <xsl:text> +</xsl:stylesheet> +</xsl:text> + </xsl:if> +</xsl:template> + + +<!-- +Produce the transformation templates: +--> +<xsl:template match="chapter[@id]/title"> + <xsl:text> +<xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../@id"/><xsl:text>']"> + <xsl:text></xsl:text><xsl:value-of select="$sChapter"/><xsl:text> </xsl:text> + <xsl:value-of select="count(../preceding-sibling::chapter) + 1"/><xsl:text> "</xsl:text> + <xsl:value-of select="normalize-space()"/> + <xsl:text>" </xsl:text><xsl:value-of select="$sInManual"/><xsl:text></xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="sect1[@id]/title"> + <xsl:text><xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../@id"/><xsl:text>']"> + <xsl:text></xsl:text><xsl:value-of select="$sSection"/><xsl:text> </xsl:text> + <xsl:value-of select="count(../../preceding-sibling::chapter) + 1"/><xsl:text>.</xsl:text> + <xsl:value-of select="count(../preceding-sibling::sect1) + 1"/> + <xsl:text> "</xsl:text> + <xsl:value-of select="normalize-space()"/><xsl:text>" </xsl:text> + <xsl:value-of select="$sOfManual"/><xsl:text></xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="sect2[@id]/title"> + <xsl:text><xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../@id"/><xsl:text>']"> + <xsl:text></xsl:text><xsl:value-of select="$sSection"/><xsl:text> </xsl:text> + <xsl:value-of select="count(../../../preceding-sibling::chapter) + 1"/><xsl:text>.</xsl:text> + <xsl:value-of select="count(../../preceding-sibling::sect1) + 1"/><xsl:text>.</xsl:text> + <xsl:value-of select="count(../preceding-sibling::sect2) + 1"/> + <xsl:text> "</xsl:text> + <xsl:value-of select="normalize-space()"/><xsl:text>" </xsl:text> + <xsl:value-of select="$sOfManual"/><xsl:text></xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="sect3[@id]/title"> + <xsl:text><xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../@id"/><xsl:text>']"> + <xsl:text></xsl:text><xsl:value-of select="$sSection"/><xsl:text> </xsl:text> + <xsl:value-of select="count(../../../../preceding-sibling::chapter) + 1"/><xsl:text>.</xsl:text> + <xsl:value-of select="count(../../../preceding-sibling::sect1) + 1"/><xsl:text>.</xsl:text> + <xsl:value-of select="count(../../preceding-sibling::sect2) + 1"/><xsl:text>.</xsl:text> + <xsl:value-of select="count(../preceding-sibling::sect3) + 1"/> + <xsl:text> "</xsl:text> + <xsl:value-of select="normalize-space()"/><xsl:text>" </xsl:text> + <xsl:value-of select="$sOfManual"/><xsl:text></xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="preface[@id]/title"> + <xsl:text><xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../@id"/><xsl:text>']"> + <xsl:text>"</xsl:text> + <xsl:value-of select="normalize-space()"/><xsl:text>" </xsl:text> + <xsl:value-of select="$sOfManual"/><xsl:text></xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="refentry[@id]/refentryinfo/title"> + <xsl:text><xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../../@id"/><xsl:text>']"> + <xsl:text> "</xsl:text> + <xsl:value-of select="normalize-space()"/><xsl:text>"</xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="refsect2[@id]/title"> + <xsl:text><xsl:template match="xref[@linkend='</xsl:text> + <xsl:value-of select="../@id"/><xsl:text>']"> + <xsl:text>"</xsl:text> + <xsl:value-of select="normalize-space()"/><xsl:text>"</xsl:text> +</xsl:template> +</xsl:text> + <xsl:apply-templates/> +</xsl:template> + + +<!-- + Debug/Diagnostics: Return the path to the specified node (by default the current). + --> +<xsl:template name="get-node-path"> + <xsl:param name="Node" select="."/> + <xsl:for-each select="$Node"> + <xsl:for-each select="ancestor-or-self::node()"> + <xsl:choose> + <xsl:when test="name(.) = ''"> + <xsl:text>text()</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('/', name(.))"/> + <xsl:choose> + <xsl:when test="@id"> + <xsl:text>[@id=</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>]</xsl:text> + </xsl:when> + <xsl:when test="position() > 1"> + <xsl:text>[</xsl:text><xsl:value-of select="position()"/><xsl:text>]</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:for-each> +</xsl:template> + +</xsl:stylesheet> + |