Friday, December 19, 2014

Oxygen XML Editor 17's Christmas List

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr

Ho, ho, ho. Merry Christmas boys and girls!

I heard you've been good little children, spreading the XML wisdom throughout the year and revealing your inner geeky nature. Santa Oxygen has read your wish lists, assigning priorities and is filling his big bag of toys for the version 17 release. As Santa is quite old and the toys need to be checked and rectified for defects, Oxygen 17 will arrive in Spring next year but if you want to test the latest toys, just drop us an email and we'll make a beta kit available for you.

Just to help you get into the Christmas spirit, here are some of the goodies we've worked on so far:
  1. The DITA Preferences page. Because we love DITA so much we decided to create a brand new DITA page in the Oxygen Preferences dialog. The most important setting in the new page allows you to change the default DITA OT directory used for validation and transformation.
  2. DITA Unreferenced Resources Finder. Use this handy new tool to find all resources (images, DITA topics) which are not referenced from your DITA Maps and topics. We've been using this check internally for years to delete unnecessary resources and now we are making it available for you.
  3. Publish DITA content to PDF using CSS and the Prince XML commercial processor. The first stable version of the new DITA Open Toolkit plugin we've also made public on GitHub will allow you to style PDF content by making CSS changes and avoid a lot of XSLT customizations.
  4. Fully re-designed DITA visual editing experience. Our head elf has been revising every element in the DITA specification and completely redesigned the CSSs used to edit DITA based on minimalism and closeness to the published XHTML and PDF outputs.
  5. CSS visual layouts for DITA editing. Besides the minimalist editing style you will be able to use the Styles drop-down to choose from a number of fun editing layouts. I'm not going to ruin the surprise, as an inside info, one of the new editing styles will be called Roboto.
  6. WebHelp output improvements. The WebHelp output obtained from DITA and Docbook content will have the search box which placed in the upper right corner for easier access. It will also feature navigation based on context IDs in order to be more easily integrated in an application contextual help system. And yes, it will also load faster.
  7. Predefined Color Themes. Speaking of enhanced visual appearance, you will have an array of predefined color schemes to choose in order to completely change the visual appearance of the application, starting with Graphite and ending with the exotic Sahara.
  8. Locking for shared files. Despite our recommendations of using version control systems or commercial CMSs, some of you are still naughty enough to collaborate on a project using shared network drives. We added a special setting (which must be enabled for everybody working on a shared network drive) to avoid overwriting other people's work when editing.
  9. Saxon 9.6 XSLT Processor. Oxygen 17 will be shipped with the latest Saxon 9.6 XSLT processor. So if you're into XSLT, XPath and XQuery 3.0, this will be a good component update for you.
The bag is almost full now but if time allows we might also have the time to look into adding these new toys as well:
  1. Better support for working with multiple selected cells in tables. Like support for multiple join and split cells, support for copy pasting of multiple cells.
  2. Auto correct support. Even Santa would find those useful to avoid teh most common editing mstakes when working on this Christmas list. Both in the Text and Author pages? I would like to have both. How about you?
  3. Toolbar Customization support. We finally want to allow you to remove the access and create the perfect toolbar layout, with only the buttons you need and use daily.
  4. Apply Batch Changes on a set of resources. A powerful engine based on XQuery will allow you to chose various change scripts to apply on a set of resources. For example remove certain attributes, add new elements and attributes, convert elements and so on. And if you are a power user, you will be able to edit your change scripts directly in XQuery.
  5. Redesigned DITA Insert Image actions. The newly redesigned Insert Image dialog should allow you to set the most common used attributes on an image like alignment, scaling, even to add directly a figure.
  6. Proper support for high DPI resolutions both on Windows and Mac OSX.

Well, that's about it. Santa's got to go and re-watch his favorite DITA OT Day Presentations then prepare for the upcoming XML Prague Oxygen Users Meetup Conference which is still opened for registration. The Oxygen office Christmas Party takes place tonight and I heard there will be lots of food and good spirits.

Happy holidays everyone. Ho, ho ho!

Wednesday, November 26, 2014

Collaboration for Documenting a Software Product using DITA

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr

Besides working on an XML Editor with lots of DITA editing functionality we also use DITA internally for editing the Oxygen User's Guide.

In this article I will try to give you an overview of our entire workflow as evidence that DITA does work and that it can be used and implemented without expensive solutions.

