What's New in Oxygen XML Developer 20.0

Related Versions: 20.0

March 16, 2018

Version 20.0 of the Oxygen XML Developer brings you a variety of new features and improvements that focus on productivity, efficiency, and simplicity to enhance your XML development experience.

This full release includes 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:


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.

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

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

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.