What's New in Oxygen XML Developer 23.0

November 19, 2020

Related version: 23.1    

Version 23.0 of Oxygen XML Developer boasts the most substantial and comprehensive set of new features, productivity enhancements, and customization possibilities in the history of the most powerful XML development tool available on the market.

This major release introduces lots of improvements for CSS, HTML, JSON, and XSLT document types, as well as an impressive list of improvements and updates to Add-ons and command-line scripts. As usual, you can also find new API entry points, various bug fixes, component updates, and much, much more.

There are changes in:

Diff and Merge Support for Eclipse

Compare XML Content in Oxygen's Text-based Diff Mode

The Oxygen diff and merge support in the Eclipse plugin now includes a text-based mode with all the features and options that are available in the Standalone version of Oxygen. Thus, XML-related content can now be compared in either the text-based mode or the visual comparison mode and it is very easy to switch back and forth between the two modes.

Compare DTD Documents

The diff and merge support in the Oxygen Eclipse plugin now includes the possibility of comparing DTD documents.


Batch Convert HTML to Well-formed XML

The HTML to XML Well-formed action is now also available in the context menu of the Project view when you have selected multiple project resources. It converts the selected HTML documents into well-formed XML, by automatically closing unclosed tags, properly quoting attribute values, and more.
Batch Convert HTML to Well-formed XML

Validate XHTML with W3C Nu HTML Checker

A new built-in validator engine called W3C XHTML Validator, based upon the W3C Nu HTML Checker, can now be used to validate XHTML documents in Oxygen. More information about this validator engine is available in the user guide.


Generate Documentation for a JSON Schema

Oxygen now provides the JSON Schema Documentation action that allows you to generate HTML documentation for a JSON Schema file. This functionality is provided as an add-on and it is installed automatically the first time you invoke the action from the Tools->Generate Documentation menu.
Generate Documentation for a JSON Schema

Choose Version in JSON Schema Generator Tools

There is now an option in both the Generate JSON Schema and XSD to JSON Schema tools where you can choose the version of the resulting JSON Schema. You can choose between: Draft 4, Draft 6, Draft 7, or Draft 2019-09.

Control Upper/Lower Case in the XSD to JSON Schema Tool

The XSD to JSON Schema tool now includes an option to preserve the case of names from the XSD. You can enable this option if you want the names from the XSD to remain unchanged in the resulting JSON Schema. Otherwise, the default JAXB naming algorithm will be applied.

Improvements to Conversions Between XML and JSON

Improvements were made to the processes that convert XML to JSON and JSON to XML. Some of the changes include:
  • Elements with the same name in mixed content are now handled properly.
  • Empty XML tags that are not self-closing are converted to empty JSON objects and vice versa.
  • Whitespaces are now preserved.
  • Empty arrays, single element arrays, and nested arrays are now properly converted.
  • The /, ', ", > characters are no longer escaped from XML text values.
  • The colon (:) character is escaped from XML tag names to avoid namespace conflicts.


XSLT 3.0 Content Completion Improved

The required attributes in an XSLT 3.0 stylesheet are now automatically added when elements are inserted from the content completion window.

Content Completion for Text Value Templates Improved

The content completion list for XSLT 3.0 Text Value Templates now proposes elements and attributes from the XML instance.

Emmet Plugin Automatically Installed for XSL

The Oxygen Emmet Plugin is now automatically installed for XSL documents when you right-click anywhere in the editor pane and select Emmet from the pop-up menu.


Oxygen provides access to a variety of add-ons that extend the functionality of the application.

Git Client Improvements