First here's an overview of our needs:
  • Offline Help which is available inside the installed application. Oxygen is a multi-platform application so we need to generate both HTML Help (CHM) for Windows and JavaHelp for the Mac OSX and Linux installations. Also for the Oxygen Eclipse Plugin we need to generate Eclipse Help.
  • Online Help which is available as WebHelp with Feedback on our web site and allows users to add comments to each topic. Those comments can then be used by us to rephrase and improve our documentation.
  • PDF containing the entire contents of the user's manual. Nowadays most our users use the online WebHelp because it can be used much easier for finding certain topics so in our case at least the PDF output is not popular anymore along users.

We have two main distributions (Standalone and Eclipse plugin) and three main products (Editor, Developer and Author). So we need to produce about six (6) different publications from the same DITA content depending on the shipped product.

And here's an overview of the tools we use:

Oxygen XML Editor

This may not come as a surprise but we use our own product to edit DITA content, partly because it's ours and partly because it is a very good tool. During the last couple of years this has been a good opportunity to improve our product based on our own feedback (feedback coming from our technical writers).

Oxygen is used in two ways:
  1. By the technical writers to write DITA content.
  2. By the reviewers to review documented issues by adding comments, making changes with change tracking enabled.

DITA Open Toolkit + WebHelp plugin

We use the DITA Open Toolkit to publish DITA content to the outputs we are interested in. The WebHelp and WebHelp with Feedback outputs are our own additions to the DITA Open Toolkit. But we do not use any special customizations for the other outputs.

Jenkins integration server

We have an automated script which builds all the user manual outputs every night.

Automated DITA Content Validation

There is a script which runs on a test server and does three types of checks on the DITA content:
  1. Validate and check for completeness, check for broken links, images, broken web links and so on.
  2. Check and report topics, resources and images which are no longer referenced anywhere.
  3. Spell check the entire DITA content.

Git as a version control system

For a long time we used Subversion for version control. Recently we moved our DITA content to a private GitHub repository and we also made a public GitHub repository containing a copy of our user manual's DITA content: We use the SourceTree application to work with Git and we are quite happy with it.

Atlassian Jira for workflow

We use Atlassian Jira to provide a workflow both for the issues which are related directly to our software product and for the issues which are related exclusively with our user's manual. The JIRA is integrated with both our SVN and GIT repositories so it shows for a certain issue all resources which have been modified to fix it.

More details about how with work with DITA can be found in these slides I presented at DITA Europe 2014:

Video demonstration showing how collaboration on a technical publication with Subversion can be achieved:

Saturday, November 15, 2014

Alternate sales pitch

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr

This year was my first participation at Tekom Europe, we had lots of discussions with interested potential customers and one of them asked me to give him my sales pitch of why he should buy my product instead of a competitor's one. I'm not a salesman. I've always wanted to work for a product which is so good that it sells itself. And I do.

So here's my alternate sales pitch:

Ideally whenever you choose between any two software products which will be used daily by people in your company you should make a pilot test project with two user groups made of the people who will be actually using the product after it is bought. Ask them to use the product for a month performing tasks similar to what they will do after the purchase. Ask the two user groups at some point to switch products and see how that goes. And in the end let most of the decision to be made by these people who will actually be using the product in their work.

Working for an extended period of time with the product will also show how stable the product is, if it crashes often, if it has small annoying bugs and if it sometimes behaves unpredictable.

We are a productivity application and in my opinion the goals of such a type of application would be these ones:
  • shorten the amount of time users spend doing their daily tasks
  • allow users to fulfill their tasks with the least amount of frustration, let them concentrate on what should be done and not on the tool which is used in that process, be intuitive and easy to use

Look what types of operating systems are used in your company, can the tool run on all of them?

Read the product's End User License Agreement, I know it's a boring task but you might find some gems in there. For example does the user based license allow the user to install the product on multiple computers as long as he/she is the only one using it?

During the trial period ask questions on the technical support email address.
  • Are they responsive?
  • Are they helpful?
  • Do they know what they are talking about?
  • Do they go that extra mile to help you?
  • Is there a public forum available? Is it well kept, does it have a lot of activity?
  • Is there an user's list available? Register on it, see how questions are answered.

Find out how long the company which makes the product has been in business. Google the product online, read blogs and look for opinions on it.

