Added: portals/site-live/jetspeed-2.1.3/devguide/guide-profiling-ip.html
URL: 
http://svn.apache.org/viewvc/portals/site-live/jetspeed-2.1.3/devguide/guide-profiling-ip.html?rev=1422709&view=auto
==============================================================================
--- portals/site-live/jetspeed-2.1.3/devguide/guide-profiling-ip.html (added)
+++ portals/site-live/jetspeed-2.1.3/devguide/guide-profiling-ip.html Sun Dec 
16 22:54:22 2012
@@ -0,0 +1,292 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml";>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Jetspeed 2 - Guide to Profiling IP Addresses</title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" 
media="print" />
+          </head>
+  <body class="composite">
+    <div id="banner">
+                  <a href="http://portals.apache.org/jetspeed-2/"; 
id="bannerLeft">
+    
+                                            <img 
src="images/jetspeed-logo.gif" alt="" />
+    
+            </a>
+                    <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="breadcrumbs">
+          
+  
+
+  
+    
+  
+  
+    
+            <div class="xleft">
+        Last Published: 14 July 2010
+                      </div>
+            <div class="xright">            <a 
href="http://portals.apache.org/applications/"; 
class="externalLink">Applications</a>
+            |
+                <a href="http://portals.apache.org/"; 
class="externalLink">Portals</a>
+            |
+                <a href="http://portals.apache.org/jetspeed-2/"; 
class="externalLink">Jetspeed-2.2</a>
+            
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="leftColumn">
+      <div id="navcolumn">
+           
+  
+
+  
+    
+  
+  
+    
+                   <h5>Essentials</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="index.html">Welcome</a>
+          </li>
+              
+    <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="demo.html">Jetspeed Online Demos</a>
+          </li>
+          </ul>
+              <h5>Get Jetspeed</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="download.html">Download</a>
+          </li>
+              
+    <li class="none">
+                    <a href="getting-started-installer.html">Installer 
Instructions</a>
+          </li>
+              
+    <li class="none">
+                    <a href="release-notes.html">Release Notes</a>
+          </li>
+          </ul>
+              <h5>Documentation Guides</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="usersguide/index.html">Users Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="adminguide/index.html">Administrators Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="deployguide/index.html">Deployment Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="devguide/index.html">Developers Guide</a>
+          </li>
+          </ul>
+              <h5>Migration</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="guide-migration.html">Migration Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="j1-migration.html">Jetspeed-1 Migration 
Guideline</a>
+          </li>
+              
+    <li class="none">
+                    <a href="j1-users.html">For Jetspeed-1 Users</a>
+          </li>
+          </ul>
+              <h5>APIs</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="apidocs/jetspeed-api/index.html">Jetspeed-2 Java 
API</a>
+          </li>
+              
+    <li class="none">
+                    <a href="devguide/guide-ajax-api.html">Jetspeed-2 AJAX 
API</a>
+          </li>
+          </ul>
+              <h5>Tutorials</h5>
+                  <h5>Community</h5>
+            <ul>
+              
+    <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>
+              <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">Wiki</a>
+          </li>
+              
+    <li class="none">
+                    <a href="faq.html">FAQ</a>
+          </li>
+          </ul>
+              <h5>Translation</h5>
+            <ul>
+              
+    <li class="none">
+                    <a 
href="http://jetspeed-japan.sourceforge.jp/jetspeed-2-trans/ja/index.html"; 
class="externalLink">Japanese</a>
+          </li>
+          </ul>
+                                           <a href="http://maven.apache.org/"; 
title="Built by Maven" class="poweredBy">
+            <img alt="Built by Maven" 
src="./images/logos/maven-feather.png"></img>
+          </a>
+                       
+  
+
+  
+    
+  
+  
+    
+        </div>
+    </div>
+    <div id="bodyColumn">
+      <div id="contentBox">
+        <subtitle></subtitle><authors><person name="Philip Mark Donaghy" 
email="[email protected]"></authors><div class="section"><h2><a 
name="Guide_to_Profiling_IP_Addresses"></a>Guide to Profiling IP Addresses</h2>
+<p>
+  Jetspeed has a built in mechanism to serve custom content
+  to a specific IP address. This feature uses the Profiler 
+  to negociate pages based on the requesting clients IP address.
+                       </p>
+<div class="section"><h3><a name="a1._The_Rule"></a>1. The Rule</h3>
+<p>
+  The rule is identified by the key <b>ip-address</b>. There is one criterion
+  called <b>ip</b> resolved using the IP Criterion Resolver. This class 
implements
+  the resolve method of the Rule Criterion Resolver in order to obtain the IP 
address
+  from the request.
+                       </p>
+<div class="source"><pre>
+    public String resolve(RequestContext context, RuleCriterion criterion)
+    {
+        // look for override
+        String value = super.resolve(context, criterion);
+        if (value != null) { return value.toLowerCase(); }
+
+        // Note IP addresses can vary depending on the client
+        // Konqueror 3.4.2 returns IPv6 e.g. 0:0:0:0:0:0:0:1
+        // Firefox 1.0.7 returns IPv4 e.g. 127.0.0.1
+        // This is the value used to resolve pages in the _ip directory
+        // TODO create an option to convert all IPv4 addresses to IPv6
+        return context.getRequest().getRemoteAddr();
+    }
+                        </pre>
+</div>
+</div>
+<div class="section"><h3><a name="a2._The_Page_Locator"></a>2. The Page 
Locator</h3>
+<p>
+  Users with this profile rule set to the <b>page</b> locator are served pages 
from the _ip 
+  directory of the psml site tree. Example, if a request is made for
+  http://www.apache.org/jetspeed/portal/default-page.psml from 81.29.65.234
+  then the rule will match /WEB-INF/pages/_ip/81.29.65.234/default-page.psml 
before
+  falling back to /WEB-INF/pages/default-page.psml
+                       </p>
+</div>
+<div class="section"><h3><a name="a3._Example_Use_Cases"></a>3. Example Use 
Cases</h3>
+<p>
+  You have a location in Tokyo serving content specific to that 
+  location. Your kiosk is configured with a fixed IP address. The annonymous 
+  user (guest by default) uses this profile rule. Anyone using 
+  the portal from that kiosk would be served content from the _ip directory.
+                       </p>
+<p>
+  It could also be used to profile robots. Or keep out unwanted visitors. And 
can be the basis for 
+  profiling IP ranges or IP prefixes, networks and subnetworks, and geographic 
locations.
+                       </p>
+</div>
+</div>
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">&#169;  
+          2004-2010
+    
+          Apache Software Foundation
+          
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+  </body>
+</html>

