Documentation Center

Admin.XMLPublishPluginConfiguration.xml

The Admin.XMLPublishPluginConfiguration.xml file contains the configuration for the plugins that are executed during the publish (post) process.

Changelog

File versionContent Manager versionNotes
1.013.0.0This is the first version of Admin.XMLPublishPluginConfiguration.xml.
1.013.0.1The Admin.XMLPublishPluginConfiguration.xml is extended with the ability to configure the following:
  • Plugin definitions and references
  • Before compare plugins
  • Compare plugins
  • Combine languages plugins

Introduction

This configuration file is accessible from the Content Manager Web Client. Select Settings > XML Publish Plugin Settings.

This configuration file contains:

  • The global parameters that can be used by the export and by any publish post process plugins.
  • The configuration for the export.
  • The sequence of plugins that will be executed within the post processing step of the publish process.
  • A plugin definitions section that defines a number of plugins which can be referenced in the sequence of plugins.

Overview of the XML elements

Node nameDescription
infoSharePublishPluginConfigRoot node of the publish plugin XML configuration.
publishDescribes a sequence of plugins that will be executed within the publish process.
publish @ishconditionThe condition that determines when the current publish sequence should be activated.
parametersThe global parameters that can be used by the export and by any publish post process plugin.
exportContains the configuration (e.g. requested metadata) used during the export of the files.
postprocessDescribes a sequence of plugins that will be executed within the post processing step of the publish process.
plugindefinitionsSpecifies a number of plugin definitions that can be referenced from within the postprocess element. This provides an easy way to reuse the same plugin definition for different output formats.

Global parameters

Node nameDescription
parametersThe global parameters which can be used by the export and by any publish post process plugin.
parameter
The parameter that is passed to the export and the plugins.
parameter @nameThe name of the parameter.
parameter @ishconditionThe condition for which the parameter will be used.
Example:
<parameters>
  <parameter name="CatalogFolder">%ISHPROJECTWEBPATH%\Author\ASP\DocTypes</parameter>	  
  <parameter name="CatalogFile">catalog.xml</parameter>
  <parameter name="DraftWhenFallbackLanguageUsed">yes</parameter>
  <parameter name="DraftWhenFallbackLanguageUsedForIllustration">no</parameter>
  <parameter name="DraftWhenFallbackLanguageUsedForResource">yes</parameter>
  <parameter name="VariableAssignedXPath">//*[@varid][not(ancestor-or-self::*[@varref])][not(ancestor::*[@conref])]</parameter>
  <parameter name="VariableInUseXPath">//*[@varref][not(ancestor::*[@varref])][not(ancestor::*[@conref])]</parameter>
  ...
</parameters>

Export configuration

Node nameDescription
parametersThe global parameters that can be used by the export and by any publish post process plugin.
parameter
The parameter that is passed to the export.
parameter @nameThe name of the parameter.
parameter @ishconditionThe condition for which the parameter will be used.
The configuration for the export is used to pass the parameters with the requested metadata for the document objects (e.g. maps, topics...) and the publication output:
<export>
  <parameters>
    <parameter name="documentobjrequestedmetadata">
      <ishfields>  
        <ishfield name="FTITLE" level="logical" />
        <ishfield name="FDESCRIPTION" level="logical" />
        <ishfield name="VERSION" level="version" />
        <ishfield name="FCHANGES" level="version" />
        <ishfield name="FAUTHOR" level="lng" />  
        <ishfield name="FSTATUS" level="lng" />
        ...
      </ishfields>    
    </parameter>
    <parameter name="publicationoutputrequestedmetadata">
      <ishfields>
        <ishfield name="FTITLE" level="logical"/>
        <ishfield name="FDESCRIPTION" level="logical"/>
        <ishfield name="VERSION" level="version"/>
        ...
        <ishfield name="FPUBINCLUDECOMMENTS" level="lng"/>
        <ishfield name="FPUBINCLUDEMETADATA" level="lng"/>
        <ishfield name="FPUBWATERMARK" level="lng"/>
        <ishfield name="FISHPUBREVIEWENDDATE" level="lng"/>
        <ishfield name="FISHPUBLNGCOMBINATION" level="lng"  ishvaluetype="value" />
        <ishfield name="FISHPUBSTATUS" level="lng" ishvaluetype="element" />
        ...
        <ishfield name="FISHDITADLVRREMOTESTATUS" level="lng" ishvaluetype="element" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'"/>
        <ishfield name="FISHPRODUCTFAMILYNAME" level="logical" ishvaluetype="value" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'"/>
        <ishfield name="FISHPRODUCTRELEASENAME" level="version" ishvaluetype="value" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'"/>
      </ishfields>
    </parameter>
  </parameters>
