Appendix C. jboss-portlet.xml DTD


        <?xml version="1.0" encoding="UTF-8" ?>

<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ~ JBoss, a division of Red Hat                                              ~
  ~ Copyright 2006, Red Hat Middleware, LLC, and individual                   ~
  ~ contributors as indicated by the @authors tag. See the                    ~
  ~ copyright.txt in the distribution for a full listing of                   ~
  ~ individual contributors.                                                  ~
  ~                                                                           ~
  ~ This is free software; you can redistribute it and/or modify it           ~
  ~ under the terms of the GNU Lesser General Public License as               ~
  ~ published by the Free Software Foundation; either version 2.1 of          ~
  ~ the License, or (at your option) any later version.                       ~
  ~                                                                           ~
  ~ This software is distributed in the hope that it will be useful,          ~
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of            ~
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU          ~
  ~ Lesser General Public License for more details.                           ~
  ~                                                                           ~
  ~ You should have received a copy of the GNU Lesser General Public          ~
  ~ License along with this software; if not, write to the Free               ~
  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA        ~
  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.                  ~
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->

<!-- The additional configuration elements of the JBoss portlet container.

<!DOCTYPE portlet-app PUBLIC
   "-//JBoss Portal//DTD JBoss Portlet 2.6//EN"
   "http://www.jboss.org/portal/dtd/jboss-portlet_2_6.dtd">
-->

<!--
The remotable element is used to configure the default behavior of the portlets with
respect to WSRP exposure.

For each portlet defined in portlet.xml, it is possible to configure specific
settings of the portlet container.

It is also possible to inject services in the portlet context of the application
using the service elements.
-->
<!ELEMENT portlet-app (remotable?,portlet*,service*)>

<!--
Additional configuration for a portlet.

The portlet-name defines the name of the portlet. It must match a portlet defined already
in portlet.xml of the same web application.

The remotable element configures the portlet exposure to WSRP. If no value is present
then the value considered is either the value defined globally at the portlet
application level or false.

The trans-attribute value specifies the behavior of the portlet when it is invoked at
runtime with respect to the transactionnal context. According to how the portlet is
invoked a transaction may exist or not before the portlet is invoked. Usually in the
local context the portal transaction could be present. By default the value considered is
 NotSupported which means that the portal transaction will be suspended for the duration
 of the portlet invocation.

Example:

<portlet>
   <portlet-name>MyPortlet</portlet-name>
   <remotable>true</remotable>
   <transaction>
     <trans-attribute>Required</transaction>
   <transaction>
</portlet>

-->
<!ELEMENT portlet (portlet-name,remotable?,ajax?,session-config?,transaction?,
          header-content?,portlet-info?)>

