What's New in Oxygen XML Editor 20.0

Related Versions: 20.0

March 16, 2018

Version 20.0 of the Oxygen XML Editor brings you a variety of new features and improvements that focus on productivity, performance, efficiency, and simplicity and covers many aspects of functionality from XML authoring to XML development, from add-ons to built-in functionality, API changes, and component updates.

This full release includes productivity improvements for DITA, a new publishing template package feature for customizing WebHelp Responsive output, more add-ons to extend Oxygen's functionality, as well as numerous new features and enhancements for XSLT development, Schematron Quick Fixes, XSpec, JSON, and Oxygen PDF Chemistry.

As usual, this version also contains numerous new API entry points or extensions, component updates, and more.

There are changes in:


Report Unreferenced Key Definitions

You can now select an option in the DITA Map Validate and Check for Completeness dialog box to report key definitions that are not referenced.
Report Unreferenced Key Definitions

Report Unreferenced Reusable Elements

You can now select an option in the DITA Map Validate and Check for Completeness to report potential reusable elements that are not referenced anywhere in the context map. These are elements that have an ID attribute and are defined in topics marked as resource only, or in topics where other elements are reused.

Convert DITA Sections to Topics

A new XML refactoring operation was added that extracts sections inside DITA topics to external topics. If the action is invoked from the DITA Maps manager, then the current map will be updated to include references to the newly generated topics.
Convert DITA Sections to Topics

Rename Keys

A new DITA-specific XML refactoring action has been added that provides the ability to easily rename keys. This action does not currently support DITA 1.3 key scopes.

Convert CALS Tables to Simple Tables

A new XML refactoring operation was added that converts DITA CALS tables to DITA simple tables. The conversion assumes that the CALS tables have no spans.
Convert CALS Tables to Simple Tables

DITA-OT 1.8 No Longer Supported

The old DITA-OT version 1.8 is no longer bundled in the Oxygen installation kits. If needed, it can be downloaded and used as an external DITA-OT processor.

Provide External DITA-OT Distribution as an Add-on

A plugin extension was added to contribute additional DITA Open Toolkit distributions to the OxygenDITA preferences page.

Accessibility Support Added to DITA Map to PDF WYSIWYG Transformation

Accessibility support was added to PDF output generated by the DITA Map to PDF WYSIWYG Transformation Scenario. For example, most of the paragraphs, tables, lists, headers, and footers are tagged automatically so a PDF reader can use this information to present the content to the visually impaired.


To offer the benefit of more rapid release cycles, some new functionality was added using the Add-ons support. A variety of plugins were made available on the default add-ons update site.

Git Support Add-on

A new add-on is available that contributes a Git Staging view in Oxygen. It provides a built-in Git client and includes various actions that perform common Git commands, such as push, pull, change branch, commit, and more. It also uses Oxygen's built-in diff tool for comparing and merging changes. For more information, please visit: https://github.com/oxygenxml/oxygen-git-plugin
Git Support Add-on

Batch Converter Add-on

A new batch converter add-on is now available that contributes actions in the Tools menu and in the contextual menu of the Project view to enable batch conversion between various formats (for example, convert from Markdown or HTML to XHTML, DITA, or DocBook). For more information, please visit: https://github.com/oxygenxml/oxygen-resources-converter

DocBook Validation Add-on

A new add-on is available that contributes a Check DocBook for Completeness action on the toolbar and in the DocBook editor contextual menu. This action opens a dialog box that offers various validation options for running a completeness check on the current DocBook document. For more information, visit: https://github.com/oxygenxml/oxygen-docbook-validate-check-completeness

Translation Package Builder Add-on

A new add-on is available that contributes a Translation Package Builder submenu in the contextual menu of the DITA Maps Manager. This submenu includes actions to generate a ZIP package of modified files that can be sent to translators, as well as an action to extract translated files back into your DITA project. For more information, visit: https://github.com/oxygenxml/oxygen-dita-translation-package-builder

DITA Prolog Updater Add-on