In the end it will come down to two things: quality and price. But you need to make sure you are listening to the people who will actually use the application.

Tuesday, November 04, 2014

Public hosted Oxygen Plugin and Framework Projects

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
All resources, Frameworks and Plugins which we make publicly available to contributors can be found on the oxygenxml GitHub group:

Besides there are interesting Oxygen plugins and frameworks which are developed as separate public projects and maintained by third parties (either users or companies). I will try to compile a list below:

  1. Project Argon by German company Axxepta provides a plugin which can connect Oxygen to a BaseX server: The integration also provides CMS-like capabilities for searching and version control.
  2. You can define terminology terms and then create Schematron rules for them using the Doctales terminology checker Oxygen framework:
  3. Three open-source frameworks for editing ATA-2300, S1000D and RIF XML documents in Oxygen developed by Amplexor:
  4. Besides being bundled with Oxygen the TEI framework is also available as a project partly maintained by the TEI community:

    HisTEI: An Oxygen framework for historical documents encoded in TEI.

    More details:,

  5. Ediarium is an extension package for TEI editing within Oxygen.

    More details:,

  6. TEI Facsimile Plugin offers a side view in which users can load an image and see the marked areas (all the zone elements from a TEI document), draw new areas over the image and copy them into the editor:
  7. Framework which adds JATS/NLM support for Oxygen developed by Wendell Piez:
  8. Fork of the JATS framework which adds Schematron checks and Literatum package building:
  9. Automatic builder for Oxygen frameworks which allows user to describe framework's behaviour by using only XQuery, HTML, and CSS, and automatically generate the framework archive ready to be deployed (developed by Claudius Teodorescu):
  10. Plugin developed by Clausius Teodorescu which allows opening a JavaFX-based web browser in Oxygen:
  11. LanguageTool plugin for Oxygen:
  12. Framework for validating XSL-FO with Antenna House extensions developed by Antenna House:
  13. Framework which adds Daisy support in Oxygen:
  14. Framework which adds STRATML support to Oxygen:
  15. S1000D Framework which adds some limited support to edit S1000D documents in the Author visual editing mode:
  16. OpenDocs Plugin allows you to focus on specific file types opened in the editor in order to perform various actions on them: GitHub repository:
  17. XsltGui Project by Patrik Stellmann is an example of how you can show dialogs to the end users from an XSLT script:
  18. Workspace containing sample Oxygen plugins implemented in Javascript:
  19. Plugin developed by pagina GMBH which expands a custom editor variable called ${clipboard} to the clipboard contents:
  20. The NameDropper Oxygen plugin can be used to simplify the process of tagging names in XML and associating those names with authoritative identifiers:
  21. Sample Oxygen plugin demo by Tobias Fisher:
  22. A Workspace Access Plugin for Oxygen XML Editor that creates TEI-conform UUIDs starting with a letter:
  23. TEI Authorizer is a plugin for Oxygen which lets you query remote authority files via HTTP and use retrieved data to autocomplete attribute values in your TEI documents and define and implement forms to fill out new data and post it to your server via HTTP:
  24. Framework for editing UBL documents (UBL 2.1, 2.2 csd01 and 2.2 Pre-award csd02wd01pa01) developed by G. Ken Holman:
  25. Framework for validating OASIS genericode 1.0 documents developed by G. Ken Holman:

If anyone else wants to add something else to the list, just drop us an email.

Wednesday, September 10, 2014

Cool Stuff to Look for in future DITA publishing

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr

First of all a big thank you to all you Oxygen XML users who have been from the very beginning the driving force behind many of the improvements we have added into the application.

In my opinion of all the people who try an application for the first time only a few of them will ever bother to write to the application's producers and give feedback about things which do not properly work. Most of them probably suffer in silence and maybe end up abandoning the application alltogether. So feedback received from people using a trial license of Oxygen and who still bother to report a problem instead of giving up is quite valuable and we are grateful for it.

We have many Oxygen DITA users and this leads to many requests to improve the DITA Open Toolkit publishing. Our policy so far has been to contribute these improvement suggestions back to the DITA Open Toolkit so that they benefit others as well. Also we should all be grateful to Jarno Elovirta, the main DITA OT contributor, guru and developer who makes all of this possible for all of us.