</export>

Publish post process plugins

Node nameDescription
postprocessDescribes a sequence of plugins that will be executed within the post processing step of the publish process.
@ishconditionThe ishcondition attribute can be set on most of the elements of the postprocess. As the configuration is conditionally filtered, this allows to remove some of the plugins depending on the output format, the type of object which is processed, ...
beforecompare currentversion sequenceThe element that contains a sequence of publish post process plugins to run on the exported files of the current version before the compare is executed.
beforecompare compareversion sequenceThe element that contains a sequence of publish post process plugins to run on the exported files of the compare version before the compare is executed.
compareThe element that describes the compare plugin to run. Note that this type of plugins will only execute when the publish contains a value for Differences from version.
compare @handlerThe C# class that contains the implementation of the IPublishComparePlugin interface.
combinelanguagesThe element that describes the combine languages plugin to run. Note that this type of plugins will only execute when the publish contains multiple languages.
combinelanguages @handlerThe C# class that contains the implementation of the IPublishCombineLanguagesPlugin interface.
sequenceThe element that contains a sequence of publish post process plugins. The sequence element can contain a mixture of plugin elements and/or pluginreference elements.
pluginDescribes one single publish plugin.
plugin @nameThe name of the plugin. For custom plugin you should not start the name with ISH (which indicates an out-of-the-box plugin).
plugin @handlerThe C# class that contains the implementation of the IPublishPostProcessPlugin interface.
pluginreferenceDescribes a reference to a plugindefinition that is defined in the plugindefinitions section
pluginreference @nameThe name of the reference. This name should match exactly one name of a plugindefinition element in the plugindefinitions section.
descriptionThe description of the plugin.
initializeDescribes the parameters that should be passed to the plugin instance upon initialization.
parametersContains parameter elements.
parameter
The parameter that is passed to the plugin.
parameter @nameThe name of the parameter.
Example:
    
...
<postprocess ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE in ('ishpdf')">
  <beforecompare>
    <currentversion>
      <sequence>
        <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES"/>
        <pluginreference ref="ISHCHECKREFERENCES"/>
      </sequence>
    </currentversion>
    <compareversion>
      <sequence>
        <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES"/>
        <pluginreference ref="ISHCHECKREFERENCES"/>
      </sequence>
    </compareversion>
  </beforecompare>
  <compare handler="IshPublishCompare">
    <parameters />
  </compare>
  <combinelanguages handler="IshPublishCombineLanguages">
    <parameters/>
  </combinelanguages>
  <sequence>
    <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES" ishcondition="ISHCompare='FALSE'"/>
    <pluginreference ref="ISHCHECKREFERENCES" ishcondition="ISHCompare='FALSE'"/>
    <pluginreference ref="ISHSAVEFILESTORUNLEGACYSCRIPTS"/> 
    <pluginreference ref="ISHRESTOREDOCTYPE"/>
    <pluginreference ref="ISHRUNDITAOT"/>
    <pluginreference ref="ISHFINDDITAOTPDFRESULTFILE"/>
    <pluginreference ref="ISHUPLOADDITAOTRESULTFILE"/>
  </sequence>
</postprocess>
...
<postprocess ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE in ('htmlhelp', 'ishhtmlhelp')">
  <sequence>
    <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES"/>
    <pluginreference ref="ISHCHECKREFERENCES"/>
    <pluginreference ref="ISHSAVEFILESTORUNLEGACYSCRIPTS" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE in ('ishhtmlhelp')"/>
    <pluginreference ref="ISHRESTOREDOCTYPE"/>
    <pluginreference ref="ISHRUNDITAOTWITHCOPYIMAGES"/>
    <pluginreference ref="ISHFINDDITAOTCHMRESULTFILE"/>
    <pluginreference ref="ISHUPLOADDITAOTRESULTFILE"/>
  </sequence>
</postprocess>
...

Plugin definitions plugins

Node nameDescription
plugindefinitionsSpecifies a number of plugin definitions that can be referenced from within the postprocess element. This provides an easy way to reuse the same plugin definition for different output formats.
plugindefinition @nameDefines one plugin definition. The name of the plugindefinition should be unique. For custom plugin you should not start the name with ISH (which indicates a out-of-the-box plugin).
plugindefinition @handlerThe C# class that contains the implementation of the IPublishPostProcessPlugin interface.
descriptionThe description of the plugin.
initializeDescribes the parameters that should be passed to the plugin instance upon initialization.
parametersContains parameter elements.
parameter
The parameter that is passed to the plugin.
parameter @nameThe name of the parameter.
Example:
    
