summaryrefslogtreecommitdiffstats
path: root/help3xsl/get_bookmark.xsl
diff options
context:
space:
mode:
authorOlivier Hallot <olivier.hallot@libreoffice.org>2017-06-20 00:04:54 -0300
committerOlivier Hallot <olivier.hallot@edx.srv.br>2017-06-25 01:55:11 +0200
commit181b72469b27cc2f711525838463e98a0920161c (patch)
tree671e2cc4f601c6237fb00a95944a0b062ac5b2b2 /help3xsl/get_bookmark.xsl
parentHelp content n browser (iv) clean xslt cruft (diff)
downloadhelp-181b72469b27cc2f711525838463e98a0920161c.tar.gz
help-181b72469b27cc2f711525838463e98a0920161c.zip
Help-in-browser: several improvements
* tabs for Contents/Index/Search * product version (6.0, 5.3, 5.2, etc...) * capable to receive URL from LibreOffice help call (need to change help url in sfx2/: protocol://<host>/index.html?<params> Change-Id: I2244336ea47cdb923884ae97b9f4a586d85ec706 Reviewed-on: https://gerrit.libreoffice.org/39227 Reviewed-by: Olivier Hallot <olivier.hallot@edx.srv.br> Tested-by: Olivier Hallot <olivier.hallot@edx.srv.br>
Diffstat (limited to 'help3xsl/get_bookmark.xsl')
-rw-r--r--help3xsl/get_bookmark.xsl163
1 files changed, 163 insertions, 0 deletions
diff --git a/help3xsl/get_bookmark.xsl b/help3xsl/get_bookmark.xsl
new file mode 100644
index 0000000000..724fcc73ce
--- /dev/null
+++ b/help3xsl/get_bookmark.xsl
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-->
+<!--
+Stylesheet to extract index bookmarks from xhp files and output a link to
+the xhp file.
+Usage:
+xsltproc get_bookmark.xsl <file.xhp>
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:param name="app"/>
+<xsl:param name="Language"/>
+<xsl:param name="productname" select="'LibreOffice'"/>
+<xsl:param name="productversion"/>
+
+<xsl:output indent="yes" method="text"/>
+
+<!--
+############################
+# Variables and Parameters #
+############################
+//-->
+<xsl:variable name="fname" select="/helpdocument/meta/topic/filename"/>
+<xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="starts-with($fname, '/')">
+ <xsl:value-of select="substring($fname, 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$fname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:variable>
+<!-- Product brand variables used in the help files -->
+<xsl:variable name="brand1" select="'$[officename]'"/>
+<xsl:variable name="brand2" select="'$[officeversion]'"/>
+<xsl:variable name="brand3" select="'%PRODUCTNAME'"/>
+<xsl:variable name="brand4" select="'%PRODUCTVERSION'"/>
+<!--
+#############
+# Templates #
+#############
+//-->
+
+<!-- Extract the bookmarks-->
+<xsl:template match="/">
+ <xsl:for-each select="//bookmark[@branch='index']">
+ <xsl:variable name="hrefhtml" select="substring-before($filename,'xhp')"/>
+ <xsl:variable name="href" select="concat($productversion,'/',$Language,'/',$hrefhtml,'html?DbPAR=',$app,'#',@id)"/>
+ <xsl:for-each select="bookmark_value">
+ <xsl:variable name="here1">
+ <xsl:text disable-output-escaping="yes"><![CDATA[<li><a target="_top" href="]]></xsl:text>
+ <xsl:value-of select="$href"/>
+ <xsl:text disable-output-escaping="yes"><![CDATA["</a>]]></xsl:text>
+ <xsl:call-template name="apostrophe"><xsl:with-param name="string">
+ <xsl:value-of select="."/>
+ </xsl:with-param></xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="brand"><xsl:with-param name="string">
+ <xsl:value-of select="$here1"/>
+ </xsl:with-param></xsl:call-template>
+ <xsl:text disable-output-escaping="yes"><![CDATA[</li>\]]>&#xA;</xsl:text>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+<!-- weird characters inside bookmarks, replace by HTML entities-->
+<xsl:template name="apostrophe">
+ <xsl:param name="string"/>
+ <xsl:variable name="apost">&apos;</xsl:variable><!-- apostrophe -->
+ <xsl:choose>
+ <xsl:when test="contains($string,$apost)">
+ <xsl:variable name="newstr">
+ <xsl:value-of select="substring-before($string,$apost)"/>
+ <xsl:text disable-output-escaping="yes"><![CDATA[&]]>#39;</xsl:text>
+ <xsl:value-of select="substring-after($string,$apost)"/>
+ </xsl:variable>
+ <xsl:call-template name="apostrophe">
+ <xsl:with-param name="string" select="$newstr"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Branding -->
+<xsl:template match="text()">
+ <xsl:call-template name="brand">
+ <xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="apostrophe">
+ <xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+
+<xsl:template name="brand" >
+ <xsl:param name="string"/>
+
+ <xsl:choose>
+
+ <xsl:when test="contains($string,$brand1)">
+ <xsl:variable name="newstr">
+ <xsl:value-of select="substring-before($string,$brand1)"/>
+ <xsl:value-of select="$productname"/>
+ <xsl:value-of select="substring-after($string,$brand1)"/>
+ </xsl:variable>
+ <xsl:call-template name="brand">
+ <xsl:with-param name="string" select="$newstr"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($string,$brand2)">
+ <xsl:variable name="newstr">
+ <xsl:value-of select="substring-before($string,$brand2)"/>
+ <xsl:value-of select="$pversion"/>
+ <xsl:value-of select="substring-after($string,$brand2)"/>
+ </xsl:variable>
+ <xsl:call-template name="brand">
+ <xsl:with-param name="string" select="$newstr"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($string,$brand3)">
+ <xsl:variable name="newstr">
+ <xsl:value-of select="substring-before($string,$brand3)"/>
+ <xsl:value-of select="$productname"/>
+ <xsl:value-of select="substring-after($string,$brand3)"/>
+ </xsl:variable>
+ <xsl:call-template name="brand">
+ <xsl:with-param name="string" select="$newstr"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($string,$brand4)">
+ <xsl:variable name="newstr">
+ <xsl:value-of select="substring-before($string,$brand4)"/>
+ <xsl:value-of select="$pversion"/>
+ <xsl:value-of select="substring-after($string,$brand4)"/>
+ </xsl:variable>
+ <xsl:call-template name="brand">
+ <xsl:with-param name="string" select="$newstr"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+</xsl:stylesheet>