So here are some of the DITA publishing improvements I'm looking forward to see in the future:
  1. The Oxygen team is actively working on a DITA Open Toolkit plugin which will use CSS to render PDF output from DITA content. The plugin could be used with commercial rendering engines like Prince XML and Antenna House which support obtaining PDF from XML and CSS. Initially the plugin will provide support only for the Prince XML engine This would mean that most PDF customizations which are currently being done using XSLT could instead be done via CSS styling which is far easier for users who are not experienced XSLT developers. I will present the general architecture of the plugin on the DITA OT Day in Munich this year. And if it proves to be succesfull we are willing to make this plugin available as an open source project or part of a future DITA OT distribution. Oxygen 16.1 which will be released in a few weeks will have an experimental version of the plugin included with its bundled DITA Open Toolkit.
  2. DITA Open Toolkit 2.0 will probably generate HTML 5 compatible output by default.
  3. DITA Open Toolkit 2.0 will generate the Index page for PDF output even when using the Apache FOP processor. The changes are already incorporated in the DITA OT distribution which comes with Oxygen, you can also incorportate them quite easily in your DITA OT by modifying an XSLT stylesheet:
  4. Using the DITA Open Toolkit 2.0 you will also be able to pass profiling attributes and values from the DITA content to the generated HTML content: This means that instead of profiling the content before it is published, you will be able to profile it at publishing time by using Javascript to show/hide parts of the content depending on the user role for example.
  5. Besides lots of bug fixes Jarno Elovirta made lots of memory and processor optimizations which also will be included in the next DITA Open Toolkit 2.0 release.

I'm also looking forward for the support for the DITA 1.3 specification which will slowly begin to be implemented in future DITA Open Toolkit releases.

So what are your ideas for future DITA OT publishing enhancements?

Tuesday, August 05, 2014

The Oxygen SDK (Part 2: Frameworks)

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
This is the second part of a blog post I started some time ago:

There are two ways of customizing the application, by implementing a plugin or by implementing a framework:

A framework configuration provides validation, content completion and editing support for a certain XML vocabulary. 

If you are already using Oxygen for editing DITA, Docbook, XHTML or TEI documents you may notice that Oxygen knows how to validate these vocabularies and that it can propose content completion entries while you are editing. Also when you are editing in the Author visual editing mode you have lots of custom vocabulary-specific toolbar buttons which can be used to insert links, images, to manipulate tables and so on. This happens because each Oxygen installation comes with pre-bundled framework configurations for certain XML vocabularies that we consider to be more important for our users.

Knowing how to create and modify a framework/document type association configuration will benefit you in two ways:
  1. Create your own framework which adds editing support to Oxygen for certain specific XML vocabularies and then distribute it to your team.
  2. Customize an existing framework bundled with the installation (DITA, Docbook, etc) and change certain behaviors in it.
Our user manual contains a special step by step tutorial which explains how a new framework configuration (document type association) can be created and configured:
The Oxygen Preferences->Document Type Association page lists all detected frameworks (document type associations). Usually looking inside one of the pre-configured document type associations (eg: DITA) is a good place to start exploring what such a customization contains:
  1. Association rules - when one of these rules matches the opened XML document, Oxygen will associate it with the current document type association. The rules are pretty simple to compose, they refer to a certain root name, namespace, certain attributes set on the root and so on.
  2. Schema - specifies a grammar to be used to providing validation and content completion if the opened XML document does not refer directly to any particular gramar.
  3. Classpath - a list of JAR libraries which contain Java extensions for this specific framework.
  4. Author - contains all necessary support for editing the XML in the Author visual editing mode:
    • CSS - one or more CSS files to be used when rendering the XML. If you define alternate CSSs, you will be able to switch between them when editing. The user manual contains a list of supported CSS features and additional available extensions.
    • Actions - a list of actions specific for modifying the edited content. An action has a name, description, icons and shortcut key. It also has one or more activation contexts which depending on an XPath expression enable a certain operation be be executed. A fair amount of basic operations are already available but you can create your custom operations.
    • Menu, Contextual menu and Toolbar - you can easily mount defined actions to the main document type menu, to the contextual menu or to the special Author toolbar(s).
    • Content Completion - add defined actions to the content completion window (shown when ENTER is pressed in the Author editor mode) or remove existing entries from the content completion window. You can for example replace some of the insert suggestions given by the association grammar with your own custom actions.
  5. Templates - points to folders which contain new file templates for this particular framework. These new file templates will be shown in the New wizard dialog.
  6. Catalogs contains a list of XML catalogs which will be used to indirectly solve various references (like references to schemas or other XML documents).
  7. Transformation may contains a predefined list of transformation scenarios which are available when you want to publish your opened XML document to various output formats.
  8. Validation may contain a predefined list of validation scenarios which are used to add complex multi-stage validation (with multiple engines) for the XML documents matching the document type association.
  9. Extensions - contains implementations of the available Java extensions which are used to provide further functionality for editing in the Author visual editing mode. Here's what some of the extensions do:
    • AuthorExtensionStateListener - provides a way to be notified when the XML was opened in the Author editing mode. You can then add all kinds of listeners and react to edit events done by the user. For example add a modification listener, send the edited content to an external spell checker engine and then add highlights in the content on invalid constructs.
    • AuthorExternalObjectInsertionHandler - reacts to drag and drop and copy/paste events containing with HTML content or resources. In the case of DITA for example this handler is responsible of the automatic conversion of HTML pasted from the browser to DITA content.
    • SchemaManagerFilter - filter and modify the insertion items detected from the associated grammar when editing XML content. For example even if the schema proposes certain elements as valid insertions at the caret offset, you can filter out and restrict the suggestions given by the associated schema (grammar).
    • StylesFilter - take control over the rendering styles for each node by adding this layer of Java customization over the styles provided by the associated CSSs.
    • AuthorSchemaAwareEditingHandler - handle special editing cases and provide fallbacks which keep the document in a valid state. For example if the user starts typing text between two paragraphs, the handler can automatically create a new paragraph.