...
<plugindefinitions>
  <plugindefinition name="ISHREMOVENOTLOCKEDNAVTITLES" handler="IshRemoveNotLockedNavTitles">
    <description>
        Removes 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.
    </description>
    <initialize />
  </plugindefinition>
  <plugindefinition name="ISHCHECKREFERENCES" handler="IshCheckReferences">
    <description>Checks that the links, hyperlinks, conref, conrefend, keyrefs targets exist and updates the report items with the found status.</description>
    <initialize>
      <parameters>
        <!-- When the CorrectLegacyHyperlinkSyntaxToDITA is set to yes, hyperlink reference values of the form LOGICALID#ELEMENTID will be corrected to the DITA    -->
        <!-- syntactically correct LOGICALID#LOGICALID/ELEMENTID. Note that this correction towards LOGICALID#LOGICALID/ELEMENTID might produce an incorrect result -->
        <!-- if you have content files that contain more than one topic element and the reference value actually contained a LOGICALID#TOPICID. -->
        <parameter name="CorrectLegacyHyperlinkSyntaxToDITA">yes</parameter>
        <parameter name="DraftWhenInvalidHyperlink">yes</parameter>
      </parameters>
    </initialize>
  </plugindefinition>
  ...
</plugindefinitions>
...

Supported conditions

The following condition names can be used for determining if the plugin must be executed:
Condition nameDescription
ISHTypeThis controls whether the plugin needs to execute depending on the type of the object to publish.
ISHLevelThis controls whether the plugin needs to execute depending on the level of the object to publish.

The allowed values are: logical, version or lng.

EDTThe element name of the EDT linked with the output format (e.g. EDTZIP).
ISHOutputFormat

The output format used for publishing.

ISHOutputFormat.*

All fields from the output format used for publishing. The condition name is the element name of the field prefixed by ISHOutputFormat..

For example:
  • ISHOutputFormat.FISHOUTPUTEDT: The label (e.g. ZIP) and the element name (e.g. EDTZIP) of the EDT linked with the output format.
  • ISHOutputFormat.FDITAOTTRANSTYPE: The value for the DITA-OT transformation type (e.g. ishditadelivery).
  • ...
ISHCompareThis controls whether the plugin needs to execute when running in compare mode or not. You can use the values TRUE or FALSE.
ISHCombineLanguagesThis controls whether the plugin needs to execute when publishing with multiple (combined) languages. You can use the values TRUE or FALSE.

Out-of-the-box global parameters

Parameter nameDescription
CatalogFolderThe full path to the folder where the CatalogFile is located.
  • Required: yes
  • Typical value: %ISHPROJECTWEBPATH%\Author\ASP\DocTypes
  • Usage: Xml validation during export, IshRunDITAOT plugin,...
CatalogFileThe file name of the catalog, in combination with CatalogFolder this should result in the full path to the catalog file.
  • Required: yes
  • Typical value: catalog.xml
  • Usage: Xml validation during export, IshRunDITAOT plugin,...
DraftWhenFallbackLanguageUsedWhen some of the topics can only be retrieved in a fallback language but cannot be found in the requested language, this boolean indicate whether the publication output will be a Draft or still a Release candidate.
  • Required: yes
  • Typical value: yes
  • Usage: Finalizing the publish
DraftWhenFallbackLanguageUsedForIllustrationWhen some of the illustrations can only be retrieved in a fallback language but cannot be found in the requested language, this boolean indicate whether the publication output will be a Draft or still a Release candidate.
  • Required: yes
  • Typical value: yes
  • Usage: Finalizing the publish
DraftWhenFallbackLanguageUsedForResourceWhen some of the resources can only be retrieved in a fallback language but cannot be found in the requested language, this boolean indicate whether the publication output will be a Draft or still a Release candidate.
  • Required: yes
  • Typical value: yes
  • Usage: Finalizing the publish
CombineLanguageHeaderIshRefSpecifies the identifier of the language separator page in case you publish a publication output with multiple languages.
  • Required: no
  • Typical value: ISHPUBLMODULECOMBINELANGUAGES
  • Usage: If this parameter is set, the given ID will be used as separator topic between the different languages. Otherwise the language code is used.
