Table of Contents

MultiFormatOutputComponent Class

Definition

Namespace
Sandcastle.Tools.BuildComponents
Assembly
Sandcastle.Tools.BuildComponents.dll

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

public class MultiFormatOutputComponent : BuildComponentCore, IDisposable
Inheritance
MultiFormatOutputComponent
Implements

Examples

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

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.

Constructors

MultiFormatOutputComponent(IBuildAssembler)

Constructor

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

Methods

Apply(XmlDocument, string)

This is implemented to execute each set of components for the requested output formats.

Dispose()

This implements the Dispose() interface to properly dispose of the build component.

(Inherited from BuildComponentCore)
Dispose(bool)

This can be overridden by derived classes to add their own disposal code if necessary.

Initialize(XPathNavigator)

This abstract method must be overridden to initialize the component