# Intro Content File XML Format

###### Identifier:

Intro Content File XML Format..

###### Description:

This document describes the intro content file structure as a series of DTD fragments.

###### Configuration Markup:

<!ELEMENT introContent ((page | group)+ | (extensionContent | replacementContent))>

The introContent element defines the body of the intro content file. The content file is made up of pages, shared groups that can be included in multiple pages, extensions to anchor points defined in other configurations, or replacements of existing elements.

<!ELEMENT page (group | link | text | head | img | include | html | title | anchor | contentProvider)+>

<!ATTLIST page

id CDATA #REQUIRED

url CDATA #IMPLIED

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

filteredFrom (swt|html)

content CDATA #IMPLIED

style-id CDATA #IMPLIED

shared-style (true | false)

bgImage CDATA #IMPLIED>

This element is used to describe a page to be displayed. The intro can display both dynamic and static pages. Content for dynamic pages is generated from the subelements of the page, described below. The style or alt-style will be applied depending on the presentation. The styles can be further enhanced by referencing the id or class-id.

Static pages allow for the reuse of existing HTML documents within one's introduction, and can be linked to from any static or dynamic page. Static pages are not defined in a page element, they are simply html files that can be linked to by other pages.

The home page, whose id is specified in the presentation element of the intro config extension point, can have a url indicating that it is a static page. If no url is specified then the home page is assumed to be dynamic. All other pages described using the page element are dynamic. Also note that when the SWT presentation is used and a static page is to be displayed, an external brower is launched and the current page remains visible.

The subelements used in a dynamic page are as follows: A group subelement is used to group related content and apply style across the grouped content. A link subelement defines a link which can be used to link to a static or dynamic page and run an intro action/command. A link is normally defined at the page level to navigate between main pages versus links within a page. A text subelement defines textual content at the page level. A head subelement is only applicable for the Web based presentation and allows for additional html to be added to the HTML head section. This is useful for adding java scripts or extra style sheets. An img subelement defines image content for the page level. An include subelement allows for reuse of any element other than a page. An html subelement is only applicable for the Web based presentation and allows for the embedding or inclusion of html into the page's content. Embedding allows for a fully defined html file to be embeded within an HTML object by referencing the html file. Inclusion allows for including an html snippet directly from an html file. A title subelement defines the title of the page. An anchor subelement defines a point where external contributions can be made by an <extensionContent> element.

- id - A unique name that can be used to identify this page.
- url - The optional relative path to an HTML file. When using the Web based presentation, this HTML file will be displayed instead of any content defined for this page. This attribute is only applicable to the home page, which is identified in the presentation element of the intro config extension point. It is ignored for all other pages.
- style - A relative path to a CSS file which is applied to the page only when using the Web based presentation. The path is relative to the location of this xml content file.
  Since 3.1, styles can also be a comma separated list of styles. These styles will be injected into the HTML HEAD element in the order in which they are listed in the style attribute.
- alt-style - A relative path to a SWT presentation properies file which is applied to the page only when using the SWT based presentation. The path is relative to the location of this xml content file.
  Since 3.1, styles can also be a comma separated list of styles. These styles will be used when creating the SWT presentation of the welcome page.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.
- content - an optional attribute which can define the location of an introContent.xml file that represents the content of this page. When this attribute is defined, all children and attributes in this page element, except id, are ignored. This is because the content of this page is now assumed to reside in the xml file pointed to by the content file attribute. When resolving to the content of this file, the page with an id that matches the id defined in this page element is chosen. This seperation of pages can be used when performance is an issue, as the content of a page is now loaded more lazily.
  Since 3.1, if the content of the external file is XHTML 1.0, then the page is rendered as is.
- style-id - A means to classifiy the page into a given category so that a common style may be applied.
- shared-style - a boolean flag that controls the addition of the shared style into this page's list of styles. If `true` (the default), the shared style is added to this page's styles. If `false`, the shared style defined in the Intro configuration will not be injected into the styles of this page.
- bgImage - an optional URL of the image to use as a background for this group

<!ELEMENT group (group | link | text | img | include | html | anchor | contentProvider)*>

<!ATTLIST group

id CDATA #REQUIRED

label CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html)

computed (true | false) "false"

bgImage CDATA #IMPLIED

expandable (true | false) "false"

expanded (true | false) "false">

Used to group related content, content that should have similar style applied, or content that will be included together in other pages.

