Edit online

The examples in this section demonstrate how to use XSLT extension points from an Oxygen Publishing Template.

Edit online

Suppose you want your codeblocks to have a particular background color for one line, and another color for the next line. One advantage of this coloring technique is that you can clearly see when text from the codeblock is wrapped.

This effect can be done by altering the HTML5 output, creating a div for each line from the code block, then styling them.

To add this functionality using an Oxygen Publishing Template, follow these steps:

  1. If you have not already created a Publishing Template, you need to create one. For details, see How to Create a Publishing Template.
  2. Link the folder associated with the publishing template to your current project in the Project view.
  3. Using the Project view, create an xslt folder inside the project root folder.
  4. In this folder, create an XSL file (for example, named merged2html5Extension.xsl) with the following content:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="xs"
        version="2.0">
       
        <xsl:template match="*[contains(@class, ' pr-d/codeblock ')]">
           <div class='zebra'>       
              <xsl:analyze-string regex="\n" select=".">
                <xsl:matching-substring/>
                <xsl:non-matching-substring>
                   <div><xsl:value-of select="."/></div>
                </xsl:non-matching-substring>
              </xsl:analyze-string>
           </div>
        </xsl:template>
    </xsl:stylesheet>
  5. Open the template descriptor file associated with your publishing template (the .opt file) and set the XSLT stylesheet created in the previous step with the com.oxygenxml.pdf.css.xsl.merged2html5 XSLT extension point:
    <publishing-template>
        ...
        <pdf>
            ...        
            <xslt>
                <extension 
                  id="com.oxygenxml.pdf.css.xsl.merged2html5"
                  file="xslt/merged2html5Extension.xsl"/>
            </xslt>
  6. Create a css folder in the publishing template directory. In this directory, save a custom CSS file with rules that style the codeblock structure. For example:
    div.zebra {
      font-family:courier, fixed, monospace;        
      white-space:pre-wrap;
    }
    
    div.zebra > *:nth-of-type(odd){        
      background-color: silver;
    }     
  7. Open the template descriptor file associated with your publishing template (the .opt file) and reference your custom CSS file in the resources element:
    <publishing-template>
        ...
        <pdf>
          ...                
          <resources>            
              <css file="css/custom.css"/>
          </resources> 
  8. Edit the DITA Map PDF - based on HTML5 & CSS transformation scenario.
  9. In the Templates tab, click the Choose Custom Publishing Template link and select your template.
  10. Click OK to save the changes to the transformation scenario.
  11. Run the transformation scenario.

Edit online

Suppose you want compound words that contain hyphens (or any other criteria) to be wrapped with inline elements (such as the HTML <code> element).

To add this functionality using an Oxygen Publishing Template, follow these steps:
  1. If you have not already created a Publishing Template, you need to create one. For details, see How to Create a Publishing Template.
  2. Link the folder associated with the publishing template to your current project in the Project view.
  3. Using the Project view, create an xslt folder inside the project root folder.
  4. In this folder, create an XSL file (for example, named merged2htmlExtension.xsl) with the following content:
      <xsl:template match="text()">
    
        <xsl:variable name="txt">
          <xsl:next-match />
        </xsl:variable>
    
        <xsl:analyze-string regex="(\w|\-)+" select="$txt">
          <xsl:matching-substring>
            <!-- A word -->
            <xsl:choose>
              <xsl:when test="contains(.,'-')">          
                <!-- A compound word -->
                <code class='compound-word'><xsl:value-of  select="."/></code>
              </xsl:when>
              <xsl:otherwise>
                <!-- A simple word -->
                <xsl:value-of select="." />
              </xsl:otherwise>
            </xsl:choose>
          </xsl:matching-substring>
          <xsl:non-matching-substring>
            <!-- Not a word -->      
            <xsl:value-of select="." />
          </xsl:non-matching-substring>
        </xsl:analyze-string>
    
      </xsl:template>
  5. Open the template descriptor file associated with your publishing template (the .opt file) and set the XSLT stylesheet created in the previous step with the com.oxygenxml.pdf.css.xsl.merged2merged XSLT extension point:
    <publishing-template>
        ...
        <pdf>
            ...        
            <xslt>
                <extension 
                  id="com.oxygenxml.pdf.css.xsl.merged2merged"
                  file="xslt/merged2mergedExtension.xsl"/>
            </xslt>
  6. Edit the DITA Map PDF - based on HTML5 & CSS transformation scenario.
  7. In the Templates tab, click the Choose Custom Publishing Template link and select your template.
  8. Click OK to save the changes to the transformation scenario.
  9. Run the transformation scenario.