diff options
author | Olivier Hallot <olivier.hallot@libreoffice.org> | 2017-07-16 09:27:44 -0300 |
---|---|---|
committer | Olivier Hallot <olivier.hallot@edx.srv.br> | 2017-07-16 14:35:05 +0200 |
commit | 7d9270f4d45603665daaa51f31914eadbbd6b353 (patch) | |
tree | dbac7606241632d6fb4a6c53100c8daed9c61459 /help3xsl/get_tree.xsl | |
parent | 0d9a8fd684b33942185c76e1a37353ce4566f014 (diff) |
Help-in-browser (ix) Add contents treeview
Add Contents tree transforming *.tree files
Reposition <meta> tag for UTF-8
Fork bash script for faster processing
Change-Id: I6c74aa1e855b7f4bb152e2c632f6ab7d683e5462
Reviewed-on: https://gerrit.libreoffice.org/40007
Reviewed-by: Olivier Hallot <olivier.hallot@edx.srv.br>
Tested-by: Olivier Hallot <olivier.hallot@edx.srv.br>
Diffstat (limited to 'help3xsl/get_tree.xsl')
-rw-r--r-- | help3xsl/get_tree.xsl | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/help3xsl/get_tree.xsl b/help3xsl/get_tree.xsl new file mode 100644 index 0000000000..0dd417798f --- /dev/null +++ b/help3xsl/get_tree.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 tree context and generate a neste list +Usage: +xsltproc get_tree.xsl <file.tree> +--> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<xsl:param name="app"/> +<xsl:param name="lang"/> +<xsl:param name="productname" select="'LibreOffice'"/> +<xsl:param name="productversion"/> + +<xsl:output indent="yes" method="html"/> + +<!-- +############################ +# Variables and Parameters # +############################ +//--> +<!-- 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 tree and generate a nested UL--> +<xsl:template match="/"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="help_section"> + <ul> + <li><input type="checkbox" id="{@id}"/> + <label for="{@id}"> + <xsl:call-template name="brand"><xsl:with-param name="string"><xsl:value-of select="@title"/></xsl:with-param></xsl:call-template> + </label> + <ul><xsl:apply-templates/></ul> + </li> + </ul> +</xsl:template> + +<xsl:template match="node"> + <li><input type="checkbox" id="{@id}"/> + <label for="{@id}"> + <xsl:call-template name="brand"><xsl:with-param name="string"><xsl:value-of select="@title"/></xsl:with-param></xsl:call-template> + </label> + <ul><xsl:apply-templates/></ul> + </li> +</xsl:template> + +<xsl:template match="topic"> + <xsl:variable name="htmlpage"><xsl:call-template name="filehtml"> + <xsl:with-param name="file" select="concat('/',$productversion,'/',$lang,'/',substring-after(@id,'/'))"/> + </xsl:call-template></xsl:variable> + <li><a target="_top" href="{$htmlpage}"><xsl:call-template name="brand"><xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param></xsl:call-template></a></li> +</xsl:template> + +<!-- weird characters inside bookmarks, replace by HTML entities--> +<xsl:template name="apostrophe"> + <xsl:param name="string"/> + <xsl:variable name="apost">'</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:template name="filehtml"> + <xsl:param name="file"/> + <xsl:value-of select="substring-after(concat(substring-before($file,'.xhp'),'.html'),'/')"/> +</xsl:template> +</xsl:stylesheet> |