# Intro Content File XML Format

Version 3.1.0

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

## `introContent`

<!ELEMENT introContent (page+ , group* , extensionContent*)>

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, and extensions to anchor points defined in other configurations.

## `page`

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

<!ATTLIST page

url CDATA #IMPLIED

id CDATA #REQUIRED

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

filteredFrom (swt|html)

content CDATA #IMPLIED

style-id 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 sub elements 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 browser 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.

- 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.
- id - A unique name that can be used to identify this page.
- 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 properties 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 separation 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 classify 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.

## `group`

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

<!ATTLIST group

id CDATA #REQUIRED

label CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

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 classify 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.

## `link`

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

<!ATTLIST link

id CDATA #IMPLIED

label CDATA #IMPLIED

url CDATA #REQUIRED

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.

- id - A unique id that can be used to identify this link
- label - The text name of this link
- 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 - description 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 static HTML file
pluginId (optional) - only required if a static HTML file is specified. This is 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.action.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`
setStandbyMode - sets the state of the intro part
standby = ("true" | "false") - true to put the intro part in its partially visible standby 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. 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 recieve 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".

- style-id - A means to classify 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.

## `html`

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

## `title`

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

## `text`

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

## `include`

<!ELEMENT include EMPTY>

<!ATTLIST include

configId CDATA #IMPLIED

path CDATA #REQUIRED

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.

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

## `head`

<!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 scripts or extra styles sheets. 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.
- encoding - an optional attribute to specify the encoding of the inlined file containing the head snippet. Default is UTF-8. Since 3.0.1

## `img`

<!ELEMENT img EMPTY>

<!ATTLIST img

id CDATA #REQUIRED

src CDATA #REQUIRED

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

- id - unique identifier of this image
- src - the file to load the image from
- 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 classify 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.

## `extensionContent`

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

<!ATTLIST extensionContent

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

path CDATA #REQUIRED>

The content to be added to the target anchor. Only one extensionContent 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 element could not be found) then the pages and/or groups in the extension need to be ignored.

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

## `anchor`

<!ELEMENT anchor EMPTY>

<!ATTLIST anchor

id CDATA #REQUIRED>

an anchor is the element used to declare extensibility. It is a location in the configuration 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.

## `contentProvider`

<!ELEMENT contentProvider (text)>

<!ATTLIST contentProvider

id CDATA #REQUIRED

pluginId CDATA #IMPLIED

class CDATA #REQUIRED>

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.
- pluginId - The id of the plug-in 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 plug-in that defined the markup.
- class - A class that implements the IContentProvider interface

Copyright (c) 2004 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html