- id - unique identifier of the group
- label - a label or heading for this group
- style-id - A means to classifiy this group into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.
- computed - if `true`, the children of this group will be provided by the intro configurer at run time. It is advised not to define any children statically in this case.
- bgImage - an optional URL of the image to use as a background for this group
- expandable - specifies whether or not the group can be expanded and collapsed. Defaults to false if not specified. If true, the expanded attribute will be consulted to determine whether or not the group should be expanded by default or not.
- expanded - specifies whether the expandable group should be expanded by default or not. Defaults to false (collapsed) if not specified. This only applies to expandable groups (where expandable was set to true). Has no effect otherwise.

<!ELEMENT head EMPTY>

<!ATTLIST head

src CDATA #REQUIRED

encoding CDATA #IMPLIED>

Direct HTML to include in a page's HEAD content area. It allows for additional html to be added to the HTML HEAD section. This is useful for adding java srcipts or extra styles sheets. If the content contains substitution segments of the form $plugin:plugin_id$ then they will be replaced with the absolute path to the plugin with id plugin_id. This markup is only to be used with an HTML based intro part implementation. It is simply ignored in the case of a UI Forms implementation. A page can have more than one head element. An implementation can have one and only one head element (since it is a shared across all pages).

- src - relative or absolute URL to a file containing HTML to include directly into the HTML head section. If the content contains substitution segments of the form $plugin:plugin_id$ then they will be replaced with the absolute path to the plugin with id plugin_id.
- encoding - an optional attribute to specify the encoding of the inlined file containing the head snippet. Default is UTF-8. Since 3.0.1

<!ELEMENT title EMPTY>

<!ATTLIST title

id CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

a snippet of text that can optionally contain escaped HTML tags. It is only used as a Page Title, and so a given page can have a maximum of one title element.

- id - unique identifier of this title.
- style-id - A means to classifiy this element into a given category so that a common style may be applied
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT link (text? , img?)>

<!ATTLIST link

url CDATA #REQUIRED

id CDATA #IMPLIED

label CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

Can link to a static HTML file, an external web site, or can run an Intro URL action.