A new add-on is available that contributes a preferences page (Options->Preferences->Plugins->DITA Prolog Updater) that includes various options for updating the prolog section of a DITA topic or map. For more information, visit: https://github.com/oxygenxml/oxygen-dita-prolog-updater

WebHelp Responsive Publishing

Publishing Templates

Oxygen version 20 introduces the Oxygen Publishing Templates. They define all aspects of the look and feel (layout and styles) of the WebHelp Responsive output. These templates represent a customization package that you can easily share with your team. It is designed as a self-contained package stored either as a ZIP archive or as a folder on disk.

Built-in Publishing Templates Gallery

Oxygen comes with a built-in publishing templates gallery, available in the Templates tab in WebHelp Responsive transformation scenarios. You can easily find the template you want by using the filtering options and the template preview images.

User Defined Publishing Templates Galleries

If you define multiple Publishing Templates then you can organize them into a gallery, a folder containing multiple publishing templates, to easily share them with others. The WebHelp Responsive transformation scenarios now include a Configure Publishing Templates Gallery option in the Templates tab allowing you to specify directories where your custom templates are stored. The templates stored in these additional directories will appear in the preview pane.

Topic Table of Contents Component

A table of contents component displaying links to each section within the current topic can now be included in the topic page. The section corresponding to the current scroll position is highlighted. You can use the webhelp.show.topic.toc parameter to specify whether or not this table of contents component will be visible.

Highlight Image Map Hotspots

Image map hotspots are highlighted when you move the mouse over the image.

Improved Default Layout

The default layout of the WebHelp Responsive output was improved to make it easier to browse your documentation. The main publication table of contents component was moved to the left side and you can use it to find specific topics and then the new topic TOC component that appears on the right side of each topic page helps you to navigate through the major sections of that topic.

Expand/Collapse Sections

A new Expand/Collapse Sections button was added to the navigation actions and it allows you to easily expand or collapse all the topic sections.

Control the Initial State of Collapsible Elements

A new parameter was added to set the initial state of the collapsible elements. The parameter name is webhelp.topic.collapsible.elements.initial.state and its possible values are: collapsed or expanded (default value).

Display Images

For the responsive images that are displayed with a smaller dimension than its original size, you can click the image to enlarge it in a popup window.

Responsive Videos

If you have embedded videos in WebHelp Responsive output, they are now resized automatically according to the size of the browser.

XSLT Improvements

XPath Content Completion Support in Text Value Templates

Full content completion support was added for text value templates. XPath functions, axes, and parameters/variables from the context are now proposed in the content completion list.
XPath Content Completion Support in Text Value Templates

Search and Refactoring Support in Text Value Templates

Added support to search and rename variables and functions in text value templates.

Documentation for Current Functions and Template Presented in the Content Completion Window

When using a function or a template defined in the current XSLT stylesheet, the documentation for that function or template (and for its parameters), is now presented in the content completion window. This helps you to understand the purpose of the function/template.

Temporary XPath Expressions Added if the Debugger is Stopped

If the XSLT debugger is stopped on an if or when instruction, the XPath test expression is temporarily added in the XWatch view so you can easily see the condition result before executing the instruction.

Support to Override Parameters in XSLT Modules

When editing XSLT that references modules, if you try to define a new parameter, the content completion list shows the names of the parameters defined in the modules so you can select one if you want to overwrite its default value.

Improved Extract Template Refactoring Action

The Extract Template refactoring action that extracts a fragment as a named template now adds type information to the variables or parameters used in the new template.

Convert xsl:attribute Elements to Inline Attributes

You can now convert xsl:attribute elements to inline attributes for elements outside the XSL namespace.

Schematron Quick Fixes

Multilingual Support for Quick Fixes

Added support to present the quick fix name and description in the language specified in the Oxygen options. On the development side, this includes support for content completion, search and refactoring, and syntax highlighting.
Multilingual Support for Quick Fixes

Generate Multiple Similar Fixes

