原文出处:
PSML是门户结构标记语言(Portal Structure Markup
Language)的缩写。它是用来在jetspeed中进行内容结构化和抽象的。PSML定义了在一个portal页面上如何将portlets进行整
合、布局、装饰的。注意,页面规划并不是Portlet标准接口,因此PSML是jetspeed自己的实现方式。同时需要声明的是PMSL在
jetspeed-2里不同于jetspeed-1。这篇文章可以作为对PSML资源元素描述的一个参考指南。
PSML文件也可以获得其它相关的门户站点信息,如页、文件夹、链接和全局安全限制。每个这些主要的PSML元素都可以从文件系统中各层目录里定义的不同文件中获得。通常的,这个目录在jetspeed应用的/WEB-INF/pages下。
下面是一个关于page定义的例子:
<?xml version="1.0" encoding="UTF-8"?>
<page>
<!-- page info -->
<title>Welcome to Jetspeed 2</title>
<metadata name="title" xml:lang="fr">Ma Premiere Page de PSML</metadata>
<metadata name="title" xml:lang="es">¡Bienvenido a Jetspeed 2!</metadata>
<metadata name="title" xml:lang="hu">Köszönti a Jetspeed 2!</metadata>
<!-- page decoration -->
<defaults skin="orange" layout-decorator="tigris" portlet-decorator="tigris"/>
<!-- page fragments -->
<fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn">
<fragment id="100939" type="portlet" name="j2-admin::LocaleSelector">
<property layout="OneColumn" name="row" value="0"/>
</fragment>
<fragment id="100345" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
<property layout="OneColumn" name="row" value="1"/>
<property layout="TwoColumns" name="sizes" value="33%,66%"/>
<fragment id="100121" type="portlet" name="j2-admin::LoginPortlet">
<property layout="TwoColumns" name="row" value="0"/>
<property layout="TwoColumns" name="column" value="0"/>
</fragment>
<fragment id="100171" type="portlet" name="demo::UserInfoTest">
<property layout="TwoColumns" name="row" value="0"/>
<property layout="TwoColumns" name="column" value="1"/>
</fragment>
</fragment>
</fragment>
<!-- security constraints -->
<security-constraints>
<security-constraints-ref>public-view</security-constraints-ref>
</security-constraints>
</page>
下面是一个关于folder定义的例子(folder.metadata):
<?xml version="1.0" encoding="UTF-8"?>
<folder>
<!-- folder description -->
<title>Root Folder</title>
<metadata name="title" xml:lang="fr">Répertoire racine</metadata>
<metadata name="title" xml:lang="es">Carpeta raiz</metadata>
<!-- order of documents in folder -->
<document-order>Jetspeed2.link</document-order>
<document-order>Jetspeed2Wiki.link</document-order>
<document-order>apache_portals.link</document-order>
<document-order>apache.link</document-order>
<!-- portal site menus -->
<menu name="page-navigations">
<separator>
<text>Top Pages</text>
<metadata name="text" xml:lang="fr">Page haut</metadata>
<metadata name="text" xml:lang="es">Páginas más populares</metadata>
</separator>
<options>/Administrative</options>
<separator>
<text>Profiled Pages</text>
<metadata name="text" xml:lang="es">Páginas del Perfil</metadata>
</separator>
<options regexp="true">/p[0-9][0-9][0-9].psml</options>
<separator>
<text>Non Java Pages</text>
<metadata name="text" xml:lang="es">Ejemplos sin java</metadata>
</separator>
<options>/non-java</options>
</menu>
<!-- security constraints -->
<security-constraints>
<security-constraints-ref>public-view</security-constraints-ref>
</security-constraints>
</folder>
下面是一个关于link定义的例子(*.link):
<?xml version="1.0" encoding="UTF-8"?>
<link target="top">
<!-- link description -->
<title>Jetspeed 2 Home Page</title>
<url>http://portals./jetspeed-2/</url>
<metadata name="title" xml:lang="es">Jetspeed 2</metadata>
</link>
下面是一个关于page security定义的例子(page.security):
<?xml version="1.0" encoding="UTF-8"?>
<page-security>
<!-- global admin constraints -->
<security-constraints-def name="admin">
<security-constraint>
<roles>admin</roles>
<permissions>view, edit</permissions>
</security-constraint>
</security-constraints-def>
<global-security-constraints-ref>admin</global-security-constraints-ref>
<!-- public constraints -->
<security-constraints-def name="public-view">
<security-constraint>
<users>*</users>
<permissions>view</permissions>
</security-constraint>
</security-constraints-def>
<security-constraints-def name="public-edit">
<security-constraint>
<users>*</users>
<permissions>view, edit</permissions>
</security-constraint>
</security-constraints-def>
</page-security>
<page>元素是一个简单的容器可包含与portal站点页面有关的其他PSML元素。这个元素一直定义在以.pmsl为扩展名的文件中,此文件存放在与父文件夹相关的适当文件目录中。在page元素中有两个有效属性:
<page>元素包含一些其他的PSML元素:
在page元素中的<defaults>元素定义了缺省的布局装饰和缺省的portlet装饰。缺省的布局装饰应用于所有的没有decorator属性的布局片段。缺省的portlet装饰应用于所有的没有decorator属性的portlet片段。defaults元素包含三个属性:
例子:
<page>
...
<defaults skin="orange" layout-decorator="tigris" portlet-decorator="tigris"/>
...
</page>
在page元素中的布局<fragment>
元素是一个分层的容器,用来保存portlet片段和嵌套的布局片段。Page元素的根片段必须是一个布局片段,即使这个页面只有一个portlet片
段。布局片段依赖于父布局片段因此支持’row’和’column’布局特性。另外,也支持’sizes’特性来控制多层列的布局特性。这个元素有三个必
须的属性:
布局<fragment>元素包含一些其他的PSML元素:
例子:
<page>
...
<fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn">
<fragment id="100939" type="portlet" name="j2-admin::LocaleSelector">
<property layout="OneColumn" name="row" value="0"/>
</fragment>
<fragment id="100345" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
<property layout="OneColumn" name="row" value="1"/>
<property layout="TwoColumns" name="sizes" value="33%,66%"/>
<fragment id="100121" type="portlet" name="j2-admin::LoginPortlet">
<property layout="TwoColumns" name="row" value="0"/>
<property layout="TwoColumns" name="column" value="0"/>
</fragment>
<fragment id="100171" type="portlet" name="demo::UserInfoTest">
<property layout="TwoColumns" name="row" value="0"/>
<property layout="TwoColumns" name="column" value="1"/>
</fragment>
</fragment>
</fragment>
...
</page>
portlet<fragment>用来识别页面中的portlets。Portlet片段依赖于父布局片段因此支持’row’和’column’布局特性。这个元素包含下列属性:
Portlet<fragment>包含一些其他的PSML元素:
例子:
<fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn">
...
<fragment id="100939" type="portlet" name="j2-admin::LocaleSelector">
<property layout="OneColumn" name="row" value="0"/>
</fragment>
...
</fragment>
fragment的<property>元素用来指定片断的特性。这些特性通常是用来指定portlet布局参数和portlet在页面上的位置地点。Property元素有3个属性:
例子:
<fragment id="100876" type="portlet" name="j2-admin::LoginPortlet">
...
<property layout="TwoColumns" name="row" value="2"/>
<property layout="TwoColumns" name="column" value="1"/>
...
</fragment>
<fragment id="103456" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
...
<property layout="TwoColumns" name="sizes" value="33%,66%"/>
...
</fragment>
portlet fragment中的<preference>元素允许定义portlet选项。为在页面中的portlet实例设置缺省的portlet选项提供了一种更简便的方法,不需要在portlet应用的portlet.xml文件里复制一个portlet定义。
选项的优先顺序:用户定义>片段定义>portlet.xml定义
<preference>元素的属性:
<preference>元素包含的元素:
例子:
<fragment id="uhtemp-1012" type="portlet" name="demo::BookmarkPortlet">
...
<preference name="Google" readOnly="false">
<value>http://www.google.com</value>
</preference>
...
</fragment>
<folder>元素是一个简单的容器,用来保存与一个门户站点文件夹相关的其他PSML元素。这个元素定义在相关的文件系统目录下的folder.metadata文件里。包含两个属性:
<folder>元素包含了一些其他的PSML元素:
<link>元素是一个简单的容器,用来保存与一个门户站点链接相关的其他PSML元素。门户链接用来涉及门户站点外部的一些内容。这个元素定义在与父floder相关的文件系统目录下的以’.link’为后缀的文件里。包含两个属性:
<link>元素包含了一些其他的PSML元素:
<page-security>元素是一个简单的容器,用来保存一些用来声明全局安全约束的其他PSML元素和他们的定义。这个元素定义在page.security文件里并且它总是存放在PSML文件系统目录下的根目录里。包含一个属性:
<page.security>元素包含了两个安全约束PSML元素:
Page, folder和link中的<metadata>元素用来定义本地的title和short title文本。这些元素可以在一个PSML里出现任何次数。但多个命名值不应该指定为一个地点。PSML xml 文档通常使用UTF-8编码格式来支持各种各样的字符集。
例子:
<page>
...
<metadata name="title" xml:lang="fr">Ma Premiere Page de PSML</metadata>
<metadata name="title" xml:lang="es">¡Bienvenido a Jetspeed 2!</metadata>
<metadata name="title" xml:lang="hu">Köszönti a Jetspeed 2!</metadata>
...
</page>
在pages , fragments , folders , links 和 page
security元素中出现的<security-constraints>,
<security-constraints-def>,
和<global-security-constraints-ref>元素将单独地在安全约束指导文档里介绍。
在 page 和 folder元素中出现的<menu>元素将单独地在菜单指导文档里介绍。 转自:http://blog.csdn.net/peterwanghao/archive/2006/04/27/679795.aspx |
|
来自: logicjwell > 《我的图书馆》