- url - A valid URL to an external web site, a static html file, or an Intro URL that represents an Intro action. All intro URLs have the following form: http://org.eclipse.ui.intro/<action name>?param1=value1&param2=value2 and will be processed by the intro framework.
  The predefined actions will be described using this format:

  action name - descripton of action
  action parameter1 - description of parameter
  action parameter2 (optional) - description of parameter
  action parameter3 (optional) = ("true" "false") "false" - description of parameter, choice of either true or false and "false" is the default

  The following predefined actions are included in the intro framework:

  close - closes the intro part
  no parameters required
  navigate - navigate through the intro pages in a given direction or return to the home page
  direction = ("backward" "forward" "home") - specifies the direction to navigate
  openBrowser - open the url in an external browser. Since 3.1, this action relies on the workbench Browser support. This means that any user preferences set for the browser will be honored.
  url - a valid URL to an external web site or a local HTML file
  pluginId (optional) - if the url is relative, then it is relative to a plugin. Specify here the id of the plug-in containing the file.
  openURL - open the url embedded in the Welcome page. In the case of SWT presentation, the url is displayed in an external browser (similar to the openBrowser action above). since 3.1
  url - a valid URL to an external web site or to a local HTML file
  pluginId (optional) - if the url is relative, then this specifies the id of the plug-in containing the file.
  runAction - runs the specified action
  class - the fully qualified class name of the class that implements one of `org.eclipse.ui.intro.config.IIntroAction`, `org.eclipse.jface.actino.IAction`, or `org.eclipse.ui.IActionDelegate`
  pluginId - The id of the plug-in which contains the class.
  standby (optional) = ("true" "false") "false" - indicate whether to set the intro into standby mode after executing the action
  additional parameters - any additional parameters are passed to actions that implement `org.eclipse.ui.intro.config.IIntroAction`
  execute - executes the specified command. See the `serialize()` method on `org.eclipse.core.command.ParameterizedCommand` for details of the command serialization format. Since 3.2.
  command - a serialized `ParameterizedCommand`
  standby (optional) = ("true" | "false") "false" - indicate whether to set the intro into standby mode after executing the command
  setStandbyMode - sets the state of the intro part
  standby = ("true" "false") - true to put the intro part in its partially visible standy mode, and false to make it fully visible
  showHelp - Open the help system.
  no parameters required
  showHelpTopic - Open a help topic.
  id - the URL of the help resource. (See Javadoc for `org.eclipse.ui.help.WorkbenchHelp.displayHelpResource)`
  embed (optional) = ("true" "false") "true" - indicates that the help resource needs to be displayed embedded as part of the Welcome pages. Default is false. This flag is simply ignored in the case of the SWT presentation. This is equivalent to openURL() command, but for Help System topics. The embedded URL occupies the full real-estate of the current page. since 3.1
  embedTarget (optional) - the path to a div in the current Welcome page that will hold the content of the Help topic. If specified, then embed is true by default and the embedded URL is inserted inside the div with the specified path. The path is relative to the page and so it should not start with the page id. The children of the div are replaced by the content of the URL. Only one div per page can be used as an embed target. This flag is simply ignored in the case of the SWT presentation. It is also unsupported when using XHTML as intro content. since 3.1
  showMessage - Displays a message to the user using a standard information dialog.
  message - the message to show the user
  showStandby - Sets the intro part to standby mode and shows the standbyContentPart with the given input
  partId - the id of the standbyContentPart to show
  input - the input to set on the standbyContentPart
  showPage - show the intro page with the given id
  id - the id of the intro page to show
  standby (optional) = ("true" "false") "false" - indicate whether to set the intro into standby mode after showing the page
  If any of the parameters passed to these actions have special characters (ie: characters that are illegal in a URL), then they should be encoded using UTF-8 url encoding. To receive these parametrs in there decoded state a special parameter, decode = ("true" "false") can be used to force a decode of these parameters when the Intro framework processes them.
  For example, the following Intro url:
  http://org.eclipse.ui.intro/showMessage?message=This+is+a+message
  will process the message parameter as "This+is+a+message"
  whereas
  http://org.eclipse.ui.intro/showMessage?message=This+is+a+message&amp;decode=true
  will process the message parameter as "This is a message".

- id - A unique id that can be used to identify this link
- label - The text name of this link
- style-id - A means to classifiy this link into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT text EMPTY>

<!ATTLIST text

id CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

a snippet of text that can optionally contain escaped HTML tags. It can include b and li tags. It can also contain anchors for urls. If multiple paragraphs are needed, then the text can be divided into multiple sections each begining and ending with the p tag.

- id - unique identifier of this text.
- style-id - A means to classify this element into a given category so that a common style may be applied
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT img EMPTY>

<!ATTLIST img

src CDATA #REQUIRED

id CDATA #IMPLIED

alt CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

An image that represents intro content and not presentation (as opposed to decoration images defined in styles).

- src - the file to load the image from
- id - unique identifier of this image
- alt - the alternative text to use when the image can not be loaded and as tooltip text for the image.
- style-id - A means to classifiy this image into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT html (img | text)>

<!ATTLIST html

id CDATA #REQUIRED

src CDATA #REQUIRED

type (inline|embed)

style-id CDATA #IMPLIED

filteredFrom (swt|html)

encoding CDATA #IMPLIED>

direct HTML to include in the page either by embedding the entire document, or inlining a snippet of HTML in-place. A fallback image or text must be defined for alternative swt presentation rendering. If the content contains substitution segments of the form $plugin:plugin_id$ then they will be replaced with the absolute path to the plugin with id plugin_id.
Embedding allows for a fully defined html file to be embedded within the dynamic page's content. An HTML object element is created that references the html file.
Inclusion allows for including an html snippet directly from a file into the dynamic html page.

- id - unique identifier of this HTML element
- src - relative or absolute URL to a file containing HTML. If the content contains substitution segments of the form $plugin:plugin_id$ then they will be replaced with the absolute path to the plugin with id plugin_id.
- type - if 'embed', a valid (full) HTML document will be embedded using HTML 'OBJECT' tag. If 'inline', value of 'src' will be treated as a snippet of HTML to emit 'in-place'. (if type is not specified, this html object is ignored by the intro configuration).
- style-id - A means to classifiy this HTML element into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.
- encoding - an optional attribute to specify the encoding of the inlined file (in the case where type=inline is specified). If not specified, the default is UTF-8. Since 3.0.1

<!ELEMENT include EMPTY>

<!ATTLIST include

path CDATA #REQUIRED

configId CDATA #IMPLIED

merge-style (true | false) >

expands an element targeted by the given path and optional configId attributes. Path should uniquely address an element within the specified configuration. It could point to a shared group defined at the configuration level, or any element in a page.

- path - the path that uniquely represents the target element within the configuration (e.g. page/group1/group2). It may be a group element, or any element that may be contained in a group. You can not include a page.
- configId - identifier of a configuration where the included element is defined. If specified, it is assumed that the element to be included is specified in another configuration, and not the enclosing configuration. In this case, that external config is loaded and the element is resolved from that new config. If not specified, enclosing (parent) configuration of this include is assumed.
- merge-style - if `true`, style belonging to the page that owns the included element will be added to list of styles of the including page. If `false` (the default), the including page is responsible for controlling properties of the included element.

<!ELEMENT anchor EMPTY>

<!ATTLIST anchor

id CDATA #REQUIRED>

an anchor is the element used to declare extensibility. It is a location in the configurtaion that allows for external contributions. Only anchors are valid target values for the path attribute in an extensionContent

- id - unique id to identify this anchor.

<!ELEMENT extensionContent (text | group | link | html | include)+>

<!ATTLIST extensionContent

path CDATA #REQUIRED

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

content CDATA #IMPLIED

id CDATA #IMPLIED

name CDATA #IMPLIED>

The content to be added to the target anchor. Only one `extensionContent` or `replacementContent` is allowed in a given configExtension because if this extension could not be resolved (if the config could not be found, or the target anchor could not be found) then the pages and/or groups in the extension need to be ingnored.

- path - the path that uniquely represents the path to an anchor. (e.g. page/group1/group2/anchorId) within the target configuration to be extended. It can only be an anchor which can be in any page or group, including shared groups at configuration level.
- style - A relative path to a CSS file which is applied to the page only when using the Web based presentation. The path is relative to the location of this xml content file.
  Since 3.1, styles can also be a comma separated list of styles. These styles will be injected into the HTML HEAD element in the order in which they are listed in the style attribute.
- alt-style - A relative path to a SWT presentation properies file which is applied to the page only when using the SWT based presentation. The path is relative to the location of this xml content file.
  Since 3.1, styles can also be a comma separated list of styles. These styles will be used when creating the SWT presentation of the welcome page.
- content - if content is defined, it is assumed that the extension content is defined in an external XHTML file. In that case the resource pointed to by this content attribute is loaded and the path attribute is now resolved in this external file. since 3.1
- id - (since 3.2) a unique identifier of this extension required when used in conjunction with intro configurer.
- name - (since 3.2) a translatable name of this extension required when used in conjunction with intro configurer

<!ELEMENT replacementContent (text | group | link | html | include)+>

<!ATTLIST replacementContent

path CDATA #REQUIRED

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

content CDATA #IMPLIED>

(since 3.3) The content to replace the target element. Only one `extensionContent` or `replacementContent` is allowed in a given configExtension because if this extension could not be resolved (if the config could not be found, or the target element could not be found) then the pages and/or groups in the extension need to be ignored.

- path - the path that uniquely represents the path to the element to be replaced. (e.g. page/group1/group2/elementId) within the target configuration to be extended. To replace content contributed from an `extensionContent`, you may use a path of the form `pageId/@extension_id/path_in_extension` and it will be resolved to the specified extension.
- style - A relative path to a CSS file which is applied to the page only when using the Web based presentation. The path is relative to the location of this xml content file.
  Since 3.1, styles can also be a comma separated list of styles. These styles will be injected into the HTML HEAD element in the order in which they are listed in the style attribute.
- alt-style - A relative path to a SWT presentation properies file which is applied to the page only when using the SWT based presentation. The path is relative to the location of this xml content file.
  Since 3.1, styles can also be a comma separated list of styles. These styles will be used when creating the SWT presentation of the welcome page.
- content - if content is defined, it is assumed that the extension content is defined in an external XHTML file. In that case the resource pointed to by this content attribute is loaded and the path attribute is now resolved in this external file. since 3.1

<!ELEMENT contentProvider (text?)>

<!ATTLIST contentProvider

id CDATA #REQUIRED

class CDATA #REQUIRED

pluginId CDATA #IMPLIED>

A proxy for an intro content provider, which allows an intro page to dynamically pull data from various sources (e.g., the web, eclipse, etc) and provide content at runtime based on this dynamic data. If the IIntroContentProvider class that is specified in the class attribute can not be loaded, then the contents of the text element will be rendered instead. This is a dynamic version of the html intro tag. While the html tag allows for embedding or inlining a static html content into the generated html intro page, the contentProvider tag allows for dynamic creation of that content at runtime. Another difference between the tags is that the html tag is only supported for the HTML presentation, while this contentProvider tag is supported for both the HTML and SWT presentations. Since 3.0.1

- id - unique identifier of this content provider element. It is a required attribute because having a unique id is what prevents the intro framework from reinstantiating this content provider class and recreating its content.
- class - A class that implements the IContentProvider interface
- pluginId - The id of the plugin that contains the IContentProvider class specified by the class attribute. This is an optional attribute that should be used if the class doesn't come from the same plugin that defined the markup.

<!ELEMENT hr EMPTY>

<!ATTLIST hr

id CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

a horizontal rule.

- id - unique identifier of this hr
- style-id - A means to classify this element into a given category so that a common style may be applied
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

Copyright (c) 2004, 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-2.0/ SPDX-License-Identifier: EPL-2.0