PSML - Portal Site Markup Language Following last week discussion on the list, here's a proposition for an evolution of the Portlet Markup Language to allow a more extensive description of a site. Note: This is a draft and may heavily be changed as soon as I'll really try to implement it... :) The following schema is NOT directly backward compatible because I renamed 'entry' to 'portlet', but was still designed with backward compatibility in mind. The main additions to the previous format are: - addition of layout and skin elements: . layout elements are structural hints to build the resulting page . skin are simple display properties which may easily delegated to the client (for example as CSS stylesheets...) - extension of the parameter element to allow typecasting for automatic customization screen building - introduction of panes for portlets grouping - possibility of profile definition to automatically create user portlets set from a base template - decorrelation of portlets instanciation, portlet definition and channel definition: - a pane should use portletRef to indicate its wish to use a given portlet (with maybe some additional infos). The portletRef use a custom portlet URL to reference the portlet which may be defined in the local file or in a registry portlet URL format: portlet:[//:/][:] for example: portlet:MailPortlet portlet://myregistryserver:1199/RSSPortlet portlet:RSSPortlet://relativity.yi.org/jetspeed.rss - a portlet defintion should provide the implementation classname and default properties for the portlet operation It may also notify the Factory that it's a stateless portlet using the pool element - a portlet should reference a channel through a registry lookup URL channel:[//:]/?[]?[]?[] example: channel:/Computers/WindowsNT?rss??[name='WindowsWorld'] The channel named WindowsWorld in RSS format found in the Computers/WindowsNT categories channel:/??fr? Any available channel in French Other URLs types are also supported and should be used while there's no channel registry implementation available. I hope to be able to provide a working implementation of a Factory using these properties before the week-end. Any comments, feedback, criticism welcome. 8<--------- PSML.xsd ----8<-------8<-------------8<----------- 8<--------- end PSML.xsd 8<-------8<-------------8<----------- Example markup: 8<--------- default.xml 8<-------8<-------------8<----------- DefaultPortletController HomePage 3 true file:///test/test.xsl 1 2 channel:///?rss?fr?[name='ComputerWorld'] My Preferred Channel 1 file:///d:/test/test.xml d:/test/foo.xsl 1 My Mail Account 8<--------- end default.xml 8<-------8<-------------8<------------ 8<--------- profiles.xml 8<-------8<-------------8<--------------- GeekWorld Selection of channels of interest for computer geeks http://www.computergeek.com/channel.rss file:///d:/www/computers/welcome.xhtml 8<--------- end profiles.xml 8<-------8<-------------8<----------- 8<--------- portletregistry.xml 8<-------8<-------------8<-------- org.apache.jetspeed.RSSPortlet file:///parameters/channels.xml 0 true false org.apache.jetspeed.RSSPortlet http://relativity.yi.org/jetspeed.rss true true 5 org.apache.jetspeed.DatePortlet %d/%m/%Y %H:%M org.apache.jetspeed.MailPortlet IMAP MH POP3 8<--------- endportletregistry.xml 8<-------8<-------------8<-----