You can now generate multiple similar fixes that are instantiated for each match of the newly added use-for-each attribute. Each match is accessible with the $sqf:current variable. For example, if your fix applies the same processing to elements that match a specific condition, then you can define the fix once and specify the matching condition in the use-for-each attribute to generate a fix for each such element.

Added Support for the flags Attribute for String Replace Operations

Added Support for the flags attribute in the sqf:stringReplace operation. It is used to specify flags to control the interpretation of the regular expression (given in the regex attribute), to ignore case when matching, for example.

Content Completion, Search and Refactoring for User Entries

SQF user entries defined locally inside sqf:fix elements are presented as variables by the Content Completion Assistant in an Attribute Value Template or in attributes that contain an XPath expression. Their references can be identified and they can be easily renamed using the search and refactoring support.

sqf:keep Element Changed to sqf:copy-of

The sqf:keep element was renamed as sqf:copy-of and the element with its attribute is treated similar to the xsl:copy-of with a select attribute, as defined in the XSLT specification.


Syntax Highlighting for Embedded JSON Scripts

Improved the syntax highlighting for JSON scripts embedded in XHTML documents.

JSON Syntax Highlights in Codeblocks

Added JSON-specific syntax highlights for DITA codeblock elements when publishing to XHTML-based and PDF outputs. This works when codeblock elements are marked using the outputclass attribute with the language-json value.

Editing JSON Arrays Improvements

When editing JSON documents, arrays can now be folded using the collapse/expand arrow. The format and indent operation was also improved for JSON arrays.

JSON Formatting when Converting XML to JSON

When using the action to convert XML to JSON, the generated JSON file is automatically formatted and indented.


XSpec Helper View Add-on

A new add-on is available that contributes an XSpec Test Results view in Oxygen. It provides a built-in tool to help you run XSpec test scenarios and view the results directly in the application. For more information, please visit: https://github.com/xspec/oXygen-XML-editor-xspec-support.

XSpec Tests for Schematron Files

Oxygen includes the latest XSpec (version 1.0.0) that provides the ability to create and run unit tests for Schematron files. The support includes a new fie template for testing Schematron schemas, content completion showing the Schematron specific markup, as well as executing the tests.

Improved Content Completion Suggestions in XSpec Files

The Content Completion proposals in XSpec files were improved to offers proposals for global parameters, template names, or functions names.


Editor Variables that Point to a Plugin Folder

Every Oxygen plugin includes a unique ID it its plugin.xml file. Two new editor variables (${pluginDirURL(pluginID)} and ${pluginDir(pluginID)}) are now available that are resolved to the folder that contains the plugin.xml file, providing a URL or a file path, respectively.

Duplicate Lines in Text Mode

New shortcuts were added that duplicate selected lines (or the current line) and inserts the duplicate content above or below the current selection/line. On Windows/Linux, Ctrl + Shift + ↑ duplicates the selection/line upward, while Ctrl + Shift + ↓ duplicates downward. On Mac OS X, the shortcuts are Alt + Shift + ↑ and Alt + Shift + ↓, respectively.

Added Content Completion and Syntax Highlighting for the ISO Schematron documents Attributes

For the Schematron pattern element, in the value of the documents attribute, the content completion list now offers proposals for functions, variables, and XPath expressions. Also added support for XPath syntax highlighting in the documents attribute.

Copy Description Text from the Results Panel

In the contextual menu of the Results panel, there is now a new action that copies the description text of the selected items. For example, this can be used to copy the results of an XPath search operation.


Set a Status Message and Color

Added a new API method: WorkspaceUtilities.showStatusMessage(String, OperationStatus). It can be used to set a message and its color in the Oxygen status bar.

Set and Get Multiple String Values for an Option

Added two new API methods: WSOptionsStorage.getStringArrayOption(String, String[]) and WSOptionsStorage.setStringArrayOption(String, String[]). They can be used to set and retrieve multiple string values for an option.

Text Field with Undo Support

Added the ro.sync.exml.workspace.api.standalone.ui.TextField API component that has undo support and a contextual menu with editing actions.

Customize the Project View