Propchange: portals/site-live/jetspeed-2.1.3/devguide/guide-profiling-ip.html
------------------------------------------------------------------------------
    svn:executable = *

Added: portals/site-live/jetspeed-2.1.3/devguide/guide-psml-dtd.html
URL: 
http://svn.apache.org/viewvc/portals/site-live/jetspeed-2.1.3/devguide/guide-psml-dtd.html?rev=1422709&view=auto
==============================================================================
--- portals/site-live/jetspeed-2.1.3/devguide/guide-psml-dtd.html (added)
+++ portals/site-live/jetspeed-2.1.3/devguide/guide-psml-dtd.html Sun Dec 16 
22:54:22 2012
@@ -0,0 +1,1128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+
+
+
+
+
+
+
+
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml";>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>Jetspeed 2 - Guide to PSML DTDs and XML Schema</title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" 
media="print" />
+          </head>
+  <body class="composite">
+    <div id="banner">
+                  <a href="http://portals.apache.org/jetspeed-2/"; 
id="bannerLeft">
+    
+                                            <img 
src="images/jetspeed-logo.gif" alt="" />
+    
+            </a>
+                    <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="breadcrumbs">
+          
+  
+
+  
+    
+  
+  
+    
+            <div class="xleft">
+        Last Published: 14 July 2010
+                      </div>
+            <div class="xright">            <a 
href="http://portals.apache.org/applications/"; 
class="externalLink">Applications</a>
+            |
+                <a href="http://portals.apache.org/"; 
class="externalLink">Portals</a>
+            |
+                <a href="http://portals.apache.org/jetspeed-2/"; 
class="externalLink">Jetspeed-2.2</a>
+            
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="leftColumn">
+      <div id="navcolumn">
+           
+  
+
+  
+    
+  
+  
+    
+                   <h5>Essentials</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="index.html">Welcome</a>
+          </li>
+              
+    <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="demo.html">Jetspeed Online Demos</a>
+          </li>
+          </ul>
+              <h5>Get Jetspeed</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="download.html">Download</a>
+          </li>
+              
+    <li class="none">
+                    <a href="getting-started-installer.html">Installer 
Instructions</a>
+          </li>
+              
+    <li class="none">
+                    <a href="release-notes.html">Release Notes</a>
+          </li>
+          </ul>
+              <h5>Documentation Guides</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="usersguide/index.html">Users Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="adminguide/index.html">Administrators Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="deployguide/index.html">Deployment Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="devguide/index.html">Developers Guide</a>
+          </li>
+          </ul>
+              <h5>Migration</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="guide-migration.html">Migration Guide</a>
+          </li>
+              
+    <li class="none">
+                    <a href="j1-migration.html">Jetspeed-1 Migration 
Guideline</a>
+          </li>
+              
+    <li class="none">
+                    <a href="j1-users.html">For Jetspeed-1 Users</a>
+          </li>
+          </ul>
+              <h5>APIs</h5>
+            <ul>
+              
+    <li class="none">
+                    <a href="apidocs/jetspeed-api/index.html">Jetspeed-2 Java 
API</a>
+          </li>
+              
+    <li class="none">
+                    <a href="devguide/guide-ajax-api.html">Jetspeed-2 AJAX 
API</a>
+          </li>
+          </ul>
+              <h5>Tutorials</h5>
+                  <h5>Community</h5>
+            <ul>
+              
+    <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>
+              <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">Wiki</a>
+          </li>
+              
+    <li class="none">
+                    <a href="faq.html">FAQ</a>
+          </li>
+          </ul>
+              <h5>Translation</h5>
+            <ul>
+              
+    <li class="none">
+                    <a 
href="http://jetspeed-japan.sourceforge.jp/jetspeed-2-trans/ja/index.html"; 
class="externalLink">Japanese</a>
+          </li>
+          </ul>
+                                           <a href="http://maven.apache.org/"; 
title="Built by Maven" class="poweredBy">
+            <img alt="Built by Maven" 
src="./images/logos/maven-feather.png"></img>
+          </a>
+                       
+  
+
+  
+    
+  
+  
+    
+        </div>
+    </div>
+    <div id="bodyColumn">
+      <div id="contentBox">
+        <subtitle></subtitle><authors><person name="Randy Watler" 
email="[email protected]"></authors><div class="section"><h2><a 
name="PSML_DTDs_and_XML_Schema"></a>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="../deployguide/guide-security-declarative-psml.html">Guide to 
declarative security through PSML</a></li>
+<li><a href="../deployguide/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"><h2><a name="Page"></a>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=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
+
+&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
+
+  &lt;!-- top level page element --&gt;
+
+  &lt;xs:element name=&quot;page&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;defaults&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;fragment&quot; /&gt;
+        &lt;xs:element ref=&quot;menu&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;metadata&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints&quot; 
minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;short-title&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;version&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;hidden&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&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=&quot;defaults&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:attribute name=&quot;portlet-decorator&quot; 
type=&quot;xs:NMTOKEN&quot; use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;layout-decorator&quot; 
type=&quot;xs:NMTOKEN&quot; use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;exclude&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;fragment&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;fragment&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;preference&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;property&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints&quot; 
minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;decorator&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;required&quot; /&gt;
+      &lt;xs:attribute name=&quot;type&quot; use=&quot;required&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;layout&quot; /&gt;
+            &lt;xs:enumeration value=&quot;portlet&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;state&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;id&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;required&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;groups&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;include&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;nest&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&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=&quot;menu&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;exclude&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;include&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;menu&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;metadata&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;options&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;separator&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;short-title&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;order&quot; type=&quot;xs:string&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;options&quot; type=&quot;xs:string&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;profile&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;regexp&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;paths&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;depth&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;metadata&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;name&quot; use=&quot;required&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;short-title&quot; /&gt;
+            &lt;xs:enumeration value=&quot;text&quot; /&gt;
+            &lt;xs:enumeration value=&quot;title&quot; /&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=&quot;options&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;order&quot; type=&quot;xs:string&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;profile&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;regexp&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;paths&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;depth&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;owner&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;permissions&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;preference&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:sequence&gt;
+        &lt;xs:element ref=&quot;value&quot; maxOccurs=&quot;unbounded&quot; 
/&gt;
+      &lt;/xs:sequence&gt;
+      &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;required&quot; /&gt;
+      &lt;xs:attribute name=&quot;readOnly&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&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=&quot;property&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:attribute name=&quot;name&quot; use=&quot;required&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;column&quot; /&gt;
+            &lt;xs:enumeration value=&quot;row&quot; /&gt;
+            &lt;xs:enumeration value=&quot;sizes&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;layout&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;value&quot; type=&quot;xs:string&quot; 
use=&quot;required&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;roles&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraint&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;4&quot;&gt;
+        &lt;xs:element ref=&quot;groups&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;permissions&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;roles&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;users&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;owner&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraint&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints-ref&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints-ref&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;separator&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;metadata&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;text&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;short-title&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;text&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;title&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;users&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;value&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+</div>
+</div>
+<div class="section"><h2><a name="Folder"></a>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=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
+
+&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
+
+  &lt;!-- top level folder element --&gt;
+
+  &lt;xs:element name=&quot;folder&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;default-page&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;defaults&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;document-order&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;menu&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;metadata minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot;&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints&quot; 
minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;short-title&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;version&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;hidden&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&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=&quot;default-page&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;defaults&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:attribute name=&quot;portlet-decorator&quot; 
type=&quot;xs:NMTOKEN&quot; use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;layout-decorator&quot; 
type=&quot;xs:NMTOKEN&quot; use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;document-order&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;exclude&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;groups&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;include&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;nest&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&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=&quot;menu&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;exclude&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;include&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;menu&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;metadata&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;options&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;separator&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;short-title&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;order&quot; type=&quot;xs:string&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;options&quot; type=&quot;xs:string&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;profile&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;regexp&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;paths&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;depth&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;metadata&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;name&quot; use=&quot;required&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;short-title&quot; /&gt;
+            &lt;xs:enumeration value=&quot;text&quot; /&gt;
+            &lt;xs:enumeration value=&quot;title&quot; /&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=&quot;options&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;order&quot; type=&quot;xs:string&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;profile&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;regexp&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;paths&quot; use=&quot;optional&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;false&quot; /&gt;
+            &lt;xs:enumeration value=&quot;true&quot; /&gt;
+          &lt;/xs:restriction&gt;
+        &lt;/xs:simpleType&gt;
+      &lt;/xs:attribute&gt;
+      &lt;xs:attribute name=&quot;depth&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;owner&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;permissions&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;roles&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraint&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;4&quot;&gt;
+        &lt;xs:element ref=&quot;groups&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;permissions&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;roles&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;users&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;owner&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraint&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints-ref&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints-ref&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;separator&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;metadata&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;text&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;short-title&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;text&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;title&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;users&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+</div>
+</div>
+<div class="section"><h2><a name="Link"></a>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=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
+
+&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
+
+  &lt;!-- top level link element --&gt;
+
+  &lt;xs:element name=&quot;link&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;metadata&quot; minOccurs=&quot;0&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints&quot; 
minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;short-title&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;title&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;url&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;version&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+      &lt;xs:attribute name=&quot;target&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;required&quot; /&gt;
+      &lt;xs:attribute name=&quot;skin&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;!-- link child elements --&gt;
+
+  &lt;xs:element name=&quot;groups&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;metadata&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot;&gt;
+      &lt;xs:attribute name=&quot;name&quot; use=&quot;required&quot;&gt;
+        &lt;xs:simpleType&gt;
+          &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;
+            &lt;xs:enumeration value=&quot;short-title&quot; /&gt;
+            &lt;xs:enumeration value=&quot;title&quot; /&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=&quot;owner&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;permissions&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;roles&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraint&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;4&quot;&gt;
+        &lt;xs:element ref=&quot;groups&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;permissions&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;roles&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;users&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;owner&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraint&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints-ref&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints-ref&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;short-title&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;title&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;url&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;users&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+</div>
+</div>
+<div class="section"><h2><a name="Page_Security"></a>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=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
+
+&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;
+
+  &lt;!-- top level page-security element --&gt;
+
+  &lt;xs:element name=&quot;page-security&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
+        &lt;xs:element ref=&quot;global-security-constraints-ref&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+        &lt;xs:element ref=&quot;security-constraints-def&quot; 
minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
+      &lt;/xs:choice&gt;
+      &lt;xs:attribute name=&quot;version&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;optional&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;!-- page-security child elements --&gt;
+
+  &lt;xs:element name=&quot;global-security-constraints-ref&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;groups&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;permissions&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;roles&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraint&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:choice maxOccurs=&quot;4&quot;&gt;
+        &lt;xs:element ref=&quot;groups&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;permissions&quot; minOccurs=&quot;0&quot; 
/&gt;
+        &lt;xs:element ref=&quot;roles&quot; minOccurs=&quot;0&quot; /&gt;
+        &lt;xs:element ref=&quot;users&quot; minOccurs=&quot;0&quot; /&gt;
+      &lt;/xs:choice&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;security-constraints-def&quot;&gt;
+    &lt;xs:complexType&gt;
+      &lt;xs:sequence&gt;
+        &lt;xs:element ref=&quot;security-constraint&quot; 
maxOccurs=&quot;unbounded&quot; /&gt;
+      &lt;/xs:sequence&gt;
+      &lt;xs:attribute name=&quot;name&quot; type=&quot;xs:NMTOKEN&quot; 
use=&quot;required&quot; /&gt;
+    &lt;/xs:complexType&gt;
+  &lt;/xs:element&gt;
+
+  &lt;xs:element name=&quot;users&quot;&gt;
+    &lt;xs:complexType mixed=&quot;true&quot; /&gt;
+  &lt;/xs:element&gt;
+
+&lt;/xs:schema&gt;
+</pre>
+</div>
+</div>
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">&#169;  
+          2004-2010
+    
+          Apache Software Foundation
+          
+  
+
+  
+    
+  
+  
+    
+  </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+  </body>
+</html>

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


Reply via email to