blob: c8613fda1fe7c4c9d14f194d5d1c5791ec0b65db [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://schemas.niku.com/2002/web" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://schemas.niku.com/2002/web" xmlns:sec="http://schemas.niku.com/2002/security"
xmlns:srv="http://schemas.niku.com/2002/service" xmlns:xi="http://www.w3.org/2001/XInclude"
elementFormDefault="qualified">
<!-- import XInclude schema -->
<xsd:import namespace="http://www.w3.org/2001/XInclude" schemaLocation="xinclude.xsd"/>
<!-- Import security policy schema -->
<xsd:import namespace="http://schemas.niku.com/2002/security" schemaLocation="security-2002-02.xsd"/>
<!-- Import service schema -->
<xsd:import namespace="http://schemas.niku.com/2002/service" schemaLocation="service-2002-02.xsd"/>
<xsd:element name="module" type="moduleType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Web module is a collection of Web page elements that define the component's Web
site. Each application component defines a set of web pages for the application module in a separate WMD XML
file located under the src/META-INF/component/wmd directory. All web pages should be grouped into separate WMD
XML files or web modules based on features. WMD XML files use embedded XML elements from Security XML schema
(security-2002-02.xsd) for specifying security restrictions, and XInclude element for XML InfoSet reuse. In
order to use elements from external XML schemas, the appropriate XML namespaces (xmlns:sec and xmlns:xi) should
be specified for the root element of the instance document to ensure that the structure of WMD XML document can
be properly validated. The WMD XML schema location should also be specified in the instance document. WMD XML
instance documents located in union should use the following WMD XML schema location declaration:
xsi:schemaLocation="http://schemas.niku.com/2002/web ../xsd/web-2002-02.xsd". All other components should use
the following WMD XML schema location declaration: xsi:schemaLocation="http://schemas.niku.com/2002/web
../../union/xsd/web-2002-02.xsd".</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:complexType name="moduleType">
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="xi:include" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="moduleRef" type="ModuleRefType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="page" type="PageType" maxOccurs="unbounded"/>
<xsd:element name="processAction" type="ProcessActionType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="portlet" type="PortletType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:attribute name="schemaLocation" type="xsd:string" use="optional"/>
<xsd:attribute name="id" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines web module id to reference web modules from other modules via moduleRef
element. Module id attribute value should be unique for the whole web application. This attribute must use
component’s name prefix to avoid name collisions. Module id is used by the moduleRef element to importing all
web modules for the component into one WMD XML file and registering it for the component in
properties.xml</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="feature" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a web module feature id to classify web modules and contained pages
into application features. If page space attribute is not defined, module feature id will be used insted to
relate a page to the corrsponding application feature. This attribute must use component’s name prefix to
avoid name collisions, and normally defines a link to the entry page for the whole
feature.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="ModuleRefType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Complex type for referencing and including other web modules via module id. This
element is a part of the future enhancements for WMD XML. Its purpose is to replace component descriptor file
and to allow registering of a single WMD XML file for the component in properties.xml. The registred WMD XML
file will use moduleRef to import all other WMD XML files for the component. Similar solution could be achieved
with XInclude.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique module id for the whole Web application. Component namespace should be
used for this identifier to avoid name collissions.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="PageType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Page element contains all the information about a web page required to retrieve
or produce page content and display the page. This includes page and process web actions for the page, optional
list of imported web resources (e.g. CSS and JavaScript), portlets, security restrictions, and services
associated with the portlets or the whole page, in case of process action and POST requests.</xsd:documentation>
</xsd:annotation>
<xsd:sequence id="PageSequence">
<xsd:choice id="IncludeChoice" minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xi:include" minOccurs="0"/>
<xsd:element name="import" type="ImportType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:choice id="PagePolicyChoice" minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xi:include" minOccurs="0"/>
<xsd:element ref="sec:policy" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="sec:condition" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="sec:acl" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:choice id="PortletChoice" maxOccurs="unbounded">
<xsd:element ref="xi:include" minOccurs="0"/>
<xsd:element name="portletRef" type="PortletRefType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="portlet" type="PortletType" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:element name="pageAction" type="PageActionType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:choice id="ProcessActionChoice" minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xi:include" minOccurs="0"/>
<xsd:element name="processActionRef" type="ProcessActionRefType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="processAction" type="ProcessActionType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:element name="paramSet" type="ParamSetType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Page id attribute value should be unique for a component. This attribute must
use component’s name prefix followed by a dot and the actual unique component page id to avoid name
collisions. For example, union.testPage contains component’s name followed by unique page id for the
component. Page id is used for caching web page metadata, and linking a web page to the corresponding
context-sensitive help topic.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="title" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional page title dynamically set for customized pages. This attribute should
not be defined in static WMD XML files because this metadata is not localized! Runtime only page
property.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="componentId" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en">Component id is an optional attribute that specifies id of the component to
which a web page belongs. If not specified, the system will populate this value during initialization based on
information specified in config/properties.xml file and the corresponding component descriptor XML file. Valid
component id is a value of id attribute from one of the component elements specified in config/properties.xml.
Component id is used to construct the file paths and navigate component directory structure for locating web
resources (all component-specific XML files used by WMD).</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="help" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Help is an optional attribute to specify an alternative context-sensitive help
topic for the web page. By default page id is used to locate the corresponding context-sensitive help topic.
In cases when multiple Web pages use the same help topic, help attribute with the name of the help topic
should be used instead. This attribute should also use component prefix to avoid name
collisions.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="space" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Identifies the space/module to which this web page belongs. When this attribute
is specified and the header or left navigation used for the page contains an action element with
actionId=space, the corresponding space will be highlighted when the page is displayed.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="authenticate" type="xsd:boolean" default="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies whether or not user authentication is required prior to displaying
this page. The default authenticate attribute value is true, meaning that authentication is required for all
web pages by default. Therefore, there is no need to set authenticate=”true” explicitly. An attempt to
navigate to such web page without proper login will always result in a redirect to the login web page.
If the authenticate attribute is explicitly set to false, certain web pages can be exposed to external users
bypassing the proper login procedure. Marketplace web pages fall into this category.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="personalize" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Identifies whether or not a Web page is personalizable. All portlets for a
personalized Web page are processed by the PortletPersonalizer, and portlets are oredered and displayed based
on the user preferrences.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="pageType" default="page" type="pageTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Pages are categorized into different types as specified by the type attribute.
This information is used by the PortletController. Page templates are abstract pages that other pages
reference via the template atribute for including standard portlets in a page, such as header, footer and left
navigation. Page layers represent page tabs. All page layers must use the same page template, and include a
reusable tabs portlet, but can use different page layouts.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="instanceType" type="xsd:string" default="SYSTEM">
<xsd:annotation>
<xsd:documentation xml:lang="en">Pages may be of specific types, these are only set from the
database</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="parent" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional parent page reference attribute to specify the parent/container page
for a page layer (tab). This attribute is required for all page layers, and ignored for other page
types.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="pageBuilder" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies Web page builder class responsible for content preparation. Page
builder produces final page content by: 1) storing portlet content in the content map if layout template is
defined, and forwarding the request with the content map to the corresponding template, or 2) it can directly
produce the final page content via aggregation of portlet content and other UI properties.There is no need to
specify pageBuilder attribute for the page element explicitly because only one page builder (JSPPageBuilder)
is available at this time for NDE. Moreover, not specifying it keeps the migration options open when client
side XML transformations will be integrated into the application.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="serializer" type="xsd:string" use="optional" default="html">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the content output serializer for this request as defined in
properties.xml.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="template" type="xsd:string" use="optional" default="union.appPage">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional attribute to specify alternative page template for the Web page. Page
template defines standard portlet collection to be used for page rendering. Standard page portlets are:
header, footer and left navigation. The available page templates are: union.appPage, union.adminPage,
union.popup . Each page template includes different header and/or left navigation for rendering a page. The
default value references page template common for all application pages. Administration pages and popups need
to explicitly specify the appropriate page template reference.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="layout" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional attribute to specify alternative page layout template for the Web
page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="skin" use="optional" type="skinTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional attribute to assign an alternative skin or UI Look and Feel to be used
for rendering content of the whole web page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:element name="portlet" type="PortletType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Global portlet element for defining reusable portlets in separate WMD XML files
and importing them with XInclude.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:complexType name="PortletType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a single portlet for the web page and represents a visible section of the
rendered page. Portlet can contain security restrictions to evaluate for the view, a list of import elements for
including web resources, and different attributes for personalization, content aggregation, caching, and
security.</xsd:documentation>
</xsd:annotation>
<xsd:sequence id="PortletSequence">
<xsd:element name="import" type="ImportType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:choice id="PortletPolicyChoice" minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xi:include" minOccurs="0"/>
<xsd:element ref="sec:acl" minOccurs="0"/>
<xsd:element ref="sec:condition" minOccurs="0"/>
<xsd:element ref="sec:policy" minOccurs="0"/>
<xsd:element name="viewMode" type="ViewModeTypes" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
<xsd:element name="retrieveService" type="RetrieveServiceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="schemaLocation" type="xsd:string" use="optional"/>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Portlet id is a unique portlet identifier for the whole web application. As
with the page id, component namespace should be used for this identifier to avoid name collisions. Portlet id
is used as part of the key to cache portlet content and associate portlets with retrieve services for each web
page action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="instanceId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Portlet instance id used by page personalization features to display mulitple
instances of the same portlet on a single page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="instanceType" type="xsd:string" default="SYSTEM">
<xsd:annotation>
<xsd:documentation xml:lang="en">Portlet instance type used by page personalization
features.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="templateId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Portlet template id defines portlet instance id of the system page portlet from
which this portlet instance was created.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="componentId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Component id is required for reusable portlets and specifies the component name
in which the portlet is defined. It is used to construct the location path for view XSL file and rendering
portlet content.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="title" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional portlet title dynamically set for portlets included by a user for
personalized pages. This attribute should not be defined in static WMD XML files because this metadata is not
localized! Runtime only portlet property.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="collection" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional portlet collection name to specify for custom page templates and JSP
tags to layout and agregate portlet content. For most pages and existing page templates porltetType, col, and
row attributes should be used to classify portlets and define their position on the page. Portlet collections
are only for the remaining 1% of the pages that require custom layout. All custom page templates should still
be defined in webroot/WEB-INF/union/templates directory in union for easy maintenance.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="portletType" default="body" type="portletTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Portlets are categorized into different types as specified by the type
attribute. This information is used by the page layout manager during content aggregation and allows changing
web page layout for the whole application by modifying only page layout template code (JSP or XSLT).
Additional standard portlet types could be identified in the future and added to this
list.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="viewType" default="vxsl" type="viewTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">The portlet may process data using a VXSL, or the data may be a VXML, or even
straight HTML</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="view" type="xsd:string" use="optional" default="">
<xsd:annotation>
<xsd:documentation xml:lang="en">Relative location of the view XML or XSLT template used to generate view XML
from data XML received as a result of the service call for the portlet. View XML and XSL files are located
under /src/META-INF/component/vxsl directory. Each portlet must use a separate view XSL template. Static
portlets that don’t display dynamic data can reference view XML file directly via the view attribute. This
allows bypassing the data XML transformation with view XSL when the content of a portlet contains only
presentation elements.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="ui" type="xsd:string" default="view">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional name of the UI XSLT template to specify alternative UI XSLT used for
transforming view XML content of the portlet into web agent specific markup format, such as XHTML or SVG. This
attribute should be specified only in rare occasions when custom UI XSLT templates are used. The default and
most common top-level UI XSLT template used for most of the portlets in NDE is called “view”. It includes
other UI XSLT templates for rendering such common UI widgets as buttons, links, toolbars, tabs, list tables,
attribute tables, and trees. View is the default UI XSL template and it does not need to be specified
explicitly.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="col" default="1" type="colTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">The row and col attributes can be used to specify a position of the body type
portlet content for a rendered web page. All layout managers use grid layout with rows and columns to position
the content of body type portlets during content aggregation. The default values for row and col portlet
attributes are 0 (first row) and 1(second column – center column). All portlets should be listed as children
of a page in an increasing order of their assigned row and column. Portlets are layed out on the page in at
most 3 columns, where each column represents a separate stack or a bucket. If no row is assigned, portlets are
laid out in the order they are listed in web metadata and according to their column assignments. Column
indexes start with 0, with 1 being the default wide center column. Web page layout template is responsible for
spanning the content of portlets if the number of portlet columns is less than 3.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="row" type="xsd:integer" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">The row and col attributes can be used to specify a position of the body type
portlet content for a rendered web page. All layout managers use grid layout with rows and columns to position
the content of body type portlets during content aggregation. The default values for row and col portlet
attributes are 0 (first row) and 1(second column – center column). All portlets should be listed as children
of a page in an increasing order of their assigned row and column. Portlets are layed out on the page in at
most 3 columns, where each column represents a separate stack or a bucket. If no row is assigned, portlets are
laid out in the order they are listed in web metadata and according to their column assignments. Column
indexes start with 0, with 1 being the default wide center column. Web page layout template is responsible for
spanning the content of portlets if the number of portlet columns is less than 3.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="narrow" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes wheter or not this portlet can be placed in the narrow (left or right)
column of the Web page grid layout.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="span" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes whether or not the content of the first portlet for the web page should
span across the whole page horizontally, ignoring multiple column grid layout for the
page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="required" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes a required portlet for a Web page. The content of required portlet is
always displayed independent of user preferences for a personalized page. This can be used for building
personalized pages for companies that require their employees to read company news feeds.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="default" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes a default portlet for a Web page. The content of default portlet is
displayed initially for a personalized web page, prior or until a user modifies personal settings. As such,
this portlet will be displayed when a user first hits the personal page, but the portlet is not required and
can be removed by changing personal settings for the page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="pageEvents" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes a portlet that contains page level events defined in view XML. Such
portlet view XML is queried with XPath to retrieve and transform declared page events. Page events, such as
onLoad, are then passed to page template to be included in page body tag.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="pageToolbar" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes a portlet that contains page level toolbar defined in view XML. Such
portlet view XML is queried with XPath to retrieve and transform declared page toolbar links. Rendered page
toolbar that normally contains Personalize or Customize links will be included in the page title section of
the rendered page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="state" default="normal" type="stateTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines portlet state for the portlet window.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="cacheable" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Determines whether or not the portlet content can be
cached.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="scope" default="request" type="scopeTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Determines the scope for the portlet content caching mechanism. The available
scopes are: application scope - portlet content with application scope is cached based on the user locale. The
content is generated only once and doesn’t expire. Application level cache is cleared only upon application
restart or refresh of the application settings. Session session – portlet content with the session scope is
cached based on the user session id and locale. Any portlet content that requires user right checking in
addition to locale sensitivity should use this setting. Session level cache is cleared whenever user session
expires or when a user logs off. Request scope – portlet content with the request scope is cached based on the
user locale and expiration time setting. This content is cached for a single request based on the action id
and is used for all users with the same locale. Note that content with session or user specific information
should not use request scope caching.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="expires" type="xsd:long" default="0">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines expiration time in seconds for the portlet content cached in request
scope. The default value (0) identifies time sensitive content that can't be cached.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="policyId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies security policy id to check user entitlement information for viewing
the content of this portlet. This is a reference to one of the security restriction elements defined for a web
page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="ViewModeTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a portlet view mode. The supported portlet view modes are: edit, max and
admin. Other modes can be defined. Portlet definition itself difines the default display mode (normal). View
modes define actions to use for portlet management, such as portlet customization and administration. The WMD
processor looksup view modes to generate proper links for portlet Edit and Customize links in the portlet title
bar.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="modeType" use="required" type="modeTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies portlet view mode type: edit, admin, max etc.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="action" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the link for the portlet view mode type for portlet management and
customization.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="ActionType">
<xsd:annotation>
<xsd:documentation>Abstract type used for defining PageAction and ProcessAction.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique action identifier that maps HTTP GET and POST actions via the predefined
"action" parameter to this web action. It is used to locate and invoke a processAction or a pageAction, and
render the web page and its content. The value for this attribute should use component namespace to avoid name
collisions.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="authenticate" type="xsd:boolean" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies whether or not user authentication is required to invoke this
action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="alias" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique action identifier alias that maps HTTP GET and POST actions via the
predefined "action" parameter to this web action. It is used to locate and invoke a processAction or a
pageAction, and render the web page and its content. The value for this attribute should use component
namespace to avoid name collisions.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="componentId" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies id of the component for this action. If not specified, the system
will populate this value during initialization based on information specified in properties.xml file and the
corresponding component descriptor XML file. Valid component id is a value of id attribute from one of the
component elements specified in properties.xml. Component id is used to construct the file paths and navigate
component directory structure for locating web resources (all component-specific XML files used by
WMD).</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="active" type="xsd:boolean" use="optional" default="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">Active flag for marking enabled/disabled actions. Requesting a page or a
process action with an action id whose active flag is set to false will result in an error page that notifies
an end-user that the action or page has been temporarly disabled. The error page is Service Unavailable with
the http error code 503.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="policyId" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies security policy id to check user entitlement information for invoking
this web action. This is a reference to one of the web security restriction elements defined for a web
page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="binding" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Optional location of the binding file for HTTP to XML marshalling. If not
specified, the default generated binding file with that name that matches action id is used. Binding files are
located under /src/META-INF/component/bind directory.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="useSsl" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Deprecated. Use ssl attribute instead.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="ssl" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes wether or not to use SSL for the data transmission that is the result
of this action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="compress" type="xsd:boolean" default="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">Denotes wether to use gzip for the data transmission that is the result of this
action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="inheritParamSet" type="xsd:boolean" use="optional" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies whether to inherit the paramset defined for the process
action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="PageActionType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Page action is used to trigger the display of a web page. Normally, a page action
is a result of HTTP GET request that triggers multiple service calls, one per each portlet, to retrieve content
for each portlet. Each web page must contain at least one page action that will trigger loading of a web page.
To request a page action via HTTP GET request, its id attribute must match the value of reserved HTTP parameter
(“action”).</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="ActionType">
<xsd:sequence id="ActionSequence">
<xsd:element name="portlet" type="PortletType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="retrieveService" type="RetrieveServiceType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RetrieveServiceType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the service to call that will generate content for a portlet when page
action is triggered. Retrieve service is linked to the corresponding portlet via portlet id. Page action might
have one or more retrieve services.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="srv:retrieveService">
<xsd:attribute name="portletId" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique portlet identifier that links this service to one of the portlets
defined for a web page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ProcessActionType">
<xsd:annotation>
<xsd:documentation>Defines a web action that submits page data to the backend and modifies the underlying data
store in any way. Processing of a process action doesn't result in a web page display, and is always followed by
processing of the next web page action. Process actions should be used for all requests that perform insert,
update, or delete operations on the data store or modify the data store in any other way. Process action element
contains additional attributes for performing such operations. Next action attribute specifies the action id of
the next page action to process, to trigger loading of a confirmation web page upon successful completion of the
update operation. Error action attribute specifies the action id of the next page action to process, to trigger
loading of the appropriate error page if the operation fails. Most of the time, this will be an action id of the
page action used to display a web page from which the information is posted to perform an update. This will
trigger redisplay, or refresh of the page with the error message displayed, and erroneous information fields
marked on the page.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="ActionType">
<xsd:sequence id="ProcessActionSequence">
<xsd:element name="processService" type="ProcessServiceType"/>
<xsd:element name="redirectCondition" type="RedirectConditionType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="paramSet" type="ParamSetType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="nextAction" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Next page action id to invoke that triggers rendering of the response web
page.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="errorAction" type="xsd:string">
<xsd:annotation>
<xsd:documentation xml:lang="en">Fallback error action id used if the request processing
fails.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="redirect" type="xsd:boolean" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Determines whether or not a redirect is required after this web action has
been processed. In case of redirect=true, the nextAction attribute value will be appended to the redirect
url to specify what web action will be invoked next. If additional parameters are required for the
redirect url, they can be specified via an optional paramSet element and a list of
params.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="dynamicErrorAction" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ProcessServiceType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the type and description of a service to call that will process an
update operation for a process action and further request redirect or forward. The resulting output is used as
an input for the next or error page action in case of request forwarding. When redirect is used, additional
redirect URL parameters can be specified via paramSet element. The redirect parameters can query the original
HTTP request or the output of the process service with XPath.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="srv:processService"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RedirectConditionType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a redirect condition evaluated by action controller prior to request
forwarding or redirect. Redirect conditions are optional and are evaluated only when the process action redirect
attribute is set to true. If no redirect conditions are specified, depending on the status of process action
executaion, the request will be redirected or forwarded to the next or error action.</xsd:documentation>
</xsd:annotation>
<xsd:sequence id="RedirectConditionSequence">
<xsd:element name="paramSet" type="ParamSetType" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="inheritParamSet" type="xsd:boolean" use="optional" default="false">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies whether to inherit the paramset defined for the process
action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="source" type="sourceTypes" use="optional" default="response">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the source from which the expression matching parameter and
destination URL is retreived.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="parameter" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the parameter name to use for expression matching, if the source is
other than the response data XML document.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="expression" type="xsd:string" use="optional" default=".">
<xsd:annotation>
<xsd:documentation xml:lang="en">Regular expression or an XPath expression for redirect condition. The XPath
expression is used to query process action data XML response document, if the source attribute is set to
response. Otherwise, the reqular expression matching is used on the specified source parameter value to
determine a match.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="action" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Action id of the next action to execute if the redirect condition is met. This
is used as a fallback action if destination expresssion parsing fails.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="destination" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">XPath expression or parameter name for the redirect condition to retrieve
dynamic redirect URL from data XML response document or other sources. This attribute overwrites static action
specified for redirect.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="destinationAction" type="xsd:string" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">XPath expression or parameter name for the redirect condition to retrieve
redirect action from data XML response document or other sources. This attribute overwrites static action
specified for redirect.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:simpleType name="sourceTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the source from which the parameter value is retreived: request - http
request, or response - service call response.</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="constant"/>
<xsd:enumeration value="request"/>
<xsd:enumeration value="response"/>
<xsd:enumeration value="xml"/>
<xsd:enumeration value="session"/>
<xsd:enumeration value="cookie"/>
<xsd:enumeration value="header"/>
<xsd:enumeration value="config"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="ParamSetType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a list parameters to be used for constructing a redirect url query string
when performing a redirect for a web action to another web page.</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="param" type="ParamType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ParamType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a single parameter for a redirect URL query string. If source=”request”,
the HTTP request parameter name specified in the value attribute will be used to retrieve the parameter value.
If source=”response”, the XPath expression specified in the value attribute will be used to retrieve the
parameter value from data XML response of the process action service call.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="name" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the parameter name.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="source" type="sourceTypes" use="optional">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies the source from which the parameter value is
retreived.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="value" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Specifies how the value of the parameter is retrieved. If source=request, the
name of the http parameter needs to be specified in the value attribute. If source=response, the value
parameter will be an XPath expression to query the service response XML for the parameter
value.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="ImportType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Defines a web resource to include during content aggregation. Different web pages
depending on their content and features require different web resources to be included. Typically, web resources
represent external files that are used to render page content and provide additional presentation styles and
client-side dynamic behavior for a page. Currently, such web resources include CSS and JavaScript files from UI
toolkit. Web page builder or a page layout manager will generate a proper reference to the imported web resource
file from UI toolkit based on the resource name as the specified by the href attribute, its type attribute, and
the UI skin assigned to a web page.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="href" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">The name of the web resource to import.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="type" use="optional" default="js" type="importTypes">
<xsd:annotation>
<xsd:documentation xml:lang="en">Identifies web resource type: js - JavaScript, css - CSS
file.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<!-- Element Reference Types for reuse -->
<xsd:complexType name="PortletRefType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Complex type for referensing reusable portlets that are standalone or defined in
other web pages. This element is part of the future enhancements for WMD and is not supported yet. This solution
will require less memory at runtime when WMD XML files are loaded and cached for request
processing.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique portlet id for the whole Web application. Component namespace should be
used for this identifier to avoid name collissions. Portlet id is used as part of the key to cache portlet
content and to associate portlets with retreive services for each web page action.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="ProcessActionRefType">
<xsd:annotation>
<xsd:documentation xml:lang="en">Complex type for referensing reusable process actions that are standalone or
defined in other WMD XML files. This element is part of the future enhancements for the WMD and is not supported
yet. Its purpose is to replace existing XInclude solution. This solution will require less memory at runtime
when WMD XML files are loaded and cached for request processing.</xsd:documentation>
</xsd:annotation>
<xsd:attribute name="id" type="xsd:string" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">Unique process action id for the whole Web application. Component namespace
should be used for this identifier to avoid name collissions.</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:simpleType name="pageTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="template"/>
<xsd:enumeration value="page"/>
<xsd:enumeration value="layer"/>
<xsd:enumeration value="container"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="skinTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="evolution1">
<xsd:annotation>
<xsd:documentation xml:lang="en">Niku 6.1.x UI look and feel with 2001 view XML.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
<xsd:enumeration value="evolution2">
<xsd:annotation>
<xsd:documentation xml:lang="en">Niku 6.1.x UI look and feel with 2002 view XML.</xsd:documentation>
</xsd:annotation>
</xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="portletTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="header"/>
<xsd:enumeration value="footer"/>
<xsd:enumeration value="toc"/>
<xsd:enumeration value="tabs"/>
<xsd:enumeration value="body"/>
<xsd:enumeration value="pageContext"/>
<xsd:enumeration value="pageToolbar"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="viewTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="vxsl"/>
<xsd:enumeration value="vxml"/>
<xsd:enumeration value="html"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="colTypes">
<xsd:restriction base="xsd:integer">
<xsd:enumeration value="0"/>
<xsd:enumeration value="1"/>
<xsd:enumeration value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="stateTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="normal"/>
<xsd:enumeration value="minimized"/>
<xsd:enumeration value="maximized"/>
<xsd:enumeration value="hidden"/>
<xsd:enumeration value="inactive"/>
<xsd:enumeration value="fullscreen"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="scopeTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="request"/>
<xsd:enumeration value="session"/>
<xsd:enumeration value="application"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="modeTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="edit"/>
<xsd:enumeration value="admin"/>
<xsd:enumeration value="max"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="importTypes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="js"/>
<xsd:enumeration value="css"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>