UseDitaMapExtensionForMapsSpecifies whether the publish export will use a .ditamap file extension when exporting objects of type Map or will use the default .xml file extension.
  • Required: no
  • Typical value: Yes for all output format with Style Processor equal to InfoShare DITA Open Toolkit
  • Usage: The publish export will export objects of type Map to a file with the given extension.
SkipPersistFixedAttributesListSpecifies which fixed attributes from the DTD should not be persisted in the XML during the publish export phase. As some of the fixed attributes are lengthy and not needed in the Out-Of-The-Box publish plugins, a list of unused attributes is provided to reduce the memory consumption of the publish.
  • Required: no
  • Typical value: ishlabelxpath, ishlinkxpath, ishhyperlinkxpath, ishvarinusexpath, ishvarassignedxpath
  • Usage: Not persist these fixed attributes in the exported file
VariableAssignedXPathXPATH expression used to extract the variable definitions.
  • Required: yes
  • Typical value: Use the same XPath expression as specified in the Write Plugin configuration for the ISHEXTRACTVARASSIGNED plugin.
  • Usage: Resolving the variables during export
VariableInUseXPathXPATH expression used to find the variable references.
  • Required: yes
  • Typical value: Use the same XPath expression as specified in the Write Plugin configuration for the ISHEXTRACTVARINUSE plugin.
  • Usage: Resolving the variables during export
ExtractTargetIdsXPath information to extract the targets.
  • Required: yes
  • Typical value:
    <configuration>
      <elementxpath>//*[@id!=''][not(ancestor::*[@conref])]</elementxpath>
      <perelementxpaths>
    	<perelementxpath propertyname="id">@id</perelementxpath>
    	<perelementxpath propertyname="class">@class</perelementxpath>
      </perelementxpaths>
    </configuration>
  • Usage: The targets are extracted during the export but are passed to the publish post process plugins (e.g. IshCheckReferences)
