What's New in Oxygen XML Editor 23.0

November 19, 2020

Related version: 23.1    

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

This major release introduces lots of improvements for the DITA authoring community, productivity boosts for general visual editing, speed optimization for publishing large DITA projects, the CSS-based publishing support was further enhanced with numerous new customization possibilities, enrichments for DocBook, CSS, HTML, JSON, and XSLT document types, as well as an impressive list of additions 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:

DITA Authoring

Floating Toolbar Provides Quicker Access to Common DITA Editing Actions

When editing DITA documents, you can now quickly invoke context-specific common actions. They are available in a floating toolbar that pops up when you select content. For example, if you select content inside a paragraph element, the floating toolbar includes common styling actions such as Bold, Italic, Underline, Subscript, Superscript, as well as actions for inserting code snippets or various types of links.

Floating Toolbar Provides Quicker Access to Common Editing Actions

Edit Submaps Directly in the DITA Maps Manager View

You can now edit submaps (i.e. add topics, change properties, or move topic references) directly in a main map opened in the DITA Maps Manager view. To do this, you need to enable the Allow referenced submaps to be edited option in the DITA -> Maps preferences page.

Edit Submaps Directly in the DITA Maps Manager View

Edit Referenced Content When Opening a DITA Map With Expanded Topics

A DITA map opened using the Open Map in Editor with Resolved Topics toolbar button from the DITA Maps Manager is displayed with all of the content from its topic references expanded and editable in-place. This is possible if you enable the Allow referenced content to be edited from Editor->Edit Modes->Author preferences page.

Edit Referenced Content When Opening a DITA Map With Expanded Topics

Support for Creating DITA 2.0 Maps and Topics

DITA 2.0 maps and topics can now be created from new document templates. You just need to select the Enable DITA 2.0 editing support from the DITA preferences page

New DITA-Related Project Templates

To help you get more familiar with how to use projects in DITA, there are two DITA-specific sample project templates available when using the New Project action. The DITA Project With Editing Customizations template exemplifies how DITA editing can be customized for a team of writers using project-level options, while the Sample DITA Project shows best practices for how a DITA project should be organized.

Context Drop-Down in DITA Maps Manager Improved

The order of the DITA-OT contexts that are presented in the Context drop-down menu on the DITA Maps Manager toolbar was improved. They are now grouped by input DITA map and the most relevant group is presented first (the group that contains the currently open input DITA map).

New Author Actions Added in Contextual Menu

More author actions are available in the contextual menu when editing a DITA topic. They include the Insert Menu Cascade action in the Insert submenu and the UI Control and Filepath actions in the Style submenu.

Resource-Only Topic References Easier to Spot

References to resource-only topics that have the preocessing-role attribute set to "resource-only" can now be more easily recognized in the DITA Maps Manager. They are marked with a gray dot in the bottom-right corner of the reference's icon.

Topic Validation Reports Missing IDs in References

DITA topics often contain direct or indirect references (links or content references). If the topics are located on a local drive and the referenced IDs are missing, Oxygen will report these IDs as errors.

DITA Publishing

Run Multiple Transformations on a Single DITA Map in Parallel

To help you reduce the amount of time consumed by the publishing phase, Oxygen now offers parallel execution of DITA-OT or Ant-based transformation scenarios. You can access this new option, called Run in parallel (DITA-OT and Ant scenarios), simply by selecting multiple transformation scenarios in the Configure Transformation Scenarios dialog box.

Run Multiple Transformations on a Single DITA Map in Parallel

DITA-OT Memory Usage Optimized

The memory usage and speed of the DITA-OT publishing engine were optimized for very large projects that contain lots of folders and topics.

CSS-Based DITA to PDF Publishing

Image Maps Now Fully Supported

Image maps are now fully supported in CSS-based PDF output. The shapes that are defined in the image map are rendered in the output as clickable areas within the image and the list of links are presented below the image. Two new parameters (show.image.map.area.numbers and show.image.map.area.shapes) are used to instruct the publishing engine to make the numbers and shapes visible in the output. For more details, see How to Use Image Maps.

DITA <svgref> Element Now Supported

The DITA <svgref> element is now supported. It can be used to reference a fragment from an XML document that stores multiple SVG graphics.

Sections Now Included in Deep Numbering

By default, sections are now numbered when you set the args.css.param.numbering parameter to a deep numbering type. It is also possible to exclude sections from the numbering.

Controlling Where Navigation Titles are Displayed

A new customization parameter, called use.navtitles.in.all.links, now allows you to specify whether a navtitle defined in a topic or a topic reference should be used as the display name for all links or only in the table of contents.

New Parameter for Controlling the Version of the PDF

The new pdf.version transformation parameter can be used to specify the version of the produced PDF.

CSS PDF Processor Bug Fixes and Improvements

A lot of work was done on improving the Oxygen PDF Chemistry processor. To see a list of all the bug fixes, component updates, and improvements, see the What's New in Oxygen PDF Chemistry 23.0 webpage.

Visual Editing

