Use Case 1: Add Copyright Information Extracted from a DITA Bookmap
Suppose you want to customize the WebHelp Responsive main page by adding
information about the legal rights associated with the book in the footer (for example,
copyright dates and owner). This information is specified in the
bookmap:
<bookrights>
<copyrfirst>
<year>2002</year>
</copyrfirst>
<copyrlast>
<year>2017</year>
</copyrlast>
<bookowner>
<organization>SyncRO Soft SRL</organization>
</bookowner>
</bookrights>
The XSLT stylesheet that generates the main page is located in:
DITA-OT-DIR\plugins\com.oxygenxml.webhelp.responsive\xsl\mainFiles\createMainPage.xsl.
This XSLT stylesheet declares the
copy_template
mode that processes the main page template to
expand its components. The main page template declares a component for the footer section that
looks like
this:<div class=" footer-container text-center ">
<whc:include_html href="${webhelp.fragment.footer}"/>
</div>
To add this functionality using a Oxygen Publishing Template, follow these steps:
- If you have not already created a Publishing Template, see How to Create a Publishing Template.
- Link the folder associated with the publishing template to your
current project in the Project view.
Step Result: You should have the custom_footer_template folder linked in your project.
- Using the Project
view, create an xsl folder inside the project root folder.
Step Result: You should have the custom_footer_template/xsl folder in your project.
- Create your customization stylesheet (for example,
customMainPage.xsl) in the custom_footer_template/xsl
folder. Edit it to override the template that produces the footer
section:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oxygen="http://www.oxygenxml.com/functions" exclude-result-prefixes="xs" version="3.0"> <xsl:template match="*:div[contains(@class, 'footer-container')]" mode="copy_template"> <!-- Apply the default processing --> <xsl:next-match/> <!-- Add a div containing the copyright information --> <div class="copyright_info"> <xsl:choose> <!-- Adds the start-end years if they are defined --> <xsl:when test="exists($toc/*:topicmeta/*:bookrights/*:copyrfirst) and exists($toc/*:topicmeta/*:bookrights/*:copyrlast)"> <span class="copyright_years"> ©<xsl:value-of select="$toc/*:topicmeta/*:bookrights/*:copyrfirst"/> -<xsl:value-of select="$toc/*:topicmeta/*:bookrights/*:copyrlast"/> </span> </xsl:when> <!-- Adds only the first year if last is not defined. --> <xsl:when test="exists($toc/*:topicmeta/*:bookrights/*:copyrfirst)"> <span class="copyright_years"> ©<xsl:value-of select="$toc/*:topicmeta/*:bookrights/*:copyrfirst"/> </span> </xsl:when> </xsl:choose> <xsl:if test="exists($toc/*:topicmeta/*:bookrights/*:bookowner/*:organization)"> <span class="organization"> <xsl:text> </xsl:text><xsl:value-of select="$toc/*:topicmeta/*:bookrights/*:bookowner/*:organization"/> <xsl:text>. All rights reserved.</xsl:text> </span> </xsl:if> </div> </xsl:template> </xsl:stylesheet>
- Open the template
descriptor file associated with your publishing template and set the XSLT
stylesheet created in the previous step with the
com.oxygenxml.webhelp.xsl.createMainPage XSLT extension
point.
<publishing-template> ... <webhelp> ... <xslt> <extension file="xslt/customMainPage.xsl" id="com.oxygenxml.webhelp.xsl.createMainPage"/>
- Open the DITA Map WebHelp Responsive transformation scenario.
- Click the Choose Custom Publishing Template link and select your template.
- Click OK to save the changes to the transformation scenario.
- Run the transformation scenario.
Bonus: Add Generation Time in the Output Footer
An additional customization for the main page is to add the generation
time in its footer. A transformation parameter is used to control whether or not this
customization is active.
Note:
This can also be done directly by using
an HTML
fragment. You can see a sample project on GitHub that uses an HTML
fragment to show the generation time.
To add this functionality, follow these steps:
- In the customization stylesheet that you just created (for
example, customMainPage.xsl), modify the template by adding the following XSLT
code at the end (before the closing
</div>
element).<xsl:if test="oxygen:getParameter('webhelp.footer.add.generation.time') = 'yes'"> <div class="generation_time"> Generation date: <xsl:value-of select="format-dateTime( current-dateTime(), '[h1]:[m01] [P] on [M01]/[D01]/[Y0001].')"/> </div> </xsl:if>
Note:Theoxygen:getParameter(param.name)
function can be called to get the value of any WebHelp transformation parameter. Just make sure thexmlns:oxygen="http://www.oxygenxml.com/functions"
namespace is declared in the stylesheet. - Open the template
descriptor file associated with your publishing template and set the
webhelp.footer.add.generation.time
parameter to the default value.<publishing-template> ... <webhelp> ... <parameters> <parameter name="webhelp.footer.add.generation.time" value="yes"/>
- Open the DITA Map WebHelp Responsive transformation scenario.
- In the Parameters tab, you can change the
value of the
webhelp.footer.add.generation.time
parameter. - Click OK to save the changes to the transformation scenario.
- Run the transformation scenario.