You can create automated tests for your frameworks:

and even debug their functionality:

Thursday, June 26, 2014

Webinar: New in oXygen XML Editor 16 - XSLT Quick Fixes

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
This webinar presents the XSLT Quick Fixes functionality in detail and then go through some of the other important new features in the new oXygen release including:

  • new XSLT refactoring actions
  • support for developing XSLT stylesheets for Saxon CE
  • XPath execution over multiple files
  • the new Ant editor
  • and more.

Tuesday, June 10, 2014

How To Disable Caching In WebHelp Pages Created By Oxygen Application

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
Sometimes a set of WebHelp pages needs to be updated often on a company website, either an intranet site with important information shared between different departments of the same company, or a publicly exposed website. The need to always deliver the latest version to the intended audience arises in such cases, with the immediate consequence that the latest version of a WebHelp page should always be requested from the server upon re-loading that page in a Web browser on the client side, rather than re-using an outdated version cached in the browser.

This no-cache policy is implemented in a WebHelp page with the addition of the following two HTML META directives:

  <meta http-equiv="Pragma" content="no-cache" />
  <meta http-equiv="Expires" content="-1" />

These directives must be added in the file:


in the template with the attribute name="create-toc-common-file", in the <head> element, for example:

      <xsl:if test="$withFrames">
          <base target="contentwin"/>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
      <!-- Disable caching of WebHelp pages in web browser. -->
      <meta http-equiv="Pragma" content="no-cache" />
      <meta http-equiv="Expires" content="-1" />
      .  .  .

After this modification in the createMainFiles.xsl file, repeating the WebHelp transformation in Oxygen will add the two META directives to the generated WebHelp pages.

Tuesday, June 03, 2014

Create a Custom Skin for Oxygen WebHelp Pages with the WebHelp Skin Builder

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
One of the new features of Oxygen 16.0 is the option of setting a skin for the WebHelp pages created by the DITA WebHelp transformation or the DocBook WebHelp transformation, in the form of a CSS stylesheet that modifies the default look of all WebHelp pages in a consistent way.

You can choose one of the six predefined skins available on the Skins tab of the DITA WebHelp transformation:

The Skins tab in the Oxygen WebHelp transformation

or you can build your own custom CSS skin visually on the Oxygen website: 

The Skin Builder in action on the Oxygen website

The WebHelp Skin Builder is a small Web app that allows you to configure many CSS properties of a large palette of elements in the header area, the content area or the Table of Contents area of a WebHelp page, like: background color, border, margin, font properties, text properties, adding a logo image in the header area, etc. The properties are grouped by type of component of a WebHelp page like: title, paragraph, list, figure, table, etc.

Once created with the WebHelp Skin Builder and set in the Oxygen WebHelp transformation as a custom CSS skin, it can really give a professional look to a set of WebHelp pages published on your company website, which has the potential to impress your users. Give it a try and let me know what you think!