Extend a Framework Using a Special Script

You can now define a new framework through an XML descriptor file instead of using the GUI. In this descriptor, you can choose to extend an existing framework (such as DITA) and make changes to it, or start from scratch.

Insert Tables in JATS Documents

It is now possible to use the table-related actions on the toolbar (or in the context menu) to insert and edit tables in JATS documents. The actions support inserting and modifying HTML-style tables.

Copy XML Structure to the Clipboard

You can now select content from an XML document opened in Author mode and invoke a new action called Copy as XML from the Document->Edit menu to copy the corresponding XML structure to the system clipboard.

New Shortcut to Select Element Content in Author Mode

The Alt + [Mouse Triple-Click] shortcut can be used to easily select strictly the content of an element in the Author visual editing mode.

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.

Automatically Switch to the Text Comparison Mode When no CSS is Detected

If a document does not have a CSS associated (either directly in the file or contributed by the framework), the document will be automatically compared in the text-based comparison mode.

Compare DTD Documents

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


Floating Toolbar Provides Quicker Access to Common DocBook Editing Actions

When editing DocBook documents, you can now quickly invoke context-specific common actions. They are available in a floating toolbar that pops up when you select content. For example, if you select content inside a paragraph element, the floating toolbar includes common styling actions such as Bold, Italic, Underline, Subscript, and Superscript.


Support for the border-radius CSS Property

Now you can round border corners using the border-radius CSS property in both the standalone and Eclipse distributions.

Display a Floating Toolbar Configured with CSS

The new -oxy-floating-toolbar CSS property can be used to display a floating toolbar when content is selected in Author mode. You can customize this toolbar to provide actions commonly used in a particular context.


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.


JSON Visual Editing Mode

You can now edit JSON and JSON Schema documents in the visual Author editing mode and you have access to the various features and actions that are available for XML documents. You can also create your own custom JSON framework, similar to the process for creating custom XML frameworks. Other features for the JSON visual editing mode include:
  • Content completion support based on a JSON Schema - The properties and values that can be inserted in a certain context are presented in the content completion window.
  • Validation - You can validate JSON documents against a JSON Schema or a Schematron schema, directly in the visual editing mode.
  • Execute XPath expressions - Support was added to execute XPath expressions over JSON documents in the visual editing mode using the XPath toolbar or XPath/XQuery Builder view.
  • Built-in frameworks - Built-in frameworks where added for JSON, JSON Schema, and OpenAPI (Swagger) documents, but you can also find a set of sample frameworks in the [OXYGEN-INSTALL-DIR]/samples/json/author/ folder.

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.

Terminology Checker

A new add-on is available that provides experimental support for a terminology checking tool. Once the add-on is installed, you can create a terminology file with a set of rules for each term (or sequence of characters) you want flagged. After referencing the custom file, Oxygen will automatically highlight matched terms in Author mode and offer some contextual menu actions for replacing the highlighted content.

The terminology checker was also updated with more features such as support for regular expression matches, replacements with XML content, and various severity levels for the matches. A small set of Vale rules implemented in Yaml is also supported. For more details, go to https://github.com/oxygenxml/oxygen-terminology-checker-plugin.

Terminology Checker

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.

Improved Speed When Editing Hebrew Content in Author Mode

The overall Author mode performance was improved when editing XML documents that contain Hebrew characters.

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 Combo Box Form Controls

The OxygenUIComponentsFactory.createComboBox API can be used to create a combo box similar to those found in various places in the application's interface.

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.

Control the Names of DITA Keys

The newly added DITAAccess.setKeyNameGenerator(DITAKeyNameGenerator) API can be used to control the naming convention for DITA keys that are automatically generated when the Use the file name as the value of the "keys" attribute for topic references option is selected in the DITA->New Topics preferences page.

Edit Referenced Content

Two new methods were added to the AuthorReferenceResolver API. The hasEditableReference(String, AuthorNode) and saveModifiedReference(AuthorAccess, AuthorReferenceNode) methods can be used to provide the possibility to edit referenced content in a framework extension and save the changes back in the original target.

Add Pseudo-Classes to a Document Before Loading

The new createAuthorPreloadProcessor() method was added to the ExtensionsBundle API and it allows you to add pseudo-classes to a document before it is loaded.

Preserve Tracked Changes in a Document Fragment

A new createDocumentFragment(int startOffset, int endOffset, boolean preserveTrackChange) method was added to the AuthorDocumentController API that makes it possible to preserve tracked change information in a document fragment, even if change tracking is disabled in the current document.

Hide Various Parts of an Author Component

Two new methods (showRangeRuler(boolean) and showValidationStatusBar(boolean) were added to the WSAuthorComponentEditorPage API. They can be used to hide various parts of an Author mode component constructed via the API.

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.

Obtain Styles for Pseudo-Elements

The getPseudoElementStyles(AuthorParentNode) method was added to the WSAuthorEditorPageBase API and it is used to retrieve the styles for the :before, :after, and :marker pseudo-elements that correspond to a node.

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.