If you edit an XProc transformation scenario, there is a Processor
drop-down menu where you can select the XProc engine to be used for the transformation. You
can select the built-in Calabash engine or a custom engine based on another XProc
implementation. For example, there is a public project on GitHub that is an implementation
for integrating Morgana XProc with Oxygen XML Editor: https://github.com/xml-project/support-for-xmleditor. Also, the Javadoc documentation of the XProc API is available for download from the
application website as a zip file: xprocAPI.zip.
To create an XProc integration project, follow these steps:
-
Move the oxygen.jar file from [OXYGEN_INSTALL_DIR]/lib to the
lib folder of your project.
-
Implement the ro.sync.xml.transformer.xproc.api.XProcTransformerInterface
interface.
-
Create a Java archive (JAR) from the
classes you created.
-
Create an engine.xml file according to the
engine.dtd file. The attributes of the
engine
element are as follows:
- name - The name of the XProc engine.
- description - A short description of the XProc engine.
- class - The complete name of the class that implements
ro.sync.xml.transformer.xproc.api.XProcTransformerInterface.
- version - The version of the integration.
- engineVersion - The version of the integrated engine.
- vendor - The name of the vendor / implementer.
- supportsValidation - true if the engine supports validation
(otherwise, false).
The engine element has only one child, runtime. The
runtime element contains several library elements
with the name attribute containing the relative or absolute location of
the libraries necessary to run this integration.
-
Create a new folder (for example, named MyXprocEngine) and place
the engine.xml and all the libraries necessary to run the new
integration in that folder.
-
Place that new folder (i.e. MyXprocEngine) inside a new plugin
folder. This new plugin folder should also contain a plugin.xml file
that points to the new engine folder (i.e. MyXprocEngine).
The
plugin.xml file would look like this
(it is based on the AditionalXProcEngine
extension):
<plugin
id="morgana.xproc.addon"
name="Contribute Morgana XProc"
description="Contribute Morgana XProc"
version="1.0"
vendor="SyncroSoft"
class="ro.sync.exml.plugin.Plugin"
classLoaderType="preferReferencedResources">
<extension type="AdditionalXProcEngine" path="MyXprocEngine/"></extension>
</plugin>