<!--
The portlet name.
-->
<!ELEMENT portlet-name (#PCDATA)>

<!--
The remotable value is used for WSRP exposure. The accepted values are the
litterals true of false.
-->
<!ELEMENT remotable (#PCDATA)>

<!--
The ajax tag allows to configure the ajax capabilities of the portlet. If
the portlet is tagged as partial-refresh then the portal may use partial page
refreshing and render only that portlet. If the portlet partial-refresh value
is false, then the portal will perform a full page refresh when the portlet is refreshed.
-->
<!ELEMENT ajax (partial-refresh)>

<!--
The authorized values for the partial-refresh element are true or false.
-->
<!ELEMENT partial-refresh (#PCDATA)>

<!--
Additional portlet information
-->
<!ELEMENT portlet-info (icon?)>

<!--
Defines icons for the portlet, they can be used by the administration portlet
to represent a particular portlet.
-->
<!ELEMENT icon (small-icon?, large-icon?)>

<!--
A small icon image, usually 16x16, gif, jpg and png are usually supported.
An absolute URL or a URL starting with a '/' in the context of the webapp are accepted:
eg. http://www.example.com/images/smallIcon.png
eg. /images/smallIcon.png
-->
<!ELEMENT small-icon (#PCDATA)>

<!--
A large icon image, usually 32x32, gif, jpg and png are usually supported.
An absolute URL or a URL starting with a '/' in the context of the webapp are accepted:
eg. http://www.example.com/images/smallIcon.png
eg. /images/smallIcon.png
-->
<!ELEMENT large-icon (#PCDATA)>

<!--
This element configure the portlet session of the portlet.

The distributed element instructs the container to distribute the session attributes
using the portal session replication. It applies only to local portlets are not to
remote portlets. The default value is false.

Example:

<session-config>
   <distributed>true</distributed>
</session-config>

-->
<!ELEMENT session-config (distributed)>

<!--
The authorized values for the distributed element are true or false.
-->
<!ELEMENT distributed (#PCDATA)>

<!--
Defines how the portlet behaves with the transactionnal context. The default value
is Never.

Example:

<transaction>
   <trans-attribute>Required</transaction>
<transaction>
-->
<!ELEMENT transaction (trans-attribute)>

<!--
The trans-attribute value defines the transactionnal behavior. The accepted values
are Required, Mandatory, Never, Supports, NotSupported and RequiresNew.
-->
<!ELEMENT trans-attribute (#PCDATA)>

<!--
Specify content which should be included in the portal aggregated page when the portlet
is present on that page. This setting only applies when the portlet is used in the local mode.
-->
<!ELEMENT header-content (link|script|meta)*>

<!--
Creates a header markup element for linked resources,
see http://www.w3.org/TR/html401/struct/links.html#h-12.3

At runtime the href attribute value will be prefixed with the context path
of the web application.

Example:

<link rel="stylesheet" type="text/css" href="/style.css" media="screen"/>

will produce at runtime the following markup

<link rel="stylesheet" type="text/css" href="/my-web-application/style.css" media="screen"/>
-->
<!ATTLIST link
   href CDATA #IMPLIED
   rel CDATA #IMPLIED
   type CDATA #IMPLIED
   media CDATA #IMPLIED
   title CDATA #IMPLIED>

<!--
No content is allowed inside an link element.
-->
<!ELEMENT link EMPTY>

<!--
Creates a header markup for scripting,
see http://www.w3.org/TR/html401/interact/scripts.html

At runtime the src attribute value will be prefixed with the context path
of the web application.

Example 1:

<script type="text/javascript" src="/myscript.js"></script>

will produce at runtime the following markup

<script type="text/javascript" src="/my-web-application/myscript.js"></script>

Example 2:

<script type="text/javascript">
	function hello() {
		alert('Hello');
	}
</script>
-->
<!ATTLIST script
   src CDATA #IMPLIED
   type CDATA #IMPLIED
   language CDATA #IMPLIED>

<!--
The script header element can contain inline script definitions.
-->
<!ELEMENT script (#PCDATA)>

<!--
Creates a header markup for adding meta data to a page,
see http://www.w3.org/TR/html401/struct/global.html#h-7.4.4

Example:

<meta name="keywords" content="jboss, portal, redhat"/>
-->
<!ATTLIST meta
   name CDATA #REQUIRED
   content CDATA #REQUIRED>

<!--
No content is allowed for meta element.
-->
<!ELEMENT meta EMPTY>

<!--
Declare a service that will be injected by the portlet container as an
attribute of the portlet context.

Example:

<service>
   <service-name>UserModule</service-name>
   <service-class>org.jboss.portal.identity.UserModule</service-class>
   <service-ref>:service=Module,type=User</service-ref>
</service>

In the portlet it is then possible to use it by doing a lookup on the service
name, for example in the init() lifecycle method :

public void init()
{
   UserModule userModule = (UserModule)getPortletContext().getAttribute("UserModule");
}

-->
<!ELEMENT service (service-name,service-class,service-ref)>

<!--
The service name that will be used to bind the service as a portlet context attribute.
-->
<!ELEMENT service-name (#PCDATA)>

<!--
The full qualified name of the interface that the service implements.
-->
<!ELEMENT service-class (#PCDATA)>

<!--
The reference to the service. In the JMX Microkernel environment it consist of the JMX
name of the service MBean. For an MBean reference if the domain is left out, then the
current domain of the portal will be used.
-->
<!ELEMENT service-ref (#PCDATA)>