MultiFormatOutputComponent Class

This build component is used to execute one or more sets of build components each based on a specific help file output format.

Definition

Namespace: SandcastleBuilder.Components
Assembly: Sandcastle.Tools.BuildComponents (in Sandcastle.Tools.BuildComponents.dll) Version: 2024.12.21.0
public class MultiFormatOutputComponent : BuildComponentCore
Inheritance
Object    BuildComponentCore    MultiFormatOutputComponent

Remarks

One or more components can be executed based on a specified list of one or more help file output formats. Only the components related to the requested set of format types will be executed.

Example

Example Configuration
<!-- Multi-format output component.  This must wrap the component set
 unique to each output file format. -->
<component id="Multi-format Output Component">
  <!-- This defines the formats to generate -->
  <build formats="{@HelpFileFormat}" />

  <!-- This defines the set of components for HTML Help 1 files -->
  <helpOutput format="HtmlHelp1">
    <!-- Add additional header resources -->
    <component id="Additional Header Resources Component">
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <stylesheet name="../styles/branding-Help1.css" />
    </component>

    <!-- Resolve shared content -->
    <component id="Shared Content Component">
      {@ResourceItemFiles}
    </component>

    <!-- Resolve conceptual links -->
    <component id="Resolve Conceptual Links Component">
      <showBrokenLinkText value="true" />
      <targets base="xmlComp" type="Local" />
    </component>

    <!-- Resolve reference links -->
    <component id="Resolve Reference Links Component">
      <linkTarget value="{@SdkLinkTarget}" />
      <targets base="{@FrameworkReflectionDataFolder}" recurse="true" files="*.xml"
        type="{@HtmlSdkLinkType}" id="FrameworkTargets">
        {@ReferenceLinkNamespaceFiles}
      </targets>
      <targets files="reflection.xml" type="Local" id="ProjectTargets" />
    </component>

    <!-- Convert language-specific text spans to script elements -->
    <component id="Language-Specific Text Component" />

    <!-- Save the result -->
    <component id="Save Component">
      <save base="Output\HtmlHelp1\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')"
        indent="{@IndentHtml}" omit-xml-declaration="true" add-xhtml-namespace="false"
        groupId="Help1 API" boundedCapacity="{@SaveComponentCacheCapacity}" />
    </component>
  </helpOutput>

  <!-- This defines the set of components for MS Help Viewer files -->
  <helpOutput format="MSHelpViewer">
    <!-- Add additional header resources -->
    <component id="Additional Header Resources Component">
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <stylesheet name="styles/branding-HelpViewer.css" />
      {@SearchResultsDisplayVersion}
    </component>

    <!-- Resolve shared content -->
    <component id="Shared Content Component">
      {@ResourceItemFiles}
    </component>

    <!-- Resolve conceptual links -->
    <component id="Resolve Conceptual Links Component">
      <showBrokenLinkText value="true" />
      <targets base="xmlComp" type="Id"/>
    </component>

    <!-- Resolve reference links -->
    <component id="Resolve Reference Links Component">
      <linkTarget value="{@SdkLinkTarget}" />
      <targets base="{@FrameworkReflectionDataFolder}" recurse="true" files="*.xml"
        type="{@MSHelpViewerSdkLinkType}" id="FrameworkTargets">
        {@ReferenceLinkNamespaceFiles}
      </targets>
      <targets files="reflection.xml" type="Id" id="ProjectTargets" />
    </component>

    <!-- Add MSHC metadata -->
    <component id="Microsoft Help Viewer Metadata Component">
      <data topic-version="{@TopicVersion}" toc-file="toc.xml" toc-parent="{@ApiTocParentId}"
        toc-parent-version="{@TocParentVersion}" />
    </component>

    <!-- Convert language-specific text spans to script elements -->
    <component id="Language-Specific Text Component" />

    <!-- Save the result -->
    <component id="Save Component">
      <save base="Output\MSHelpViewer\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')"
        indent="{@IndentHtml}" omit-xml-declaration="false" add-xhtml-namespace="true"
        groupId="MSHelpViewer API" boundedCapacity="{@SaveComponentCacheCapacity}" />
    </component>
  </helpOutput>

  <!-- This defines the set of components for websites -->
  <helpOutput format="Website">
    <!-- Add additional header resources -->
    <component id="Additional Header Resources Component">
      <meta http-equiv="X-UA-Compatible" content="IE=edge" />
      <stylesheet name="../styles/branding-Website.css" />
      <script name="../scripts/jquery-3.5.1.min.js" />
      <script name="../scripts/branding-Website.js" />
      <script name="../scripts/clipboard.min.js" />
    </component>

    <!-- Resolve shared content -->
    <component id="Shared Content Component">
      {@ResourceItemFiles}
      <!-- This must appear last to override the website ad content item -->
      <content file="WebsiteContent.xml" />
    </component>

    <!-- Resolve conceptual links -->
    <component id="Resolve Conceptual Links Component">
      <showBrokenLinkText value="true" />
      <targets base="xmlComp" type="Local" />
    </component>

    <!-- Resolve reference links -->
    <component id="Resolve Reference Links Component">
      <linkTarget value="{@SdkLinkTarget}" />
      <targets base="{@FrameworkReflectionDataFolder}" recurse="true" files="*.xml"
        type="{@WebsiteSdkLinkType}" id="FrameworkTargets">
        {@ReferenceLinkNamespaceFiles}
      </targets>
      <targets files="reflection.xml" type="Local" id="ProjectTargets" />
    </component>

    <!-- Convert language-specific text spans to script elements -->
    <component id="Language-Specific Text Component" />

    <!-- Save the result -->
    <component id="Save Component">
      <save base="Output\Website\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')"
        indent="{@IndentHtml}" omit-xml-declaration="true" add-xhtml-namespace="false"
        groupId="Website API" boundedCapacity="{@SaveComponentCacheCapacity}" />
    </component>
  </helpOutput>
</component>

Constructors

Properties

BuildAssembler This read-only property returns a reference to the build assembler instance using the component
(Inherited from BuildComponentCore)
GroupId This is used to set an optional group ID for use with component events
(Overrides BuildComponentCoreGroupId)

Methods

Apply This is implemented to execute each set of components for the requested output formats.
(Overrides BuildComponentCoreApply(XmlDocument, String))
Dispose This implements the Dispose() interface to properly dispose of the build component.
(Inherited from BuildComponentCore)
Dispose(Boolean) This can be overridden by derived classes to add their own disposal code if necessary.
(Overrides BuildComponentCoreDispose(Boolean))
EqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Finalize This handles garbage collection to ensure proper disposal of the build component if not done explicitly with Dispose.
(Inherited from BuildComponentCore)
GetHashCodeServes as the default hash function.
(Inherited from Object)
GetTypeGets the Type of the current instance.
(Inherited from Object)
Initialize This abstract method must be overridden to initialize the component
(Overrides BuildComponentCoreInitialize(XPathNavigator))
MemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
OnComponentEvent This can be used to raise the ComponentEvent event with the specified event arguments.
(Inherited from BuildComponentCore)
ToStringReturns a string that represents the current object.
(Inherited from Object)
WriteMessage(MessageLevel, String, Object) This can be used to report a message
(Inherited from BuildComponentCore)
WriteMessage(String, MessageLevel, String, Object) This can be used to report a message for a specific topic ID
(Inherited from BuildComponentCore)

See Also