Various improvements were made to the Git Client add-on since the last major release:
  • The Git Client now contributes a new side-view, called the Git Branch Manager, which presents all the local and remote branches as a tree. Actions were added to the tree's contextual menu to make it very easy to check out branches, and to create or delete branches.
  • You can now easily switch between local branches using a drop-down menu from the top-right corner of the Git Staging view or by using the Git Branch Manager.
  • The JGit component included in the Git Client was updated to version 5.9.0.
  • Some editor variables are now supported, including: ${git(working_copy_name)}, ${git(working_copy_path)}, ${git(short_branch_name)}, ${git(full_branch_name)}.
  • You can now undo changes by moving the HEAD of the current branch to the selected commit using the new Reset "[branch_name]" to this commit action.
  • Various actions and options were added to enhance the Git Client. For example, you can amend the last commit, automatically push changes to the remote repository, compare two revisions of the same file, reset stored credentials, and more options to create a new branch.

For a complete list of updates added in version 2.2.0 of the Git Client, see https://github.com/oxygenxml/oxygen-git-plugin/releases/tag/2.2.0.

For a complete list of updates added in version 2.3.0 of the Git Client, see https://github.com/oxygenxml/oxygen-git-plugin/releases/tag/2.3.0.

Git Client Improvements

Convert Sections in a Word Document to DITA Topics

A new option (Create DITA maps from Word documents containing multiple sections) was added for the Batch Converter add-on. When selected, all sections from your Word document marked by titles or headings will be separated into individual DITA topics and their references will then be added in the DITA map.

Translator Helper

The Translator Helper add-on is now available in Oxygen to provide experimental support to authors working in the localization industry. Once the add-on is installed, you can use Google Translate to create a translation for your XML content into a new language.

Vale Validation for Markdown and HTML Files

A new add-on, Vale Validation, allows you to run the Vale Linter validation tool over the currently edited Markdown or HTML file. It automatically verifies specific rules against your code or documentation. This is useful for enforcing a style guide or for catching commonly mistaken branding issues.


The all platforms distribution of Oxygen is bundled with a scripts sub-folder that contains scripts for automating and running various utilities from a command line. To run any of these scripts, you are required to purchase a special scripting commercial license.

Validate DITA-OT Project Files

The DITA Map Validation and Check for Completeness command line script was improved to support validating DITA-OT project files. The DITA-OT project is specified using the -i argument, while the context is specified using the -c argument.

New Command Line Launcher for the DITA Translation Package Builder

The OxygenDITA Translation Package Builder can now be launched from a command line. It requires a special scripting commercial license. This DITA Translation Package Builder contributes context menu actions that help you build a translation package for DITA files that can be sent to translators. You can also extract the changed files back into your project once you receive the package back from the translators.

New Command Line Launcher for the Batch Converter

The OxygenBatch Converter tool can now be launched from a command line. It requires a special scripting commercial license. This Batch Converter script helps you to convert files between various formats, such as Word to DITA, HTML to DITA, XML to JSON, Markdown to DocBook, and many more.

New Command Line Launcher for Transformation Scenarios

It is now possible to run transformation scenarios from a command line interface. The Transform script requires a special scripting commercial license and it allows you to run transformation scenarios.


Quickly Find and Invoke Actions

Oxygen now includes a Find action feature (available in the Help menu) that provides a very quick way to find actions that are available throughout the application. You can also assign shortcuts for particular actions and you can invoke actions using this feature.
Quickly Find and Invoke Actions

Create New Projects from a Template

The New Project action now opens a wizard (similar to the New document wizard) that allows you to create a new project from an existing template. For more details, see Creating a New Project.

Profiling Attributes/Condition Text Options Pages Fine-Tuned

The options pages specific to profiling attributes and conditional text were fine-tuned to provide a better control at project level and smoother user interaction. Also, a performance issue was fixed. It involved the project file being continuously modified by Oxygen when the profiling options were temporarily changed.

Content Completion Feature Now Considers Sibling Elements

A new option (Consider subsequent sibling elements) was added in the Options->Preferences->Editor->Content Completion settings page. When this option is selected (the default behavior), subsequent siblings of the current element are taken into account when using the Content Completion Assistant. For example, in DITA, if you invoke the Content Completion Assistant before an already inserted required title element, it will not offer a proposal to insert a title (since it already exists).

Enable Spell Checking in Processing Instructions

In the Spell Check preferences page, processing instructions was added to the list of the XML Spell Checking In option. It is disabled by default. Enabling it means that the spell checker will detect spelling errors in XML processing instructions.

