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.

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.

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.

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.
postprocess @ishconditionThe condition that determines whether the current postprocess sequence should be executed or not.
sequenceThe element that contains a sequence of publish post process plugins.
pluginDescribes one single publish plugin.
plugin @nameThe name of the plugin.
plugin @handlerThe reference to the plugin implementation.
plugin @ishconditionThe condition that determines when the current plugin should be executed.
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.
parameter @ishconditionThe condition for which the parameter will be passed to the plugin.
Example:
<postprocess ishcondition="ISHOutputFormat.FDITAOTTRANSTYPE='ishditadelivery'">
  <sequence>
    ...
    <plugin name="ISHUPLOADPUBLISHRESULT" handler="IshUploadPublishResult">
      <description>Uploads the file specified in the Items collection by the given key as a result to the publication output</description>
      <initialize>
        <parameters>
          <parameter name="FilePathToUploadContextItemsKey">CompressedFilePath</parameter>
        </parameters>
      </initialize>
    </plugin>
    ...
  </sequence>
</postprocess>

Supported conditions

The following condition names can be used for determining if the plugin must be executed:
Condition nameDescription
ISHTypeThis controls when to execute the plugin depending on the type of the object to publish.
ISHLevelThis controls when to execute the plugin 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).
  • ...

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
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)

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='ishditadelivery'">
      <sequence>
        ...
        <plugin name="ISHCOMPRESSPUBLISHRESULT" handler="IshCompressPlugin">
          <description>Compresses the file with the publish result specified in the Items collection.</description>
          <initialize>
            <parameters>
              <parameter name="FullPathToCompressContextItemsKey">ExtendedOverallPackageObjectFilePath</parameter>
              <parameter name="CompressionLevel">Optimal</parameter>
              <parameter name="IncludeBaseDirectory">No</parameter>
            </parameters>
          </initialize>
        </plugin>
        <plugin name="ISHUPLOADPUBLISHRESULT" handler="IshUploadPublishResult">
          <description>Uploads the file specified in the Items collection by the given key as a result to the publication output</description>
          <initialize>
            <parameters>
              <parameter name="FilePathToUploadContextItemsKey">CompressedFilePath</parameter>
            </parameters>
          </initialize>
        </plugin>
        ...
      </sequence>
    </postprocess>
  </publish>
</infoSharePublishPluginConfig>