Plugin sequence for the Dynamic Delivery output format

The Dynamic Delivery output format has its DITA-OT transformation type set to ishditadelivery. This transformation type is used as a condition inside the Web Client's Settings > XML Publish Plug-In Settings. The condition defines the list of plugins that need to be executed in a specific order to transform the XML files and images into a format that can be accepted by Dynamic Delivery.

Table 1. Sequence of plugins used when publishing to Dynamic Delivery
NameHandlerDescription
ISHREMOVENOTLOCKEDNAVTITLESIshRemoveNotLockedNavTitlesRemoves the "navtitle" elements and attributes from "topicref" elements (or specializations of the "topicref" element) that do not have the "locktitle" attributes set to "yes" from DITA maps (or specializations of DITA maps), to avoid that"DITA-OT" takes them into account.
ISHCHECKREFERENCESIshCheckReferencesChecks that the links, hyperlinks, conref, conrefend, keyrefs targets exist and updates the report items with the found status
ISHSAVEFILESTORUNLEGACYSCRIPTSIshSaveFilesToRunLegacyScriptsSaves the files required for the legacy publish scripts including job specification and legacy report files (1 per language)
ISHRESTOREDOCTYPEIshRestoreDocTypeIn order to improve performance the DOCTYPE definition is moved (during publish) into a processing instruction. Since DITA-OT needs the DOCTYPE definition, this plugin will load all xml files and move the ishdoctype processing instruction back into a DOCTYPE definition
ISHRUNDITAOTIshRunDITAOTRuns the DITA-OT transformation process by executing the "ishrunditaot.cmd" command
ISHDITADELIVERYPREPAREMETADATADitaDeliveryPrepareMetadata

Collects all files in the DITA-OT out folder and tries to find a matching [filenamewithoutextension].met file for them in the input folder.

When it finds a [filenamewithoutextension].met file, it converts it to a JSON format, adds the title of the publication in publicationtitle.generated.value and saves it to the DITA-OT out folder.

When it does not find a [filenamewithoutextension].met file, it creates a JSON file with the title of the publication in publicationtitle.generated.value and saves it to the DITA-OT out folder.

For the publication it converts the [PublicationGUID].met file to Publication.json.

This plugin also creates the publication_metadata_schema.json, page_metadata_schema.json, binary_metadata_schema.json for the JSON metadata files.

ISHDITADELIVERYPREPAREOVERALLPACKAGEDitaDeliveryPrepareOverallPackage

Moves the files needed to be transported to Dynamic Delivery into a folder structure under ...\Data\Publish\Data\[RANDOMFOLDERNAME]\work\TP\ALL, were TP is an abbreviation for Transport Package .

Under that folder, subfolders are created with a name that matches group names configured in the PackageContent parameter.

The files in the out folder, that match all the configured objects include and exclude pattern of a group will be moved to the corresponding subfolder and will be given a unique ish:xxx-yyy-zzz identified filename.

The JSON metadata files belonging to the files that are moved, will be moved as well.

Eventually the plugin creates:
  1. A package.xml in the TP\ALL folder, containing information of all the files that need to be send. The XML structure of this file is in specific format that can be processed by the Unified Delivery Platform.
  2. A __packages.xml in the TP folder, containing information of all the files that need to be send, but with even more detailed information than the package.xml.
ISHDITADELIVERYCONVERTPAGEREFSDitaDeliveryConvertRefsParses files of type page in the TP\ALL folder, and replaces <a href=GUID-X>, <img src=GUID-X>, <object data=GUID-X>, etc. elements with tcdl:Link, or tcdl:Image elements with a ref=ish:xxx-yyy-zzz (only if the attribute value matches the OriginalFile in the __packages.xml) and saves the changes to the same filename again.
ISHDITADELIVERYCONVERTNAVREFSDitaDeliveryConvertRefsParses files of type toc or index in the TP\ALL folder, and replaces ref or target attribute values of the form GUID-X with ish:xx-yy-zz (only if the attribute value matches the OriginalFile in the __packages.xml) and saves the changes to the same filename again.
ISHDITADELIVERYCONVERTCONDITIONSDitaDeliveryConvertConditionsConverts remaining conditional attributes to <tcdl:If type="ish:Condition" condition=""> elements.
ISHDITADELIVERYCONVERTTOCDitaDeliveryConvertTocParses files of type toc in the TP\ALL folder, and converts them from HTML produced by DITA-OT to XML that complies with the format needed for Dynamic Delivery.
ISHDITADELIVERYCONVERTINDEXDitaDeliveryConvertIndexConverts the index.xml produced by DITA-OT to the format defined for Dynamic Delivery.
ISHDITADELIVERYEXTENDCONDITIONMETADATADitaDeliveryExtendConditionMetadataExtracts remaining conditional attributes from the content, disassembles them, and saves the resulting condition name/values in the corresponding JSON metadata files.

It also builds a unique list of all found condition names and values and enriches the condition set (a.k.a product definition) used during publishing and saves them to the publication JSON metadata file.

ISHDITADELIVERYEXTENDNAVENTRYMETADATADitaDeliveryExtendNavEntryMetadataAdds fields to the page or binary JSON metadata files that reflect which toc and index items refer to them.
ISHDITADELIVERYDIVIDEPACKAGEDitaDeliveryDividePackageMoves the files that need to be transported for Dynamic Delivery to multiple folders based on their type and a maximum size defined for the folder.
ISHDITADELIVERYCOMPRESSPACKAGESDitaDeliveryCompressPackagesZips every package created by DitaDeliveryPrepareOverallPackage and puts the resulting zip files in a TP\Zips folder.
ISHDITADELIVERYUPLOADPACKAGESDitaDeliveryUploadPackagesUploads every package zipped by DitaDeliveryCompressPackages to Dynamic Delivery and signals that the packages should be processed.
ISHCOMPRESSPUBLISHRESULTIshCompressPluginCompresses the file with the publish result specified in the Items collection.
ISHUPLOADPUBLISHRESULTIshUploadPublishResultUploads the file specified in the Items collection by the given key as a result to the publication output.