Reuse XPath Expressions and Operations When Defining External Actions

When defining custom external actions, you can now reuse XPath expressions and operations by referencing them using XInclude. For more information, see Creating and Customizing Actions for a Framework.


Call the BatchOperationsListener API When Multiple Referenced Files are Saved

When a document that contains multiple references to other documents is saved and the referenced content is modified and also saved, the BatchOperationsListener API will get called for each saved document content.

Create Custom URL Choosers

The newly added OxygenUIComponentsFactory.createInputURLPanelProvider API can be used to create a custom URL chooser component. For example, you can control the label, choose whether or not to display the editor variables button, and more.

Determine if Keyboard Focus is Inside an Editing Mode

The hasFocus() method was added to the WSEditorPage API. It can be used to determine if the current editing mode has the keyboard focus.

Get Details About a Fragment of Text

The getNode() and inSpacePreserve() methods were added to the TextContext API and they can be used to find out more details about an iterated fragment of text.

Match URL Based on its Parameters

The DocumentTypeAdvancedCustomRuleMatcher.matches(String, String, String, String, String, Attributes, Map<String, String>, Reader) API was added and it allows Oxygen to match a framework configuration for an XML file based on the parameters set in the URL string.

Terms of Use Changes

Saxon PE and EE Limitations

The API for creating XSLT and XQuery transformers (using the XMLUtilAccess interface) can no longer be used to create processors for Saxon Professional Edition (PE) or Saxon Enterprise Edition (EE).

Content Fusion Connector Add-on no Longer Bundled with Oxygen

The Oxygen Content Fusion Connector add-on is no longer bundled with Oxygen XML Editor/Author, but it can be installed as an optional add-on.

Command Line Scripts Now Only Bundled with the All Platforms Distribution

Command line scripts (e.g. the WSDL documentation generator, the XSLT documentation generator, etc.) are now only bundled with the Oxygen All Platforms distribution and require a special scripting license.

Certain Validation Processors Now Deprecated

The MSXML 4.0, MSXML .NET, .NET 1.0, .NET 2.0, XSV, and SQC processors used for validation and publishing are now deprecated and will be removed in the next major version.

Injecting a License Key in the Author Component Now Deprecated

The ability to register a fixed license key in the Author Component is now deprecated and will be completely removed from the code in the next major release.

Apache Xalan Now Deprecated

The Apache Xalan XSLT processor is now deprecated and will be completely removed from the code in the next major release.

Component Updates

Antenna House FOChecker 0.7.8

Updated the bundled Antenna House FOChecker to version 0.7.8.

Apache Ant 1.10.9

Updated Apache Ant to version 1.10.9.

Apache Batik 1.13

Updated the Apache Batik SVG toolkit to version 1.13.

Apache FOP 2.5

Updated Apache FOP to version 2.5.

Apache Commons IO Library 2.8.0

Updated the Apache commons-io library that is bundled inside FOP to version 2.8.0.

Apache POI 3.17

Updated the Apache POI library to version 3.17.

Apache XML Graphics 2.4

Updated the Apache XML Graphics Commons library to version 2.4.

Calabash 1.2.5-99

Updated the Calabash engine to version 1.2.5-99.

DITA Open Toolkit 3.5.4

The DITA Open Toolkit version bundled with Oxygen was updated to 3.5.4.

Eclipse 4.17

Updated the Eclipse plugin to support version 4.17.

Eclipse 4.4 is Now the Minimum Required Version

The Eclipse plugin now requires a minimum of Eclipse version 4.4.

EPUBCheck 4.2.4

Updated the EpubCheck library to version 4.2.4.

TEI Schemas 4.1.0 and TEI XSL Stylesheets 7.50

Updated the bundled TEI schemas to version 4.1.0 and the TEI XSL stylesheets to version 7.50.

Java Native Access Libraries (JNA) 5.6.0

Updated the bundled Java Native Access (JNA) libraries to version 5.6.0.