Tuesday, May 27, 2014

Hidden features in Oxygen (that you likely don't know about)

I made a list with a couple of hidden features that I find useful when working with Oxygen. If you have other suggestions, features that you use very often, we will be happy if you share them with us.
  1. Quick find toolbar
    A reduced version of the Find / Replace dialog is available as a toolbar, displayed at the bottom of the Oxygen window. Press Alt + Shift + F to display it, and ESC to close it and give the focus in editor.

  2. Wrap/unwrap selected text in an element
    To wrap some text in an element use Surround with Tags(Ctrl+E) action. To unwrap just delete the start tag or the end tag, or use the Delete Element Tags(Alt+Shift+X) action.

  3. Context Sensitive Help/Dynamic Help View
    Dynamic Help view is a help window that changes its content to display the help section referring to the currently selected view from Oxygen.

    Also the help system is context sensitive: press F1 in any dialog to quickly access the relevant help section of the User Manual.

  4. Ctrl+Click Navigation
    By holding down Ctrl (CMD on Mac) in the Text editing mode some components become links that you can follow to get to the definition of those components. For example, in an XML document, an element name becomes a link to that element definition in the associated schema or DTD. In an XSL stylesheet, a variable reference becomes a link to that variable definition, and so on.

  5. Component dependencies
    The Component Dependencies view presents a tree of component dependencies starting with a specified component. Allows you to spot the dependencies for the selected component of an XSLT stylesheet, an XML Schema, a Relax NG schema, or a NVDL schema.
    For example you can quickly see from where an XSLT variable is called, and if called from other variables, functions or named templates, you can expand further to see where they are called from.

  6. Learn structure
    When working with documents that do not specify a schema, or for which the schema is not known or does not exist, Oxygen is able to learn and translate the document structure to a DTD.

  7. Modify all matches
    Allows you to easily modify the occurrences of the text found through executing a find operation or an XPath expression. When you use this action, a thin rectangle replaces the highlights and lets you start editing.

  8. Layout specific for each project
    If you work on multiple projects or multiple XML vocabularies, you can choose to keep a separate layout for each project. Thus when you move between projects you get not only the last opened files specific to that project restored but also the exact layout of views, editors and toolbars.. Enable Options->Preferences-> Perspectives Layout, the "Remember layout changes for each project" option and then Oxygen will remember the exact layout for each project.

  9. Memory status
    Enable "Show memory status" option to view the memory Oxygen XML Editor uses. To free memory, click the Run Garbage Collector button located in the bottom right corner of the screen. The memory status bar has a light blue background which turns yellow or red when Oxygen XML Editor uses too much memory.

  10. Show/Hide Element Names in Outline View
    You are able to control the visibility of the element names in the Outline View. Hiding element names allows you to focus more on the document content.

  11. XML Master Files support
    Oxygen helps you edit XML modules referred using XInclude or External Entities. By setting the XML Master File, Oxygen provides a context to solve issues like module validation, editing using the content completion assistant, ID referencing or XML module connection overview (understanding how modules are connected with each other).

Thursday, May 08, 2014

Oxygen Authoring Tips and Tricks

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
When I started writing on the Oxygen XML Blog, back in 2013 I wanted to have my first blog post about Oxygen Tips and Tricks but I somehow never got around to it. Now the time has come.
These are a few of the minor (and sometimes hidden) features which might bring significant usability features when editing in the visual Author editing mode:
  1. [General Editing]: Triple click to select. Triple click the text content of a certain XML element to select the entire element. Afterwards you can easily cut/copy or move it.
  2. [General Editing]: Move up and down to re-arrange content. Use the [Alt-UP] and [Alt-Down] keyboard shortcuts to move paragraphs, list items or any other kind of block like elements up or down in the parent container.
  3. [General Editing]: Code Templates. In the Oxygen Preferences->Editor / Templates / Code Templates page you can define code templates for inserting small and often used pieces of XML inside the XML document (either in the Text or in the Author editing modes). A code template can have inside it a wide selection of editor variables among which the special ${caret} and ${selection} editor variables which allow you to define where the caret will be placed after the template is inserted and how the existing selection will be placed in the newly inserted XML fragment.
  4. [General Editing]: Symbols toolbar. Go to the Window menu->Configure Toolbars... and show the Symbols toolbar in order to define and easily insert a set of most used character symbols.
  5. [General Editing]: Middle mouse button click to close editor tab. Click using the middle mouse button on an opened editor's tab to close it.
  6. [General Editing]: Edit Attributes in-place. Use ALT-ENTER to show the in-place attributes editing dialog and avoid using the Attributes view to modify or add/remove a new attribute.
  7. [DITA/Docbook/TEI/XHTML]: Copy/paste resources to create links. Copy a resource (XML file, binary/image file) in the Project view or in the DITA Maps Manager view or in the operating system's file system browser (Windows Explorer on Windows or Finder on Mac OSX) and then paste it in an XML document opened in the Author visual editing mode in Oxygen. A proper link (or image reference if it is the case) to that resource will be inserted. The same functionality applies to drag and drop.
  8. [DITA/Docbook/TEI/XHTML]: Convert content on paste (Smart paste). Paste content from an office application (MS Office, Libre or Open Office), a web browser or from a spreadsheet (Excel, Calc) and then paste it inside an XML document opened in Oxygen in the Author visual editing mode. The content will be converted to the proper target XML vocabulary and inserted inside.
  9. [DITA]: Paste as link/keyref or as content (key) reference. Assign an ID to an XML element from a DITA topic. Select and copy that element. Then open the referencing topic, right click inside and look in the Paste special menu.
  10. [DITA]: Use Subject Scheme Maps to control attribute values. You can control profiling attributes (and any other kind of attribute) values by associating a Subject Scheme Map to the DITA Map you are editing. More details... Video demonstration...
Off the top of my head, these are the tips I can up with so far. Do you have any other features that you've discovered and use daily when editing with Oxygen?

Wednesday, April 16, 2014

How to set a favicon in Webhelp pages

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
Small additions or customizations are frequently needed or desirable in the WebHelp pages generated by the DITA Map WebHelp transformation in Oxygen. This need will prompt a serial of blog posts with specific WebHelp customizations and the required source code modifications.

In the first installment let's see how we can add one of those small but significant details which lend a mark of distinction and help to increase the consistency with the overall website design theme: setting a favicon.  [ BTW the upcoming version of Oxygen will introduce a set of built-in WebHelp skins (design themes) and also a small WebHelp Skin Builder web app for visually building your own WebHelp skin/theme. Sounds like an interesting topic for a future blog post! ]

The recent versions of all the mainstream browsers (by that I mean the Web browsers with more than 3% Web usage share) will know how to interpret the following link XHTML elements:

<link rel="icon" href="/favicon.ico" type="image/x-icon"/>

<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>

The href attribute obviously must point to the favicon file available on the server which hosts the Webhelp pages.

These two elements must be inserted in the file:

in the template with the attribute name="create-toc-common-file", in the head element, after title:

    <xsl:value-of select="$title"/>

<link rel="icon" href="/favicon.ico" type="image/x-icon"/>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/>

That's it! Repeating the WebHelp transformation will add the favicon to the title of the browser tab.

It would be nice to have a customization mechanism for separating the built-in WebHelp files and the custom code files, but that is an enhancement for a future version of Oxygen.

Wednesday, March 05, 2014

What's your greatest wish for Oxygen XML Author 16.0?

Share to Facebook Share to Twitter Email This Share on Google Plus Share on Tumblr
Oxygen 16.0 is planned to be released in a couple of months and we already have quite an impressive array of new features which we plan to make available in it.
Here's some of the stuff we are working on right now:
  1. Editing properties of multiple selected table columns, rows and cells will be a snap using the Table Properties action.
    You will be able to easily select table cells either by pressing CTRL and clicking them or by selecting cell content which spans multiple cells.
  2. You will be able to highlight with custom colors and styles elements which have certain profiling attributes with certain values set on them.
  3. The Oxygen Eclipse Plugin distribution will be updated to have a validation stripe showing all errors found in the visual Author editing mode. The Author visual editing mode will also have a validation status which will show the error closest to the caret position.
  4. We added API which allows you to programatically import an XML options file in the started application. Used with a plugin deployed as an add-on this API allows you to distribute a fixed set of options as a starting point to all users. Our Plugins SDK will contain such a sample plugin which makes use of the new API to distribute.
So what would be your biggest feature-request wish for the upcoming Oxygen XML Author 16.0?