Added an API method: addRendererCustomizer(ProjectRendererCustomizer) for the ProjectController API that allows you to customize the Project view (for example, you can provide specific tooltips or icons).

Contribute External XProc Engine

A new plugin extension type called AdditionalXProcEngine can be used to contribute a folder that contains an external XProc engine. After installing the plugin, when you run an XProc transformation scenario, your external XProc engine can be selected from the Processor drop-down menu.

Translate the Interface into a New Language

A plugin extension was added to the Oxygen SDK that allows you to localize the Oxygen interface into a new language and you can select that language from the Global preferences page.

Component Updates


Updated the built-in Saxon engine to its current latest version, Saxon

Saxon 9.7 Transformer Available as External Add-on

The previous version of Saxon, 9.7 can be used as an external transformer, an add-on based on version is available.

focheck 0.6.1

The bundled focheck framework (https://github.com/AntennaHouse/focheck) developed by Tony Graham and used in Oxygen to offer enhanced XSL-FO validation, was updated to version 0.6.1.

DITA-OT 2.5.4

Updated DITA-OT to the latest 2.x version, DITA-OT 2.5.4.

Lightweight DITA

Updated the Lightweight DITA framework to support the latest available DTDs made available in the public review draft from February 13, 2018. Note that Lightweight DITA support is experimental and its status is work in progress.

Calabash 1.1.19

Updated the Calabash engine to version 1.1.19, which is compatible with Saxon 9.8.

XSpec 1.0.0

Updated XSpec to the latest version, XSpec 1.0.0.

TEI Schemas 3.3.0

Updated the bundled TEI schemas to version 3.3.0.

TEI XSLT 7.44.0

Updated the bundled TEI XSLTs to version 7.44.0.

W3C CSS Validator

Updated the W3C CSS validator to support the latest CSS 3 properties.

eXist 4.0

Updated Oxygen to work with eXist 4.0.

Oxygen PDF Chemistry

New CSS Extension Properties to Control Page Sequence Placement

Two new CSS extension properties were added (-oxy-initial-page-number, -oxy-force-page-count). For instance, these allow you to specify whether chapters should start (or end) at odd or even pages, and additional blank pages will be added if needed.

Added -oxy-page-group CSS Extension Property for Forcing Page Sequence Breaks

Chemistry now fully implements the W3C specification regarding the page sequence breaks between elements that have different page names. Elements in a sequence that use the same page name are left in the same page sequence (group). If you need to change this behavior (i.e. to create a new sequence for each element even if it has the same page as the one before it), you can use the -oxy-page-group : start CSS extension property.

Support for PDF Named Destinations

Chemistry now supports named destinations, providing a way to link to a particular anchor within a PDF document. For any element with an ID attribute, you can create a link to its PDF location using '#id' as an anchor into the PDF URL. For example: http://example.com/sample.pdf#introduction.

Support for transform CSS Property

Chemistry supports the transform CSS property for page margin boxes. This is helpful for creating vertical text around the page.

Enhanced Hyphenation Properties

Hyphenation properties can now be applied also to inline elements.

Aggressive Hyphenation

When hyphenation is enabled, Chemistry adds hyphenation breaking points after underscores, dots, and before case changes, in addition to the ones driven by dictionaries. This is useful when your publication contains snippets of code (Java, etc).

Additional Hyphenation CSS Extension Properties

Some hyphenation CSS extension properties were added (-oxy-hyphenation-character, -oxy-hyphenation-push-character-count, -oxy-hyphenation-remain-character-count). These allow you to control the number of characters remaining before or after the break position as well as the hyphenation symbol.

Support for overflow-wrap CSS Property

Chemistry now supports the overflow-wrap:break-word CSS property.

Compact Large Tables

You now have the possibility to use hyphenation in tables when the layout is set to automatic. This is helpful for compacting large tables that bleed out of the page space.

Table Column Styling Improvements

The properties set on a column element (with display:table-column) are applied to the cells from the corresponding column.

Support for font-variant CSS Property

Chemistry now supports the font-variant:small-caps CSS property.