ExtractLinksXPath information to extract the links
  • Required: yes
  • Typical value:
    <configuration>
      <elementxpath>(//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," map/topicref ")][not(contains(@class," mapgroup-d/anchorref "))][not(ancestor::*[@conref])][not(ancestor::*[contains(@class," map/reltable ")])]) | (//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," topic/longdescref ")][not(ancestor::*[@conref])][not(ancestor::*[contains(@class," map/reltable ")])]) | (//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," topic/longquoteref ")][not(ancestor::*[@conref])][not(ancestor::*[contains(@class," map/reltable ")])])</elementxpath>
      <perelementxpaths>
    	<perelementxpath propertyname="ref">@href</perelementxpath>
    	<perelementxpath propertyname="keyref">@keyref</perelementxpath>
    	<perelementxpath propertyname="scope">ancestor-or-self::*[@scope][position()=1]/@scope</perelementxpath>
    	<perelementxpath propertyname="class">@class</perelementxpath>
      </perelementxpaths>
    </configuration>
  • Usage: The links are extracted during the export but are passed to the publish post process plugins (e.g. IshCheckReferences)
ExtractImagelinksXPath information to extract the image links
  • Required: yes
  • Typical value:
    <configuration>
      <elementxpath>(//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," topic/image ")][not(ancestor::*[@conref])]) | (//*[@data and not(contains(@data,":"))][contains(@class," topic/object ")][not(ancestor::*[@conref])]) | (//*[@value and not(contains(@value,":"))][contains(@class," topic/param ") and (@name="movie" or @name="src" or @name="URL")][not(ancestor::*[@conref])])</elementxpath>
      <perelementxpaths>
    	<perelementxpath propertyname="ref">@href | @data | @value</perelementxpath>
    	<perelementxpath propertyname="keyref">@keyref</perelementxpath>
    	<perelementxpath propertyname="scope">ancestor-or-self::*[@scope][position()=1]/@scope</perelementxpath>
    	<perelementxpath propertyname="class">@class</perelementxpath>
      </perelementxpaths>
    </configuration>
  • Usage: The image links are extracted during the export but are passed to the publish post process plugins (e.g. IshCheckReferences)
ExtractHyperlinksXPath information to extract the hyper links
  • Required: yes
  • Typical value:
    <configuration>
      <elementxpath>(//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," topic/xref ")][not(ancestor::*[@conref])]) | (//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," topic/link ")][not(ancestor::*[@conref])])  | (//*[contains(@class," map/reltable ")]//*[(@href and (@href!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," map/topicref ")][not(ancestor::*[@conref])]) | (//*[contains(@class," map/reltable ")]//*[(@mapref and (@mapref!="-dita-use-conref-target" or not(@conref))) or (@keyref)][contains(@class," map/navref ")])</elementxpath>
      <perelementxpaths>
    	<perelementxpath propertyname="ref">@href | @mapref</perelementxpath>
    	<perelementxpath propertyname="keyref">@keyref</perelementxpath>
    	<perelementxpath propertyname="scope">ancestor-or-self::*[@scope][position()=1]/@scope</perelementxpath>
    	<perelementxpath propertyname="class">@class</perelementxpath>
      </perelementxpaths>
    </configuration>
  • Usage: The hyper links are extracted during the export but are passed to the publish post process plugins (e.g. IshCheckReferences)
ExtractConrefsXPath information to extract the conrefs
  • Required: yes
  • Typical value:
    <configuration>
      <elementxpath>(//*[@conref or @conrefend or @conkeyref][not(ancestor::*[@conref])])</elementxpath>
      <perelementxpaths>
    	<perelementxpath propertyname="conref">@conref</perelementxpath>
    	<perelementxpath propertyname="conkeyref">@conkeyref</perelementxpath>
    	<perelementxpath propertyname="conrefend">@conrefend</perelementxpath>
    	<perelementxpath propertyname="class">@class</perelementxpath>
      </perelementxpaths>
    </configuration>
  • Usage: The conrefs are extracted during the export but are passed to the publish post process plugins (e.g. IshCheckReferences)
ExtractKeyDefinitionsXPath information to extract the key definitions
  • Required: yes
  • Typical value:
    <configuration>
      <elementxpath>(//*[@keys][contains(@class," map/topicref ")][not(ancestor::*[@conref])])</elementxpath>
      <perelementxpaths>
    	<perelementxpath propertyname="keys">@keys</perelementxpath>
    	<perelementxpath propertyname="ref">@href</perelementxpath>
    	<perelementxpath propertyname="keyref">@keyref</perelementxpath>
    	<perelementxpath propertyname="class">@class</perelementxpath>
    	<perelementxpath propertyname="scope">ancestor-or-self::*[@scope][position()=1]/@scope</perelementxpath>
      </perelementxpaths>
    </configuration>
  • Usage: The key definitions are extracted during the export but are passed to the publish post process plugins (e.g. IshCheckReferences)
MaxDegreeOfParallelismSpecifies the maximum number of threads that can be used per Publish background task. Setting this value higher could increase throughput, but will potentially use more database connections, so it should not be set too high.
  • Required: no
  • Default value: 4
  • Usage: Some parts of the publish export and post process plugins are programmed in such a way that they can use multiple threads. This parameter limits the amount of threads that can be used.

Example

<infoSharePublishPluginConfig version="1.0">
  <publish>
    <parameters>
      <parameter name="CatalogFolder">%ISHPROJECTWEBPATH%\Author\ASP\DocTypes</parameter>	  
      <parameter name="CatalogFile">catalog.xml</parameter>
      <parameter name="DraftWhenFallbackLanguageUsed">yes</parameter>
      <parameter name="DraftWhenFallbackLanguageUsedForIllustration">no</parameter>
      <parameter name="DraftWhenFallbackLanguageUsedForResource">yes</parameter>
      <parameter name="VariableAssignedXPath">//*[@varid][not(ancestor-or-self::*[@varref])][not(ancestor::*[@conref])]</parameter>
      <parameter name="VariableInUseXPath">//*[@varref][not(ancestor::*[@varref])][not(ancestor::*[@conref])]</parameter>
      ...
    </parameters>
    <export>
      <parameters>
        <parameter name="documentobjrequestedmetadata">
          <ishfields>  
            <ishfield name="FTITLE" level="logical" />
            <ishfield name="FDESCRIPTION" level="logical" />
            <ishfield name="VERSION" level="version" />
            <ishfield name="FCHANGES" level="version" />
            <ishfield name="FAUTHOR" level="lng" />  
            <ishfield name="FSTATUS" level="lng" />
            ...
          </ishfields>    
        </parameter>
        <parameter name="publicationoutputrequestedmetadata">
          <ishfields>
            <ishfield name="FTITLE" level="logical"/>
            <ishfield name="FDESCRIPTION" level="logical"/>
            <ishfield name="VERSION" level="version"/>
            ...
            <ishfield name="FPUBINCLUDECOMMENTS" level="lng"/>
            <ishfield name="FPUBINCLUDEMETADATA" level="lng"/>
            <ishfield name="FPUBWATERMARK" level="lng"/>
            <ishfield name="FISHPUBREVIEWENDDATE" level="lng"/>
            <ishfield name="FISHPUBLNGCOMBINATION" level="lng"  ishvaluetype="value" />
            <ishfield name="FISHPUBSTATUS" level="lng" ishvaluetype="element" />
            ...
            <ishfield name="FISHDITADLVRREMOTESTATUS" level="lng" ishvaluetype="element" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'"/>
            <ishfield name="FISHPRODUCTFAMILYNAME" level="logical" ishvaluetype="value" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'"/>
            <ishfield name="FISHPRODUCTRELEASENAME" level="version" ishvaluetype="value" ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'"/>
          </ishfields>
        </parameter>
      </parameters>
    </export>
    ...
    <postprocess ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE in ('ishpdf')">
      <beforecompare>
        <currentversion>
          <sequence>
            <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES"/>
            <pluginreference ref="ISHCHECKREFERENCES"/>
          </sequence>
        </currentversion>
        <compareversion>
          <sequence>
            <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES"/>
            <pluginreference ref="ISHCHECKREFERENCES"/>
          </sequence>
        </compareversion>
      </beforecompare>
      <compare handler="IshPublishCompare">
        <parameters />
      </compare>
      <combinelanguages handler="IshPublishCombineLanguages">
        <parameters/>
      </combinelanguages>
      <sequence>
        <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES" ishcondition="ISHCompare='FALSE'"/>
        <pluginreference ref="ISHCHECKREFERENCES" ishcondition="ISHCompare='FALSE'"/>
        <pluginreference ref="ISHSAVEFILESTORUNLEGACYSCRIPTS"/> 
        <pluginreference ref="ISHRESTOREDOCTYPE"/>
        <pluginreference ref="ISHRUNDITAOT"/>
        <pluginreference ref="ISHFINDDITAOTPDFRESULTFILE"/>
        <pluginreference ref="ISHUPLOADDITAOTRESULTFILE"/>
      </sequence>
    </postprocess>
    ...
    <postprocess ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishxpp'">
      <sequence>
        <pluginreference ref="ISHREMOVENOTLOCKEDNAVTITLES"/>
        <pluginreference ref="ISHCHECKREFERENCES"/>
        <pluginreference ref="ISHSAVEFILESTORUNLEGACYSCRIPTS"/>
        <pluginreference ref="ISHRESTOREDOCTYPE"/>
        <pluginreference ref="ISHRUNDITAOT"/>
        <plugin name="ISHRUNSDLXPP" handler="IshRunSDLXPP">
          <description>
            Uploads the merged xml file obtained from DITA-OT together with the images to SDL XPP and
            runs the transformation to convert them to PDF
          </description>
          <initialize>
            <parameters>
              <parameter name="ScriptsFolder">%ISHPROJECTAPPPATH%\Utilities\PublishingService\Tools</parameter>
            </parameters>
          </initialize>
        </plugin>
        <pluginreference ref="ISHFINDDITAOTPDFRESULTFILE"/>
        <pluginreference ref="ISHUPLOADDITAOTRESULTFILE"/>
      </sequence>
    </postprocess>
    ...
    <plugindefinitions>
      <plugindefinition name="ISHREMOVENOTLOCKEDNAVTITLES" handler="IshRemoveNotLockedNavTitles">
        <description>
        Removes 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.
        </description>
       <initialize />
      </plugindefinition>
      <plugindefinition name="ISHCHECKREFERENCES" handler="IshCheckReferences">
        <description>Checks that the links, hyperlinks, conref, conrefend, keyrefs targets exist and updates the report items with the found status.</description>
        <initialize>
          <parameters>
            <!-- When the CorrectLegacyHyperlinkSyntaxToDITA is set to yes, hyperlink reference values of the form LOGICALID#ELEMENTID will be corrected to the DITA    -->
            <!-- syntactically correct LOGICALID#LOGICALID/ELEMENTID. Note that this correction towards LOGICALID#LOGICALID/ELEMENTID might produce an incorrect result -->
            <!-- if you have content files that contain more than one topic element and the reference value actually contained a LOGICALID#TOPICID. -->
            <parameter name="CorrectLegacyHyperlinkSyntaxToDITA">yes</parameter>
            <parameter name="DraftWhenInvalidHyperlink">yes</parameter>
          </parameters>
        </initialize>
      </plugindefinition>
      ...
    </plugindefinitions>
  </publish>
</infoSharePublishPluginConfig>