# Content Extension

###### Identifier:

org.eclipse.help.contentExtension

###### Description:

This extension point is for supporting dynamic and reusable content in user assistance documents. It allows for contributing content into an existing document. A document can declare that it can accept content contributions by explicitly specifying these contribution points using an `anchor` element. An element in a document with a unique `id` attribute specified can be replaced.

Content extensions are applicable to the following types of documents:

- Help XHTML topics
- Help table of contents
- Help keyword index
- Help context-sensitive help
- Cheat sheets (both simple and composite)

Welcome content is extended using the `org.eclipse.ui.intro.configExtension` extension point.

###### Configuration Markup:

<!ELEMENT extension (contentExtension | contentExtensionProvider)+>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

<!ELEMENT contentExtension EMPTY>

<!ATTLIST contentExtension

file CDATA #REQUIRED>

Defines content extension to one or more user assistance documents. The location of the content extension file is specified by the `file` attribute.

- file - a plugin-relative path to the location of an extension content file. An extension content file is an XML file that specifies the location of content contributions and the target document where they should be merged into. A content extension is either a contribution of content at a known anchor, or the replacement of an element in an existing document. The content file is parsed at run time by the platform and each content extension is loaded and inserted into the target location specified by the anchor.

  This content file should have the a syntax like the following:

      <contentExtension>
         <contribution
               content="bundleRelativePath/content.xhml"
               path="pluginId/path/file.xml#elementId"/>
         <replacement
               content="bundleRelativePath/content.xhml"
               path="pluginId/path/file.xml#elementId"/>
      </contentExtension>

  `contribution` is the element used to insert content at the target anchor location. `replacement` is the markup used to replace the content of the target element by the specified content. In other words, content can be contributed that either adds to the target location or replaces the content of the target location.

<!ELEMENT contentExtensionProvider EMPTY>

<!ATTLIST contentExtensionProvider

class CDATA #REQUIRED>

(since 3.3) Allows java code to be plugged-in so that extensions can be generated at run-time. This is an alternative to the XML file, has the same capabilities, but doesn't require you to provide static XML.

- class - the implementation class for the content extension provider. This class must implement the `org.eclipse.help.AbstractContentExtensionProvider` interface and must have a no-arg constructor.

###### Examples:

The following is an example of using the `contentExtension` extension point.

In file `plugin.xml`:

       <extension point="org.eclipse.help.contentExtension">
          <contentExtension file="contentExtensionFile.xml"/>
       </extension>

In file `contentExtensionFile.xml`:

       <contentExtension>
          <contribution
                content="xhtml/topicA.xhtml"
                path="/org.xxx.yyy.somePluginId/xhtml/someHelpPage.xhtml#topicAnchor"/>
       </contentExtension>

The above contribution inserts the content of the XHTML file, `topicA.xhtml`, into the target Help system page specified by the `path` attribute. In this case, the content extension will be inserted in the location of an anchor called `topicAnchor` in page `someHelpPage.xhtml` in plugin `org.xxx.yyy.somePluginId`.

###### API Information:

An implementation of `org.eclipse.help.AbstractContentExtensionProvider` must be supplied if a `contentExtensionProvider` is used.

Note: `contribution` and `replacement` were introduced in 3.3, replacing the old `topicExtension` and `topicReplace` elements, in order to be more general. The old elements are deprecated but will still work.

###### Supplied Implementation:

The default implementation of the base help system supplied with the Eclipse platform fully supports this extension point.

Copyright (c) 2000, 2006 IBM Corporation and others.
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html/ SPDX-License-Identifier: EPL-2.0