You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@portals.apache.org by at...@apache.org on 2012/12/16 23:55:26 UTC

svn commit: r1422709 [31/44] - in /portals/site-live/jetspeed-2.1.3: 2.1/schemas/ adminguide/ adminguide/css/ adminguide/images/ adminguide/images/logos/ css/ deployguide/ deployguide/css/ deployguide/images/ deployguide/images/ldap/ deployguide/images...

Added: portals/site-live/jetspeed-2.1.3/guides/guide-psml-dtd.html
URL: http://svn.apache.org/viewvc/portals/site-live/jetspeed-2.1.3/guides/guide-psml-dtd.html?rev=1422709&view=auto
==============================================================================
--- portals/site-live/jetspeed-2.1.3/guides/guide-psml-dtd.html (added)
+++ portals/site-live/jetspeed-2.1.3/guides/guide-psml-dtd.html Sun Dec 16 22:54:22 2012
@@ -0,0 +1,900 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Jetspeed 2 Enterprise Portal - Guide to PSML DTDs and XML Schema</title><style type="text/css" media="all">
+          @import url("../style/maven-base.css");
+          
+			    @import url("../style/maven-j2.css");@import url("../style/project.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://portals.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://portals.apache.org/images/apache-portals.gif"></img></a><a href="http://portals.apache.org/jetspeed-2" id="projectLogo"><img alt="Jetspeed 2 Enterprise Portal" src="http://portals.apache.org/images/Jetspeed_blue_med.png"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+                	Last published: 22 December 2007
+                  | Doc for 2.1.3</div><div class="xright">
+        
+        <a href="http://portals.apache.org/jetspeed-1" class="externalLink" title="External Link" target="_nw">Jetspeed-1</a>
+      
+        
+          
+            <span class="separator">|</span>
+          
+        
+        <a href="http://portals.apache.org/jetspeed-2" class="externalLink" title="External Link" target="_nw">Jetspeed-2</a>
+      
+        
+          
+            <span class="separator">|</span>
+          
+        
+        <a href="http://portals.apache.org/bridges" class="externalLink" title="External Link" target="_nw">Bridges</a>
+      
+        
+          
+            <span class="separator">|</span>
+          
+        
+        <a href="../jetspeed2.pdf"><img title="PDF Documentation" style="border: 1px" src="../images/pdf.gif" alt="PDF Documentation"></img></a>
+      </div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuEssentials"><h5>Essentials</h5><ul><li class="none"><a href="../features.html">Features</a></li><li class="none"><a href="../getting-started.html">Getting Started</a></li><li class="none"><a href="../developers.html">Jetspeed for Developers</a></li></ul></div><div id="menuBuilding"><h5>Building</h5><ul><li class="none"><a href="../maven-2-build.html">From Source with Maven-2</a></li><li class="none"><a href="../maven-2-custom.html">From Maven-2 Plugin</a></li><li class="none"><a href="../getting-started-source.html">From Source with Maven-1 (deprecated)</a></li><li class="none"><a href="../getting-started-binary.html">From Maven-1 Plugin (deprecated)</a></li><li class="none"><a href="../jetspeed-eclipse.html">From Eclipse</a></li></ul></div><div id="menuGet_Jetspeed-2_1_3"><h5>Get Jetspeed-2.1.3</h5><ul><li class="none"><a href="../download.html">Download</a></li><li cla
 ss="none"><a href="../release-notes.html">Release Notes</a></li></ul></div><div id="menuDocumentation"><h5>Documentation</h5><ul><li class="none"><a href="../guides/index.html">Documentation Guides</a></li><li class="none"><a href="http://portals.apache.org/tutorials/jetspeed-2/" class="externalLink" title="External Link">Jetspeed Tutorial - Maven-2 Custom Build</a></li><li class="none"><a href="http://portals.apache.org/tutorials/jetspeed-2-ant/" class="externalLink" title="External Link">Jetspeed Tutorial - Ant Custom Build (incomplete)</a></li><li class="none"><a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/index.html" class="externalLink" title="External Link">Jetspeed-2 API</a></li><li class="none"><a href="../j2-maven-plugin.html">Jetspeed-2 Plugin</a></li></ul></div><div id="menuAbout_Jetspeed-2"><h5>About Jetspeed-2</h5><ul><li class="none"><a href="../j1-users.html">For Jetspeed-1 Users</a></li><li class="none"><a href="../j1-migratio
 n.html">Jetspeed-1 Migration Guideline</a></li><li class="none"><a href="../supporting-projects.html">Supporting Projects</a></li><li class="none"><a href="../who-uses-j2.html">Who Uses J2?</a></li><li class="none"><a href="../portlets-community.html">Portlets Community</a></li><li class="none"><a href="../how-to-help.html">How to Help?</a></li></ul></div><div id="menuSupport"><h5>Support</h5><ul><li class="none"><a href="../mail-lists.html">Mailing List</a></li><li class="none"><a href="../issue-tracking.html">Bug Database</a></li><li class="none"><a href="http://wiki.apache.org/portals/Jetspeed2" class="externalLink" title="External Link">Wiki</a></li><li class="none"><a href="../quality-testing.html">Quality Testing</a></li><li class="none"><a href="../faq.html">FAQ</a></li></ul></div><div id="menuTranslation"><h5>Translation</h5><ul><li class="none"><a href="http://jetspeed-japan.sourceforge.jp/jetspeed-2-trans/ja/index.html" class="externalLink" title="External Link">Ja
 panese</a></li></ul></div><div id="menuProject_Documentation"><h5>Project Documentation</h5><ul><li class="none"><a href="../index.html">About Jetspeed 2 Enterprise Portal</a></li><li class="collapsed"><a href="../project-info.html">Project Info</a></li><li class="collapsed"><a href="../maven-reports.html">Project Reports</a></li><li class="none"><a href="http://maven.apache.org/development-process.html" class="externalLink" title="External Link">Development Process</a></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="PSML_DTDs_and_XML_Schema"></a><h2>PSML DTDs and XML Schema</h2><p>
+The following PSML DTDs and XML Schema are included to further define the XML documents defined in these guides:
+<ul>
+    <li><a href="guide-psml.html">Guide to PSML</a></li>
+    <li><a href="guide-security-declarative-psml.html">Guide to declarative security through PSML</a></li>
+    <li><a href="guide-menus-declarative-psml.html">Guide to declarative menus in PSML</a></li>
+</ul>
+</p><p>
+The DTDs and XML Schema included here are organized by PSML document:
+<ul>
+	<li><a href="#Page">Page, (*.psml)</a></li>
+	<li><a href="#Folder">Folder Metadata, (folder.metadata)</a></li>
+	<li><a href="#Link">Link, (*.link)</a></li>
+	<li><a href="#Page_Security">Page Security, (page.security)</a></li>
+</ul>
+</p></div><div class="section"><a name="Page"></a><h2>Page</h2><p><a href="guide-psml.html#Page">Page</a> documents, (*.psml), are described by the following DTD:</p>
+    <div class="source"><pre>
+&lt;!-- top level page element --&gt;
+
+&lt;!ELEMENT page ( defaults | fragment | menu | metadata | security-constraints | short-title | title )* &gt;
+&lt;!ATTLIST page hidden ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST page version NMTOKEN #IMPLIED &gt;
+
+&lt;!-- page child elements --&gt;
+
+&lt;!ELEMENT defaults EMPTY &gt;
+&lt;!ATTLIST defaults layout-decorator NMTOKEN #REQUIRED &gt;
+&lt;!ATTLIST defaults portlet-decorator NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST defaults skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT exclude ( #PCDATA ) &gt;
+
+&lt;!ELEMENT fragment ( fragment | preference | property | security-constraints )* &gt;
+&lt;!ATTLIST fragment decorator NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST fragment id NMTOKEN #REQUIRED &gt;
+&lt;!ATTLIST fragment name NMTOKEN #REQUIRED &gt;
+&lt;!ATTLIST fragment skin NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST fragment state NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST fragment type ( layout | portlet ) #REQUIRED &gt;
+
+&lt;!ELEMENT groups ( #PCDATA ) &gt;
+
+&lt;!ELEMENT include ( #PCDATA ) &gt;
+&lt;!ATTLIST include nest ( false | true ) #IMPLIED &gt;
+
+&lt;!ELEMENT menu ( exclude | include | menu | metadata | options | separator | short-title | title )* &gt;
+&lt;!ATTLIST menu depth NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST menu name NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST menu options CDATA #IMPLIED &gt;
+&lt;!ATTLIST menu order CDATA #IMPLIED &gt;
+&lt;!ATTLIST menu paths ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST menu profile NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST menu regexp ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST menu skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT metadata ( #PCDATA ) &gt;
+&lt;!ATTLIST metadata name ( short-title | text | title ) #REQUIRED &gt;
+&lt;!ATTLIST metadata xml:lang NMTOKEN #REQUIRED &gt;
+
+&lt;!ELEMENT options ( #PCDATA ) &gt;
+&lt;!ATTLIST options depth NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST options order CDATA #IMPLIED &gt;
+&lt;!ATTLIST options paths ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST options profile NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST options regexp ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST options skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT owner ( #PCDATA ) &gt;
+
+&lt;!ELEMENT permissions ( #PCDATA ) &gt;
+
+&lt;!ELEMENT preference ( value+ ) &gt;
+&lt;!ATTLIST preference name NMTOKEN #REQUIRED &gt;
+&lt;!ATTLIST preference readOnly ( false | true ) #IMPLIED &gt;
+
+&lt;!ELEMENT property EMPTY &gt;
+&lt;!ATTLIST property layout NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST property name ( column | row | sizes ) #REQUIRED &gt;
+&lt;!ATTLIST property value CDATA #REQUIRED &gt;
+
+&lt;!ELEMENT roles ( #PCDATA ) &gt;
+
+&lt;!ELEMENT security-constraint ( groups | permissions | roles | users )* &gt;
+
+&lt;!ELEMENT security-constraints ( owner | security-constraint | security-constraints-ref )* &gt;
+
+&lt;!ELEMENT security-constraints-ref ( #PCDATA ) &gt;
+
+&lt;!ELEMENT separator ( #PCDATA | metadata | text | title )* &gt;
+&lt;!ATTLIST separator skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT short-title ( #PCDATA ) &gt;
+
+&lt;!ELEMENT text ( #PCDATA ) &gt;
+
+&lt;!ELEMENT title ( #PCDATA ) &gt;
+
+&lt;!ELEMENT users ( #PCDATA ) &gt;
+
+&lt;!ELEMENT value ( #PCDATA ) &gt;
+</pre></div>
+  <p><a href="guide-psml.html#Page">Page</a> documents, (*.psml), are described by the following XML Schema:</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
+
+  &lt;!-- top level page element --&gt;
+
+  &lt;xs:element name="page"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="defaults" minOccurs="0" /&gt;
+        &lt;xs:element ref="fragment" /&gt;
+        &lt;xs:element ref="menu" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints" minOccurs="0" /&gt;
+        &lt;xs:element ref="short-title" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="version" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="hidden" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;!-- page child elements --&gt;
+
+  &lt;xs:element name="defaults"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:attribute name="portlet-decorator" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="layout-decorator" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="exclude"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="fragment"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="fragment" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="preference" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="property" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="decorator" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="name" type="xs:NMTOKEN" use="required" /&gt;
+      &lt;xs:attribute name="type" use="required"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="layout" /&gt;
+            &lt;xs:enumeration value="portlet" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="state" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="id" type="xs:NMTOKEN" use="required" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="groups"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="include"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="nest" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="menu"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="exclude" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="include" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="menu" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="options" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="separator" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="short-title" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="order" type="xs:string" use="optional" /&gt;
+      &lt;xs:attribute name="options" type="xs:string" use="optional" /&gt;
+      &lt;xs:attribute name="name" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="profile" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="regexp" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="paths" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="depth" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="metadata"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="name" use="required"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="short-title" /&gt;
+            &lt;xs:enumeration value="text" /&gt;
+            &lt;xs:enumeration value="title" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="options"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="order" type="xs:string" use="optional" /&gt;
+      &lt;xs:attribute name="profile" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="regexp" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="paths" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="depth" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="owner"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="permissions"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="preference"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:sequence&gt;
+        &lt;xs:element ref="value" maxOccurs="unbounded" /&gt;
+      &lt;/xs:sequence&gt;
+      &lt;xs:attribute name="name" type="xs:NMTOKEN" use="required" /&gt;
+      &lt;xs:attribute name="readOnly" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="property"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:attribute name="name" use="required"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="column" /&gt;
+            &lt;xs:enumeration value="row" /&gt;
+            &lt;xs:enumeration value="sizes" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="layout" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="value" type="xs:string" use="required" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="roles"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraint"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="4"&gt;
+        &lt;xs:element ref="groups" minOccurs="0" /&gt;
+        &lt;xs:element ref="permissions" minOccurs="0" /&gt;
+        &lt;xs:element ref="roles" minOccurs="0" /&gt;
+        &lt;xs:element ref="users" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="owner" minOccurs="0" /&gt;
+        &lt;xs:element ref="security-constraint" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints-ref" minOccurs="0" maxOccurs="unbounded" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints-ref"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="separator"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="text" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="short-title"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="text"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="title"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="users"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="value"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre></div>
+  </div><div class="section"><a name="Folder"></a><h2>Folder</h2><p><a href="guide-psml.html#Folder">Folder Metadata</a> documents, (folder.metadata), are described by the following DTD:</p>
+    <div class="source"><pre>
+&lt;!-- top level folder element --&gt;
+
+&lt;!ELEMENT folder ( default-page | defaults | document-order | menu | metadata | security-constraints | short-title | title )* &gt;
+&lt;!ATTLIST folder hidden ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST folder version NMTOKEN #IMPLIED &gt;
+
+&lt;!-- folder child elements --&gt;
+
+&lt;!ELEMENT default-page ( #PCDATA ) &gt;
+
+&lt;!ELEMENT defaults EMPTY &gt;
+&lt;!ATTLIST defaults layout-decorator NMTOKEN #REQUIRED &gt;
+&lt;!ATTLIST defaults portlet-decorator NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST defaults skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT document-order ( #PCDATA ) &gt;
+
+&lt;!ELEMENT exclude ( #PCDATA ) &gt;
+
+&lt;!ELEMENT groups ( #PCDATA ) &gt;
+
+&lt;!ELEMENT include ( #PCDATA ) &gt;
+&lt;!ATTLIST include nest ( false | true ) #IMPLIED &gt;
+
+&lt;!ELEMENT menu ( exclude | include | menu | metadata | options | separator | short-title | title )* &gt;
+&lt;!ATTLIST menu depth NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST menu name NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST menu options CDATA #IMPLIED &gt;
+&lt;!ATTLIST menu order CDATA #IMPLIED &gt;
+&lt;!ATTLIST menu paths ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST menu profile NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST menu regexp ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST menu skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT metadata ( #PCDATA ) &gt;
+&lt;!ATTLIST metadata name ( short-title | text | title ) #REQUIRED &gt;
+&lt;!ATTLIST metadata xml:lang NMTOKEN #REQUIRED &gt;
+
+&lt;!ELEMENT options ( #PCDATA ) &gt;
+&lt;!ATTLIST options depth NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST options order CDATA #IMPLIED &gt;
+&lt;!ATTLIST options paths ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST options profile NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST options regexp ( false | true ) #IMPLIED &gt;
+&lt;!ATTLIST options skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT owner ( #PCDATA ) &gt;
+
+&lt;!ELEMENT permissions ( #PCDATA ) &gt;
+
+&lt;!ELEMENT roles ( #PCDATA ) &gt;
+
+&lt;!ELEMENT security-constraint ( groups | permissions | roles | users )* &gt;
+
+&lt;!ELEMENT security-constraints ( owner | security-constraint | security-constraints-ref )* &gt;
+
+&lt;!ELEMENT security-constraints-ref ( #PCDATA ) &gt;
+
+&lt;!ELEMENT separator ( #PCDATA | metadata | text | title )* &gt;
+&lt;!ATTLIST separator skin NMTOKEN #IMPLIED &gt;
+
+&lt;!ELEMENT short-title ( #PCDATA ) &gt;
+
+&lt;!ELEMENT text ( #PCDATA ) &gt;
+
+&lt;!ELEMENT title ( #PCDATA ) &gt;
+
+&lt;!ELEMENT users ( #PCDATA ) &gt;
+</pre></div>
+  <p><a href="guide-psml.html#Folder">Folder Metadata</a> documents, (folder.metadata), are described by the following XML Schema:</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
+
+  &lt;!-- top level folder element --&gt;
+
+  &lt;xs:element name="folder"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="default-page" minOccurs="0" /&gt;
+        &lt;xs:element ref="defaults" minOccurs="0" /&gt;
+        &lt;xs:element ref="document-order" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="menu" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="metadata minOccurs="0" maxOccurs="unbounded"" /&gt;
+        &lt;xs:element ref="security-constraints" minOccurs="0" /&gt;
+        &lt;xs:element ref="short-title" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="version" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="hidden" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;!-- folder child elements --&gt;
+
+  &lt;xs:element name="default-page"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="defaults"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:attribute name="portlet-decorator" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="layout-decorator" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="document-order"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="exclude"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="groups"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="include"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="nest" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="menu"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="exclude" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="include" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="menu" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="options" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="separator" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="short-title" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="order" type="xs:string" use="optional" /&gt;
+      &lt;xs:attribute name="options" type="xs:string" use="optional" /&gt;
+      &lt;xs:attribute name="name" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="profile" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="regexp" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="paths" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="depth" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="metadata"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="name" use="required"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="short-title" /&gt;
+            &lt;xs:enumeration value="text" /&gt;
+            &lt;xs:enumeration value="title" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="options"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="order" type="xs:string" use="optional" /&gt;
+      &lt;xs:attribute name="profile" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="regexp" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="paths" use="optional"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="false" /&gt;
+            &lt;xs:enumeration value="true" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name="depth" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="owner"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="permissions"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="roles"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraint"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="4"&gt;
+        &lt;xs:element ref="groups" minOccurs="0" /&gt;
+        &lt;xs:element ref="permissions" minOccurs="0" /&gt;
+        &lt;xs:element ref="roles" minOccurs="0" /&gt;
+        &lt;xs:element ref="users" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="owner" minOccurs="0" /&gt;
+        &lt;xs:element ref="security-constraint" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints-ref" minOccurs="0" maxOccurs="unbounded" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints-ref"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="separator"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="text" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="short-title"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="text"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="title"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="users"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre></div>
+  </div><div class="section"><a name="Link"></a><h2>Link</h2><p><a href="guide-psml.html#Link">Link</a> documents, (*.link), are described by the following DTD:</p>
+    <div class="source"><pre>
+&lt;!-- top level link element --&gt;
+
+&lt;!ELEMENT link ( metadata | security-constraints | short-title | title | url )* &gt;
+&lt;!ATTLIST link target NMTOKEN #REQUIRED &gt;
+&lt;!ATTLIST link version NMTOKEN #IMPLIED &gt;
+&lt;!ATTLIST link skin NMTOKEN #IMPLIED &gt;
+
+&lt;!-- link child elements --&gt;
+
+&lt;!ELEMENT groups ( #PCDATA ) &gt;
+
+&lt;!ELEMENT metadata ( #PCDATA ) &gt;
+&lt;!ATTLIST metadata name ( short-title | title ) #REQUIRED &gt;
+&lt;!ATTLIST metadata xml:lang NMTOKEN #REQUIRED &gt;
+
+&lt;!ELEMENT owner ( #PCDATA ) &gt;
+
+&lt;!ELEMENT permissions ( #PCDATA ) &gt;
+
+&lt;!ELEMENT roles ( #PCDATA ) &gt;
+
+&lt;!ELEMENT security-constraint ( groups | permissions | roles | users )* &gt;
+
+&lt;!ELEMENT security-constraints ( owner | security-constraint | security-constraints-ref )* &gt;
+
+&lt;!ELEMENT security-constraints-ref ( #PCDATA ) &gt;
+
+&lt;!ELEMENT short-title ( #PCDATA ) &gt;
+
+&lt;!ELEMENT title ( #PCDATA ) &gt;
+
+&lt;!ELEMENT url ( #PCDATA ) &gt;
+
+&lt;!ELEMENT users ( #PCDATA ) &gt;
+</pre></div>
+  <p><a href="guide-psml.html#Link">Link</a> documents, (*.link), are described by the following XML Schema:</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
+
+  &lt;!-- top level link element --&gt;
+
+  &lt;xs:element name="link"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints" minOccurs="0" /&gt;
+        &lt;xs:element ref="short-title" minOccurs="0" /&gt;
+        &lt;xs:element ref="title" minOccurs="0" /&gt;
+        &lt;xs:element ref="url" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="version" type="xs:NMTOKEN" use="optional" /&gt;
+      &lt;xs:attribute name="target" type="xs:NMTOKEN" use="required" /&gt;
+      &lt;xs:attribute name="skin" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;!-- link child elements --&gt;
+
+  &lt;xs:element name="groups"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="metadata"&gt;
+    &lt;xs:complexType mixed="true"&gt;
+      &lt;xs:attribute name="name" use="required"&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base="xs:NMTOKEN"&gt;
+            &lt;xs:enumeration value="short-title" /&gt;
+            &lt;xs:enumeration value="title" /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="owner"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="permissions"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="roles"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraint"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="4"&gt;
+        &lt;xs:element ref="groups" minOccurs="0" /&gt;
+        &lt;xs:element ref="permissions" minOccurs="0" /&gt;
+        &lt;xs:element ref="roles" minOccurs="0" /&gt;
+        &lt;xs:element ref="users" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="owner" minOccurs="0" /&gt;
+        &lt;xs:element ref="security-constraint" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints-ref" minOccurs="0" maxOccurs="unbounded" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints-ref"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="short-title"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="title"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="url"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="users"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre></div>
+  </div><div class="section"><a name="Page_Security"></a><h2>Page Security</h2><p><a href="guide-psml.html#Global_Page_Security">Page Security</a> documents, (page.security), are described by the following DTD:</p>
+    <div class="source"><pre>
+&lt;!-- top level page-security element --&gt;
+
+&lt;!ELEMENT page-security ( global-security-constraints-ref | security-constraints-def )* &gt;
+&lt;!ATTLIST page-security version NMTOKEN #IMPLIED &gt;
+
+&lt;!-- page-security child elements --&gt;
+
+&lt;!ELEMENT global-security-constraints-ref ( #PCDATA ) &gt;
+
+&lt;!ELEMENT groups ( #PCDATA ) &gt;
+
+&lt;!ELEMENT permissions ( #PCDATA ) &gt;
+
+&lt;!ELEMENT roles ( #PCDATA ) &gt;
+
+&lt;!ELEMENT security-constraint ( groups | permissions | roles | users )* &gt;
+
+&lt;!ELEMENT security-constraints-def ( security-constraint ) &gt;
+&lt;!ATTLIST security-constraints-def name NMTOKEN #REQUIRED &gt;
+
+&lt;!ELEMENT users ( #PCDATA ) &gt;
+</pre></div>
+  <p><a href="guide-psml.html#Global_Page_Security">Page Security</a> documents, (page.security), are described by the following XML Schema:</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+
+&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
+
+  &lt;!-- top level page-security element --&gt;
+
+  &lt;xs:element name="page-security"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
+        &lt;xs:element ref="global-security-constraints-ref" minOccurs="0" maxOccurs="unbounded" /&gt;
+        &lt;xs:element ref="security-constraints-def" minOccurs="0" maxOccurs="unbounded" /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name="version" type="xs:NMTOKEN" use="optional" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;!-- page-security child elements --&gt;
+
+  &lt;xs:element name="global-security-constraints-ref"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="groups"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="permissions"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="roles"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraint"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs="4"&gt;
+        &lt;xs:element ref="groups" minOccurs="0" /&gt;
+        &lt;xs:element ref="permissions" minOccurs="0" /&gt;
+        &lt;xs:element ref="roles" minOccurs="0" /&gt;
+        &lt;xs:element ref="users" minOccurs="0" /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="security-constraints-def"&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:sequence&gt;
+        &lt;xs:element ref="security-constraint" maxOccurs="unbounded" /&gt;
+      &lt;/xs:sequence&gt;
+      &lt;xs:attribute name="name" type="xs:NMTOKEN" use="required" /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name="users"&gt;
+    &lt;xs:complexType mixed="true" /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre></div>
+  </div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 1999-2007, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file

Propchange: portals/site-live/jetspeed-2.1.3/guides/guide-psml-dtd.html
------------------------------------------------------------------------------
    svn:executable = *

Added: portals/site-live/jetspeed-2.1.3/guides/guide-psml.html
URL: http://svn.apache.org/viewvc/portals/site-live/jetspeed-2.1.3/guides/guide-psml.html?rev=1422709&view=auto
==============================================================================
--- portals/site-live/jetspeed-2.1.3/guides/guide-psml.html (added)
+++ portals/site-live/jetspeed-2.1.3/guides/guide-psml.html Sun Dec 16 22:54:22 2012
@@ -0,0 +1,343 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>Jetspeed 2 Enterprise Portal - PSML</title><style type="text/css" media="all">
+          @import url("../style/maven-base.css");
+          
+			    @import url("../style/maven-j2.css");@import url("../style/project.css");</style><link rel="stylesheet" href="../style/print.css" type="text/css" media="print"></link><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta></head><body class="composite"><div id="banner"><a href="http://portals.apache.org/" id="organizationLogo"><img alt="Apache Software Foundation" src="http://portals.apache.org/images/apache-portals.gif"></img></a><a href="http://portals.apache.org/jetspeed-2" id="projectLogo"><img alt="Jetspeed 2 Enterprise Portal" src="http://portals.apache.org/images/Jetspeed_blue_med.png"></img></a><div class="clear"><hr></hr></div></div><div id="breadcrumbs"><div class="xleft">
+                	Last published: 22 December 2007
+                  | Doc for 2.1.3</div><div class="xright">
+        
+        <a href="http://portals.apache.org/jetspeed-1" class="externalLink" title="External Link" target="_nw">Jetspeed-1</a>
+      
+        
+          
+            <span class="separator">|</span>
+          
+        
+        <a href="http://portals.apache.org/jetspeed-2" class="externalLink" title="External Link" target="_nw">Jetspeed-2</a>
+      
+        
+          
+            <span class="separator">|</span>
+          
+        
+        <a href="http://portals.apache.org/bridges" class="externalLink" title="External Link" target="_nw">Bridges</a>
+      
+        
+          
+            <span class="separator">|</span>
+          
+        
+        <a href="../jetspeed2.pdf"><img title="PDF Documentation" style="border: 1px" src="../images/pdf.gif" alt="PDF Documentation"></img></a>
+      </div><div class="clear"><hr></hr></div></div><div id="leftColumn"><div id="navcolumn"><div id="menuEssentials"><h5>Essentials</h5><ul><li class="none"><a href="../features.html">Features</a></li><li class="none"><a href="../getting-started.html">Getting Started</a></li><li class="none"><a href="../developers.html">Jetspeed for Developers</a></li></ul></div><div id="menuBuilding"><h5>Building</h5><ul><li class="none"><a href="../maven-2-build.html">From Source with Maven-2</a></li><li class="none"><a href="../maven-2-custom.html">From Maven-2 Plugin</a></li><li class="none"><a href="../getting-started-source.html">From Source with Maven-1 (deprecated)</a></li><li class="none"><a href="../getting-started-binary.html">From Maven-1 Plugin (deprecated)</a></li><li class="none"><a href="../jetspeed-eclipse.html">From Eclipse</a></li></ul></div><div id="menuGet_Jetspeed-2_1_3"><h5>Get Jetspeed-2.1.3</h5><ul><li class="none"><a href="../download.html">Download</a></li><li cla
 ss="none"><a href="../release-notes.html">Release Notes</a></li></ul></div><div id="menuDocumentation"><h5>Documentation</h5><ul><li class="none"><a href="../guides/index.html">Documentation Guides</a></li><li class="none"><a href="http://portals.apache.org/tutorials/jetspeed-2/" class="externalLink" title="External Link">Jetspeed Tutorial - Maven-2 Custom Build</a></li><li class="none"><a href="http://portals.apache.org/tutorials/jetspeed-2-ant/" class="externalLink" title="External Link">Jetspeed Tutorial - Ant Custom Build (incomplete)</a></li><li class="none"><a href="http://portals.apache.org/jetspeed-2/multiproject/jetspeed-api/apidocs/index.html" class="externalLink" title="External Link">Jetspeed-2 API</a></li><li class="none"><a href="../j2-maven-plugin.html">Jetspeed-2 Plugin</a></li></ul></div><div id="menuAbout_Jetspeed-2"><h5>About Jetspeed-2</h5><ul><li class="none"><a href="../j1-users.html">For Jetspeed-1 Users</a></li><li class="none"><a href="../j1-migratio
 n.html">Jetspeed-1 Migration Guideline</a></li><li class="none"><a href="../supporting-projects.html">Supporting Projects</a></li><li class="none"><a href="../who-uses-j2.html">Who Uses J2?</a></li><li class="none"><a href="../portlets-community.html">Portlets Community</a></li><li class="none"><a href="../how-to-help.html">How to Help?</a></li></ul></div><div id="menuSupport"><h5>Support</h5><ul><li class="none"><a href="../mail-lists.html">Mailing List</a></li><li class="none"><a href="../issue-tracking.html">Bug Database</a></li><li class="none"><a href="http://wiki.apache.org/portals/Jetspeed2" class="externalLink" title="External Link">Wiki</a></li><li class="none"><a href="../quality-testing.html">Quality Testing</a></li><li class="none"><a href="../faq.html">FAQ</a></li></ul></div><div id="menuTranslation"><h5>Translation</h5><ul><li class="none"><a href="http://jetspeed-japan.sourceforge.jp/jetspeed-2-trans/ja/index.html" class="externalLink" title="External Link">Ja
 panese</a></li></ul></div><div id="menuProject_Documentation"><h5>Project Documentation</h5><ul><li class="none"><a href="../index.html">About Jetspeed 2 Enterprise Portal</a></li><li class="collapsed"><a href="../project-info.html">Project Info</a></li><li class="collapsed"><a href="../maven-reports.html">Project Reports</a></li><li class="none"><a href="http://maven.apache.org/development-process.html" class="externalLink" title="External Link">Development Process</a></li></ul></div><a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy"><img alt="Built by Maven" src="../images/logos/maven-button-1.png"></img></a></div></div><div id="bodyColumn"><div class="contentBox"><div class="section"><a name="PSML"></a><h2>PSML</h2><ul>
+    <li><a href="#Page">Page</a></li>          
+    <ul>
+        <li><a href="#Layout_Fragments">Layout Fragments</a></li>    
+        <li><a href="#Portlet_Fragments">Portlet Fragments</a></li>    
+        <li><a href="#Fragment_Properties">Fragment Properties</a></li>
+        <li><a href="#Preferences">Portlet Preferences</a></li>
+    </ul>
+    <li><a href="#Folder">Folder</a></li>          
+    <li><a href="#Link">Link</a></li>          
+    <li><a href="#Global_Page_Security">Global Page Security</a></li>          
+    <li><a href="#PSML_Titles_and_Metadata">Titles and Metadata</a></li>
+    <li><a href="#PSML_Defaults">Defaults</a></li>     
+    <li><a href="#PSML_Security_Constraints">Security Constraints</a></li>        
+    <li><a href="#PSML_Menus">Menus</a></li>        
+    <li><a href="guide-psml-dtd.html#PSML_DTDs">PSML Document DTDs</a></li>        
+</ul><p>
+PSML is an acronym for Portal Structure Markup Language. It was created to allow content structure and abstraction within Jetspeed.
+PSML defines how portlets are aggregated, layed out, and decorated on a portal page. Note that page layout is not a part of the Java
+Portlet Standard API. Thus PSML is a Jetspeed-specific implementation. Also note that PSML in Jetspeed-2 is different from PSML in 
+Jetspeed-1. This document can be used as a reference guide to the elements of a PSML resource.
+</p><p>
+PSML files also capture other portal site information related to pages, folders, links, and global security constraints.
+Each of these primary PSML elements are captured in separate documents arranged in a hierarchy of directories in the file system.
+Typically, this directory is accessed as a resource at /WEB-INF/pages within the jetspeed web application.
+</p><p>
+Here is an example PSML file for a portal site <a href="#Page">page</a>, (*.psml):
+</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;page&gt;
+  &lt;!-- page info --&gt;
+  &lt;title&gt;Welcome to Jetspeed 2&lt;/title&gt;
+  &lt;metadata name="title" xml:lang="fr"&gt;Ma Premiere Page de PSML&lt;/metadata&gt;
+  &lt;metadata name="title" xml:lang="es"&gt;¡Bienvenido a Jetspeed 2!&lt;/metadata&gt;
+  &lt;metadata name="title" xml:lang="hu"&gt;Köszönti a Jetspeed 2!&lt;/metadata&gt;
+
+  &lt;!-- page decoration --&gt;
+  &lt;defaults skin="orange" layout-decorator="tigris" portlet-decorator="tigris"/&gt;
+
+  &lt;!-- page fragments --&gt;
+  &lt;fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn"&gt;
+    &lt;fragment id="100939" type="portlet" name="j2-admin::LocaleSelector"&gt;
+      &lt;property layout="OneColumn" name="row" value="0"/&gt;
+    &lt;/fragment&gt;                                
+    &lt;fragment id="100345" type="layout" name="jetspeed-layouts::VelocityTwoColumns"&gt;
+      &lt;property layout="OneColumn" name="row" value="1"/&gt;
+      &lt;property layout="TwoColumns" name="sizes" value="33%,66%"/&gt;
+      &lt;fragment id="100121" type="portlet" name="j2-admin::LoginPortlet"&gt;
+        &lt;property layout="TwoColumns" name="row" value="0"/&gt;
+        &lt;property layout="TwoColumns" name="column" value="0"/&gt;
+      &lt;/fragment&gt;                                
+      &lt;fragment id="100171" type="portlet" name="demo::UserInfoTest"&gt;
+        &lt;property layout="TwoColumns" name="row" value="0"/&gt;
+        &lt;property layout="TwoColumns" name="column" value="1"/&gt;
+      &lt;/fragment&gt;    
+    &lt;/fragment&gt;
+  &lt;/fragment&gt;
+
+  &lt;!-- security constraints --&gt;
+  &lt;security-constraints&gt;
+    &lt;security-constraints-ref&gt;public-view&lt;/security-constraints-ref&gt;
+  &lt;/security-constraints&gt;
+&lt;/page&gt;
+</pre></div>
+  <p>
+Here is an example PSML file that defines portal site <a href="#Folder">folder</a>, (folder.metadata):
+</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;folder&gt;
+  &lt;!-- folder description --&gt;
+  &lt;title&gt;Root Folder&lt;/title&gt;  
+  &lt;metadata name="title" xml:lang="fr"&gt;Répertoire racine&lt;/metadata&gt;
+  &lt;metadata name="title" xml:lang="es"&gt;Carpeta raiz&lt;/metadata&gt;
+
+  &lt;!-- default page decorations --&gt;
+  &lt;defaults layout-decorator="tigris" portlet-decorator="tigris"/&gt;
+
+  &lt;!-- order of documents in folder --&gt;
+  &lt;document-order&gt;Jetspeed2.link&lt;/document-order&gt;
+  &lt;document-order&gt;Jetspeed2Wiki.link&lt;/document-order&gt;
+  &lt;document-order&gt;apache_portals.link&lt;/document-order&gt;
+  &lt;document-order&gt;apache.link&lt;/document-order&gt;
+
+  &lt;!-- portal site menus --&gt;
+  &lt;menu name="page-navigations"&gt;
+    &lt;separator&gt;
+      &lt;text&gt;Top Pages&lt;/text&gt;
+      &lt;metadata name="text" xml:lang="fr"&gt;Page haut&lt;/metadata&gt;
+      &lt;metadata name="text" xml:lang="es"&gt;Páginas más populares&lt;/metadata&gt;
+    &lt;/separator&gt;
+    &lt;options&gt;/Administrative&lt;/options&gt;
+    &lt;separator&gt;
+      &lt;text&gt;Profiled Pages&lt;/text&gt;
+      &lt;metadata name="text" xml:lang="es"&gt;Páginas del Perfil&lt;/metadata&gt;
+    &lt;/separator&gt;
+    &lt;options regexp="true"&gt;/p[0-9][0-9][0-9].psml&lt;/options&gt;
+    &lt;separator&gt;
+      &lt;text&gt;Non Java Pages&lt;/text&gt;
+      &lt;metadata name="text" xml:lang="es"&gt;Ejemplos sin java&lt;/metadata&gt;
+    &lt;/separator&gt;
+    &lt;options&gt;/non-java&lt;/options&gt;
+  &lt;/menu&gt;
+
+  &lt;!-- security constraints --&gt;
+  &lt;security-constraints&gt;
+    &lt;security-constraints-ref&gt;public-view&lt;/security-constraints-ref&gt;
+  &lt;/security-constraints&gt;
+&lt;/folder&gt;
+</pre></div>
+  <p>
+Here is an example PSML file for a portal site <a href="#Link">link</a>, (*.link):
+</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;link target="top"&gt;
+  &lt;!-- link description --&gt;
+  &lt;title&gt;Jetspeed 2 Home Page&lt;/title&gt;
+  &lt;url&gt;http://portals.apache.org/jetspeed-2/&lt;/url&gt;
+  &lt;metadata name="title" xml:lang="es"&gt;Jetspeed 2&lt;/metadata&gt;
+&lt;/link&gt;
+</pre></div>
+  <p>
+Here is an example PSML file for the portal site <a href="#Global_Page_Security">page security</a>, (page.security):
+</p>
+    <div class="source"><pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;page-security&gt;
+  &lt;!-- global admin constraints --&gt;
+  &lt;security-constraints-def name="admin"&gt;
+    &lt;security-constraint&gt;
+      &lt;roles&gt;admin&lt;/roles&gt;
+      &lt;permissions&gt;view, edit&lt;/permissions&gt;
+    &lt;/security-constraint&gt;
+  &lt;/security-constraints-def&gt;
+  &lt;global-security-constraints-ref&gt;admin&lt;/global-security-constraints-ref&gt;
+
+  &lt;!-- public constraints --&gt;
+  &lt;security-constraints-def name="public-view"&gt;
+    &lt;security-constraint&gt;
+      &lt;users&gt;*&lt;/users&gt;
+      &lt;permissions&gt;view&lt;/permissions&gt;
+    &lt;/security-constraint&gt;
+  &lt;/security-constraints-def&gt;
+  &lt;security-constraints-def name="public-edit"&gt;
+    &lt;security-constraint&gt;
+      &lt;users&gt;*&lt;/users&gt;
+      &lt;permissions&gt;view, edit&lt;/permissions&gt;
+    &lt;/security-constraint&gt;
+  &lt;/security-constraints-def&gt;
+&lt;/page-security&gt;
+</pre></div>
+  </div><div class="section"><a name="Page"></a><h2>Page</h2><p>
+The &lt;page&gt; element is a simple container to hold other PSML elements associated with a portal site page.
+This element is persisted as a file with a '.psml' extension in the appropriate file system directory associated with the parent <a href="#Folder">folder</a>.
+There are two valid attributes for the page element:
+</p><table class="bodyTable"><tr class="b"><th>Attribute</th><th>Description</th></tr><tr class="a"><td>hidden</td><td>A boolean attribute used to indicate that a page should not appear in portal site menus or other navigational elements.</td></tr><tr class="b"><td>version</td><td>A general purpose version tracking attribute. Not currently used by Jetspeed2.</td></tr></table><p>
+The &lt;page&gt; element contains a number of other PSML elements:
+</p><table class="bodyTable"><tr class="a"><th>Element</th><th>Description</th></tr><tr class="b"><td>title?</td><td>Simple element containing text for the default page title. The title of the page is considered its long description and is used as rollover text in some decorators if the short title is available for the menu text. If not specified, Jetspeed2 will attempt to define a title from the name of the file that contains the page element.</td></tr><tr class="a"><td>short-title?</td><td>Optional simple element containing text of the default short title for the page. The short title, if available, is used as menu text in some decorators. If not specified, the title text is used.</td></tr><tr class="b"><td><a href="#PSML_Defaults">defaults?</a></td><td>Specifies the decorations for the page and its fragments. Optional defaults can be inherited from parent folders, but layout decorations are required for each page either specified explicitly or in a parent folder.</td></tr
 ><tr class="a"><td><a href="#Layout_Fragments">fragment</a></td><td>The root of the fragment hierarchy. All pages require a root Fragment.</td></tr><tr class="b"><td><a href="#PSML_Titles_and_Metadata">metadata</a>*</td><td>Optionally specifies locale specific titles and short titles for the page.</td></tr><tr class="a"><td><a href="#Menus">menu</a>*</td><td>Optionally specifies additional or overrides inherited menu definitions for the page.</td></tr><tr class="b"><td><a href="#PSML_Security_Constraints">security-constraints</a>?</td><td>Optionally defines inline security constraints for the page. If not specified, the page inherits the security constraints effective in the parent <a href="#Folder">folder</a>.</td></tr></table><p>Example: <a href="#PSML">see intoductory examples above.</a></p></div><div class="section"><a name="Layout_Fragments"></a><h2>Layout Fragments</h2><p>
+The <a href="#Page">page</a> layout &lt;fragment&gt; element is a hierarchical container used to hold <a href="#Portlet_Fragments">portlet fragments</a> and nested layout fragments.
+The root fragment of a <a href="#Page">page</a> must be a layout fragment, even when only one portlet fragment is part of the page.
+Layout fragments are subject to layout of the parent layout fragment and thus support the 'row' and 'column' <a href="#Fragment_Properties">layout properties</a>.
+In addition, they also support the 'sizes' layout property used to control multicolumn layout proportions.
+There are 3 required attributes for this element:
+</p><table class="bodyTable"><tr class="a"><th>Attribute</th><th>Description</th></tr><tr class="b"><td>id</td><td>The required id is used to identify a fragment and <b>must</b> be unique across all fragments defined within the site. The value is opaque to Jetspeed2 and can follow any convention to guarantee uniqueness. Since fragments may be cached internally by Jetspeed2, any edits to exiting pages may require new ids to ensure the modifications are taken by Jetspeed2.</td></tr><tr class="a"><td>type</td><td>This required attribute must be set to 'layout' for all layout fragments.</td></tr><tr class="b"><td>name</td><td>The required name of the portlet used to implement the fragment layout. The portlet name generally takes the form of 'portlet-app-name:portlet-name' where portlet-app-name is the web context name, as specified in the portlet.xml files. Here are the supported Jetspeed2 layout portlet names:
+        <ul>
+            <li>jetspeed-layouts::FrameLayoutPortlet</li>
+            <li>jetspeed-layouts::VelocityOneColumn</li>
+            <li>jetspeed-layouts::VelocityOneColumnNoActions</li>
+            <li>jetspeed-layouts::VelocityThreeColumns</li>
+            <li>jetspeed-layouts::VelocityThreeColumnsNoActions</li>
+            <li>jetspeed-layouts::VelocityThreeColumnsTable</li>
+            <li>jetspeed-layouts::VelocityTwoColumns</li>
+            <li>jetspeed-layouts::VelocityTwoColumns2575</li>
+            <li>jetspeed-layouts::VelocityTwoColumns2575NoActions</li>
+            <li>jetspeed-layouts::VelocityTwoColumnsNoActions</li>
+            <li>jetspeed-layouts::VelocityTwoColumnsSmallLeft</li>
+            <li>jetspeed-layouts::VelocityTwoColumnsSmallLeftNoActions</li>
+            <li>jetspeed-layouts::VelocityTwoColumnsTable</li>
+        </ul>
+    </td></tr></table><p>
+The layout &lt;fragment&gt; element contains a number of other PSML elements:
+</p><table class="bodyTable"><tr class="a"><th>Element</th><th>Description</th></tr><tr class="b"><td><a href="#Portlet_Fragments">fragment*</a></td><td>Specified fragment elements can be either portlet fragments to be laid out by this layout fragment or nested layout fragments. All child fragments will have required <a href="#Fragment_Properties">property</a> elements to specify their positions in this layout. Specifying no fragments within a layout fragment will result in no content being generated.</td></tr><tr class="a"><td><a href="#Fragment_Properties">property*</a></td><td>Layout fragments can have an optional 'sizes' property that can be used to specify multicolumn layout proportions. Nested layout fragments may also have 'row' and/or 'column' properties to identify its positional location in the parent layout.</td></tr><tr class="b"><td><a href="#PSML_Security_Constraints">security-constraints</a>?</td><td>Optionally defines inline security constraints for the fragm
 ent and its child fragments. Unlike, page, folder, and link constraints, only 'view' permissions can be constrained. If not specified, the fragment inherits the security constraints effective in the <a href="#Page">page</a>.</td></tr></table><p>Example:</p>
+    <div class="source"><pre>
+&lt;page&gt;
+  ...
+  &lt;fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn"&gt;
+    &lt;fragment id="100939" type="portlet" name="j2-admin::LocaleSelector"&gt;
+      &lt;property layout="OneColumn" name="row" value="0"/&gt;
+    &lt;/fragment&gt;                                
+    &lt;fragment id="100345" type="layout" name="jetspeed-layouts::VelocityTwoColumns"&gt;
+      &lt;property layout="OneColumn" name="row" value="1"/&gt;
+      &lt;property layout="TwoColumns" name="sizes" value="33%,66%"/&gt;
+      &lt;fragment id="100121" type="portlet" name="j2-admin::LoginPortlet"&gt;
+        &lt;property layout="TwoColumns" name="row" value="0"/&gt;
+        &lt;property layout="TwoColumns" name="column" value="0"/&gt;
+      &lt;/fragment&gt;                                
+      &lt;fragment id="100171" type="portlet" name="demo::UserInfoTest"&gt;
+        &lt;property layout="TwoColumns" name="row" value="0"/&gt;
+        &lt;property layout="TwoColumns" name="column" value="1"/&gt;
+      &lt;/fragment&gt;    
+    &lt;/fragment&gt;
+  &lt;/fragment&gt;
+  ...
+&lt;/page&gt;
+</pre></div>
+  </div><div class="section"><a name="Portlet_Fragments"></a><h2>Portlet Fragments</h2><p>
+The portlet &lt;fragment&gt; element is used to identify portlets on the page. Portlet fragments are subject to layout of the parent layout fragment and thus support the 'row' and 'column' <a href="#Fragment_Properties">layout properties</a> as required by the layout.
+There are many valid attributes for this element:
+</p><table class="bodyTable"><tr class="a"><th>Attribute</th><th>Description</th></tr><tr class="b"><td>id</td><td>The required id is used to identify a fragment and <b>must</b> be unique across all fragments defined within the site. The value is opaque to Jetspeed2 and can follow any convention to guarantee uniqueness. Since fragments may be cached internally by Jetspeed2, any edits to exiting pages may require new ids to ensure the modifications are taken by Jetspeed2.</td></tr><tr class="a"><td>type</td><td>This required attribute must be set to 'portlet' for all portlet fragments.</td></tr><tr class="b"><td>name</td><td>The required name of the portlet used to populate the fragment content. The portlet name generally takes the form of 'portlet-app-id:portlet-id' as specified in the portlet.xml files.</td></tr><tr class="a"><td>skin</td><td>A general purpose decorator attribute that can be referenced in the portlet decorators to control fragment presentation. Not currentl
 y used by Jetspeed2.</td></tr><tr class="b"><td>decorator</td><td>The name of the default portlet decorator used to render the fragments. This attribute is optional, but if it is not specified, the <a href="#PSML_Defaults">defaults</a> for the page must specify a default portlet decorator.</td></tr><tr class="a"><td>state</td><td>The initial state of the fragment portlet; 'hidden' is currently the only valid value for this attribute.</td></tr></table><p>
+The portlet &lt;fragment&gt; element contains other PSML elements:
+</p><table class="bodyTable"><tr class="b"><th>Element</th><th>Description</th></tr><tr class="a"><td><a href="#Fragment_Properties">property*</a></td><td>Parent fragments may have 'row' and/or 'column' properties to identify positional location in the parent layout.</td></tr><tr class="b"><td>title?</td><td>Optional simple text element containing title for fragment portlet, overridding titles set in portlet.xml.</td></tr><tr class="a"><td><a href="#Preferences">preference*</a></td><td>Specifies initial user preference settings for fragment portlet, overridding any portlet preferences set in portlet.xml. User preferences, in turn, override these values.</td></tr><tr class="b"><td><a href="#PSML_Security_Constraints">security-constraints</a>?</td><td>Optionally defines inline security constraints for the fragment. Unlike, page, folder, and link constraints, only 'view' permissions can be constrained. If not specified, the fragment inherits the security constraints effective i
 n the <a href="#Page">page</a>.</td></tr></table><p>Example:</p>
+    <div class="source"><pre>
+&lt;fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn"&gt;
+  ...
+  &lt;fragment id="100939" type="portlet" name="j2-admin::LocaleSelector"&gt;
+    &lt;property layout="OneColumn" name="row" value="0"/&gt;
+  &lt;/fragment&gt;                                
+  ...
+&lt;/fragment&gt;
+</pre></div>
+  </div><div class="section"><a name="Fragment_Properties"></a><h2>Fragment Properties</h2><p>
+The <a href="#Portlet_Fragments">fragment</a> &lt;property&gt; element is use to specify named properties for fragments. These properties are used commonly to specify layout portlet parameters and portlet positional location within the page. The property element has 3 supported attributes:
+</p><table class="bodyTable"><tr class="a"><th>Attribute</th><th>Description</th></tr><tr class="b"><td>layout <i>(deprecated)</i> </td><td>The symbolic name of the layout fragment portlet the property is associated with. This attribute is supported for compatibility reasons. The strictly hierarchical structure of layout and portlet fragments implies that any single fragment and its properties can be subject to one layout fragment portlet.</td></tr><tr class="a"><td>name</td><td>The fragment property name. Jetspeed2 layout portlets support the 'row', 'column' and 'sizes' properties.</td></tr><tr class="b"><td>value</td><td>The fragment property value. The 'row' and 'column' properties accept 0-based indicies values. The 'sizes' property accepts HTML frameset tag 'rows' and 'cols' attributes sytax, (i.e. '25%,75%').</td></tr></table><p>Examples:</p>
+    <div class="source"><pre>
+&lt;fragment id="100876" type="portlet" name="j2-admin::LoginPortlet"&gt;
+  ...
+  &lt;property layout="TwoColumns" name="row" value="2"/&gt;
+  &lt;property layout="TwoColumns" name="column" value="1"/&gt;
+  ...
+&lt;/fragment&gt;
+</pre></div>
+  
+    <div class="source"><pre>
+&lt;fragment id="103456" type="layout" name="jetspeed-layouts::VelocityTwoColumns"&gt;
+  ...
+  &lt;property layout="TwoColumns" name="sizes" value="33%,66%"/&gt;
+  ...
+&lt;/fragment&gt;
+</pre></div>
+  </div><div class="section"><a name="Preferences"></a><h2>Preferences</h2><p>
+The <a href="#Portlet_Fragments">portlet fragment</a> &lt;preference&gt; elements allow for the defining of default
+portlet preference values.  
+This provides an easier avenue for the setting of default portlet preferences for a portlet
+instance on a page without having to duplicate portlet definitions within
+the portlet application's portlet.xml.
+</p><p>
+Preference precedence: User Defined &gt; Fragment Defined &gt; portlet.xml Defined.
+</p><p>The &lt;preference&gt; element attributes:</p><table class="bodyTable"><tr class="a"><th>Attribute</th><th>Description</th></tr><tr class="b"><td>name</td><td>The name of the preference.</td></tr><tr class="a"><td>readOnly</td><td>Boolean indicating whether or not the user can change the value of this preference.</td></tr></table><p>The &lt;preference&gt; element contains these elements:</p><table class="bodyTable"><tr class="b"><th>Element</th><th>Description</th></tr><tr class="a"><td>value+</td><td>Simple text element containing a value associated with the named preference.</td></tr></table><p>Example:</p>
+    <div class="source"><pre>
+&lt;fragment id="uhtemp-1012" type="portlet" name="demo::BookmarkPortlet"&gt;
+  ...
+  &lt;preference name="Google" readOnly="false"&gt;
+    &lt;value&gt;http://www.google.com&lt;/value&gt;
+  &lt;/preference&gt;
+  ...
+&lt;/fragment&gt;
+</pre></div>
+  </div><div class="section"><a name="Folder"></a><h2>Folder</h2><p>
+The &lt;folder&gt; element is a simple container to hold other PSML elements associated with a portal site folder.
+This element is persisted as a folder.metadata file in the associated file system directory.
+There are two valid attributes for the folder element:
+</p><table class="bodyTable"><tr class="b"><th>Attribute</th><th>Description</th></tr><tr class="a"><td>hidden</td><td>A boolean attribute used to indicate that a folder should not appear in portal site menus or other navigational elements.</td></tr><tr class="b"><td>version</td><td>A general purpose version tracking attribute. Not currently used by Jetspeed2.</td></tr></table><p>
+The &lt;folder&gt; element contains a number of other PSML elements:
+</p><table class="bodyTable"><tr class="a"><th>Element</th><th>Description</th></tr><tr class="b"><td>title?</td><td>Simple element containing text for the default folder title. The title of the folder is considered its long description and is used as rollover text in some decorators if the short title is available for the menu text. If not specified, Jetspeed2 will attempt to define a title from the name of the file that contains the folder element.</td></tr><tr class="a"><td>short-title?</td><td>Optional simple element containing text of the default short title for the folder. The short title, if available, is used as menu text in some decorators. If not specified, the title text is used.</td></tr><tr class="b"><td><a href="#PSML_Defaults">defaults?</a></td><td>Optionally specifies the decorations for the folder or subfolder pages and their fragments. Layout decorations are required for each page either specified explicitly in the individual pages or in a parent folder.</t
 d></tr><tr class="a"><td>default-page?</td><td>Optional simple element containing text with the default page or subfolder name for the folder. The default page is used when the folder is directly referenced in the portal. The name of any <a href="#Page">page</a> or folder in this folder, (including '..' for the parent folder), can be specified. If no default page is set, the page named 'default-page.psml' will be used; if 'default-page.psml' does not exist, the first page in the folder will become the default.</td></tr><tr class="b"><td>document-order*</td><td>An optional collection of simple elements containing text names used to define a sort order for <a href="#Page">page</a>, subfolder, and <a href="#Link">link</a> members. Members with matching names will be arranged in the order these elements are defined. Other members will be sorted by their names and will appear in menus and other lists after the matching members. Regular expressions for name matching are not suppor
 ted.</td></tr><tr class="a"><td><a href="#PSML_Titles_and_Metadata">metadata</a>*</td><td>Optionally specifies locale specific titles and short titles for the folder.</td></tr><tr class="b"><td><a href="#Menus">menu</a>*</td><td>Optionally specifies additional or overrides inherited menu definitions for the folder.</td></tr><tr class="a"><td><a href="#PSML_Security_Constraints">security-constraints</a>?</td><td>Optionally defines inline security constraints for the folder. If not specified, the folder inherits the security constraints effective in the parent folder.</td></tr></table><p>Example: <a href="#PSML">see intoductory examples above.</a></p></div><div class="section"><a name="Link"></a><h2>Link</h2><p>
+The &lt;link&gt; element is a simple container to hold other PSML elements associated with a portal link used to reference content external to the portal site.
+This element is persisted as a file with a '.link' extension in the appropriate file system directory associated with the parent <a href="#Folder">folder</a>.
+There are three valid attributes for the link element:
+</p><table class="bodyTable"><tr class="b"><th>Attribute</th><th>Description</th></tr><tr class="a"><td>target</td><td>An optional target frame name in which to open the external content. If not specified, the linked content will replace the portal in the browser.</td></tr><tr class="b"><td>version</td><td>A general purpose version tracking attribute. Not currently used by Jetspeed2.</td></tr><tr class="a"><td>skin</td><td>A general purpose decorator attribute that can be referenced in the portlet decorators to control link presentation. <a href="#Menus">Menu</a> option elements for the link will adopt this skin value if not otherwise specified. Not currently used by Jetspeed2.</td></tr></table><p>
+The &lt;link&gt; element contains a number of other PSML elements:
+</p><table class="bodyTable"><tr class="b"><th>Element</th><th>Description</th></tr><tr class="a"><td>title?</td><td>Simple element containing text for the default link title. The title of the link is considered its long description and is used as rollover text in some decorators if the short title is available for the menu text. If not specified, Jetspeed2 will attempt to define a title from the name of the file that contains the link element.</td></tr><tr class="b"><td>short-title?</td><td>Optional simple element containing text of the default short title for the link. The short title, if available, is used as menu text in some decorators. If not specified, the title text is used.</td></tr><tr class="a"><td>url</td><td>The required content url element. The text of this element will be used to navigate the specified target frame in the browser.</td></tr><tr class="b"><td><a href="#PSML_Titles_and_Metadata">metadata</a>*</td><td>Optionally specifies locale specific titles an
 d short titles for the link.</td></tr><tr class="a"><td><a href="#PSML_Security_Constraints">security-constraints</a>?</td><td>Optionally defines inline security constraints for the link. If not specified, the link inherits the security constraints effective in the parent <a href="#Folder">folder</a>.</td></tr></table><p>Example: <a href="#PSML">see intoductory examples above.</a></p></div><div class="section"><a name="Global_Page_Security"></a><h2>Global Page Security</h2><p>
+The &lt;page-security&gt; element is a simple container to hold other PSML elements used to declare global security constraints and their definitions..
+This element is persisted as the page.security file and is always located in the root directory of the PSML file system directories.
+There is only one valid attribute for the page security element:
+</p><table class="bodyTable"><tr class="b"><th>Attribute</th><th>Description</th></tr><tr class="a"><td>version</td><td>A general purpose version tracking attribute. Not currently used by Jetspeed2.</td></tr></table><p>
+The &lt;page-security&gt; element contains two security constraints related PSML elements:
+</p><table class="bodyTable"><tr class="b"><th>Element</th><th>Description</th></tr><tr class="a"><td><a href="#PSML_Security_Constraints">security-constraints-def</a>*</td><td>Optionally defines a collection of security constraints defined by name. These security constraints are referenced in <a href="#Page">pages</a>, <a href="#Layout_Fragments">fragments</a>, <a href="#Folder">folders</a>, and <a href="#Link">links</a> and in this element to facilitate reuse and security maintenance.</td></tr><tr class="b"><td><a href="#PSML_Security_Constraints">global-security-constraints-ref</a>*</td><td>Optionally defines security constraints references to be applied to all security constraints in the site. The text of each simple element references a named security constraints definition specified here in this element.</td></tr></table><p>Example: <a href="#PSML">see intoductory examples above.</a></p></div><div class="section"><a name="PSML_Titles_and_Metadata"></a><h2>PSML Titles a
 nd Metadata</h2><p>
+The <a href="#Page">page</a>, <a href="#Folder">folder</a>, and <a href="#Link">link</a> &lt;metadata&gt; element is used to define locale specific title and short title text.
+Any number of these elements may appear within a containing PSML element, but multiple named values should not be specified for a single locale.
+The PSML xml documents are normally declared with the UTF-8 encoding to support a wide variety of character sets.
+</p><table class="bodyTable"><tr class="a"></tr><th>Attribute</th><th>Description</th><tr class="b"><td>name</td><td>Name of the metadata text. This name should be either 'title' or 'short-title' to specify locale specific title text.</td></tr><tr class="a"><td>xml:lang</td><td>The locale language or language/country selector for the metadata text. The conventional Java Locale names are expected, (ISO-639 and ISO-3166). Valid values would include 'en' and 'en_US'.</td></tr></table><p>Example:</p>
+    <div class="source"><pre>
+&lt;page&gt;
+  ...
+  &lt;metadata name="title" xml:lang="fr"&gt;Ma Premiere Page de PSML&lt;/metadata&gt;
+  &lt;metadata name="title" xml:lang="es"&gt;¡Bienvenido a Jetspeed 2!&lt;/metadata&gt;
+  &lt;metadata name="title" xml:lang="hu"&gt;Köszönti a Jetspeed 2!&lt;/metadata&gt;
+  ...
+&lt;/page&gt;
+</pre></div>
+  </div><div class="section"><a name="PSML_Defaults"></a><h2>PSML Defaults</h2><p>
+The <a href="#Page">page</a> and <a href="#Folder">folder</a> &lt;defaults&gt; element defines the default layout
+decorator and default portlet decorator. The default layout decorator is applied to all top level layout fragments
+which do NOT have a decorator attribute. The default portlet decorator is applied to all portlet fragments which do NOT
+have a decorator attribute. Defaults may be inherited from parent folder default elements. There are three valid
+attributes on the defaults element:
+</p><table class="bodyTable"><tr class="b"><th>Attribute</th><th>Description</th></tr><tr class="a"><td>layout-decorator</td><td>The name of the layout decorator used to render the page. This attribute is required, but may be inherited from a parent folder..</td></tr><tr class="b"><td>portlet-decorator</td><td>The name of the default portlet decorator used to render the page fragments. This attribute is optional, but is almost always set. This attribute too may be inherited from parent folders.</td></tr><tr class="a"><td>skin</td><td>A general purpose decorator attribute that can be referenced in the decorators to control page and folder presentation. <a href="#Menus">Menu</a> option elements for the page and folder will adopt this skin value if not otherwise specified. Not currently used by Jetspeed2.</td></tr></table><p>Example:</p>
+    <div class="source"><pre>
+&lt;page&gt;
+  ...
+  &lt;defaults skin="orange" layout-decorator="tigris" portlet-decorator="tigris"/&gt;
+  ...
+&lt;/page&gt;
+</pre></div>
+  </div><div class="section"><a name="PSML_Security_Constraints"></a><h2>PSML Security Constraints</h2><p>
+The &lt;security-constraints&gt;, &lt;security-constraints-def&gt;, and &lt;global-security-constraints-ref&gt; elements that appear in <a href="#Page">pages</a>, <a href="#Layout_Fragments">fragments</a>, <a href="#Folder">folders</a>, <a href="#Link">links</a>, and the <a href="#Global_Page_Security">page security</a> elements above are documented separately in the the Declarative Security Constraints Guide.
+</p><p>
+<a href="guide-security-declarative-psml.html">Declarative Security Constraints Guide</a>
+</p></div><div class="section"><a name="PSML_Menus"></a><h2>PSML Menus</h2><p>
+The &lt;menu&gt; element that appears in <a href="#Page">page</a> and <a href="#Folder">folder</a> elements above are documented separately in the the Declarative Menus Guide.
+</p><p>
+<a href="guide-menus-declarative-psml.html">Declarative Menus Guide</a>
+</p></div></div></div><div class="clear"><hr></hr></div><div id="footer"><div class="xright">© 1999-2007, Apache Software Foundation</div><div class="clear"><hr></hr></div></div></body></html>
\ No newline at end of file

Propchange: portals/site-live/jetspeed-2.1.3/guides/guide-psml.html
------------------------------------------------------------------------------
    svn:executable = *