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">©
+ 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>
+<!-- top level page element -->
+
+<!ELEMENT page ( defaults | fragment | menu | metadata |
security-constraints | short-title | title )* >
+<!ATTLIST page hidden ( false | true ) #IMPLIED >
+<!ATTLIST page version NMTOKEN #IMPLIED >
+
+<!-- page child elements -->
+
+<!ELEMENT defaults EMPTY >
+<!ATTLIST defaults layout-decorator NMTOKEN #REQUIRED >
+<!ATTLIST defaults portlet-decorator NMTOKEN #IMPLIED >
+<!ATTLIST defaults skin NMTOKEN #IMPLIED >
+
+<!ELEMENT exclude ( #PCDATA ) >
+
+<!ELEMENT fragment ( fragment | preference | property |
security-constraints )* >
+<!ATTLIST fragment decorator NMTOKEN #IMPLIED >
+<!ATTLIST fragment id NMTOKEN #REQUIRED >
+<!ATTLIST fragment name NMTOKEN #REQUIRED >
+<!ATTLIST fragment skin NMTOKEN #IMPLIED >
+<!ATTLIST fragment state NMTOKEN #IMPLIED >
+<!ATTLIST fragment type ( layout | portlet ) #REQUIRED >
+
+<!ELEMENT groups ( #PCDATA ) >
+
+<!ELEMENT include ( #PCDATA ) >
+<!ATTLIST include nest ( false | true ) #IMPLIED >
+
+<!ELEMENT menu ( exclude | include | menu | metadata | options | separator
| short-title | title )* >
+<!ATTLIST menu depth NMTOKEN #IMPLIED >
+<!ATTLIST menu name NMTOKEN #IMPLIED >
+<!ATTLIST menu options CDATA #IMPLIED >
+<!ATTLIST menu order CDATA #IMPLIED >
+<!ATTLIST menu paths ( false | true ) #IMPLIED >
+<!ATTLIST menu profile NMTOKEN #IMPLIED >
+<!ATTLIST menu regexp ( false | true ) #IMPLIED >
+<!ATTLIST menu skin NMTOKEN #IMPLIED >
+
+<!ELEMENT metadata ( #PCDATA ) >
+<!ATTLIST metadata name ( short-title | text | title ) #REQUIRED >
+<!ATTLIST metadata xml:lang NMTOKEN #REQUIRED >
+
+<!ELEMENT options ( #PCDATA ) >
+<!ATTLIST options depth NMTOKEN #IMPLIED >
+<!ATTLIST options order CDATA #IMPLIED >
+<!ATTLIST options paths ( false | true ) #IMPLIED >
+<!ATTLIST options profile NMTOKEN #IMPLIED >
+<!ATTLIST options regexp ( false | true ) #IMPLIED >
+<!ATTLIST options skin NMTOKEN #IMPLIED >
+
+<!ELEMENT owner ( #PCDATA ) >
+
+<!ELEMENT permissions ( #PCDATA ) >
+
+<!ELEMENT preference ( value+ ) >
+<!ATTLIST preference name NMTOKEN #REQUIRED >
+<!ATTLIST preference readOnly ( false | true ) #IMPLIED >
+
+<!ELEMENT property EMPTY >
+<!ATTLIST property layout NMTOKEN #IMPLIED >
+<!ATTLIST property name ( column | row | sizes ) #REQUIRED >
+<!ATTLIST property value CDATA #REQUIRED >
+
+<!ELEMENT roles ( #PCDATA ) >
+
+<!ELEMENT security-constraint ( groups | permissions | roles | users )* >
+
+<!ELEMENT security-constraints ( owner | security-constraint |
security-constraints-ref )* >
+
+<!ELEMENT security-constraints-ref ( #PCDATA ) >
+
+<!ELEMENT separator ( #PCDATA | metadata | text | title )* >
+<!ATTLIST separator skin NMTOKEN #IMPLIED >
+
+<!ELEMENT short-title ( #PCDATA ) >
+
+<!ELEMENT text ( #PCDATA ) >
+
+<!ELEMENT title ( #PCDATA ) >
+
+<!ELEMENT users ( #PCDATA ) >
+
+<!ELEMENT value ( #PCDATA ) >
+</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>
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <!-- top level page element -->
+
+ <xs:element name="page">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="defaults" minOccurs="0" />
+ <xs:element ref="fragment" />
+ <xs:element ref="menu" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="metadata" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="security-constraints"
minOccurs="0" />
+ <xs:element ref="short-title" minOccurs="0"
/>
+ <xs:element ref="title" minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="version" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="hidden" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- page child elements -->
+
+ <xs:element name="defaults">
+ <xs:complexType>
+ <xs:attribute name="portlet-decorator"
type="xs:NMTOKEN" use="optional" />
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="layout-decorator"
type="xs:NMTOKEN" use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="exclude">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="fragment">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="fragment" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="preference" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="property" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="security-constraints"
minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="decorator" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="name" type="xs:NMTOKEN"
use="required" />
+ <xs:attribute name="type" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="layout" />
+ <xs:enumeration value="portlet" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="state" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="id" type="xs:NMTOKEN"
use="required" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="groups">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="include">
+ <xs:complexType mixed="true">
+ <xs:attribute name="nest" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="menu">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="exclude" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="include" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="menu" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="metadata" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="options" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="separator" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="short-title" minOccurs="0"
/>
+ <xs:element ref="title" minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="order" type="xs:string"
use="optional" />
+ <xs:attribute name="options" type="xs:string"
use="optional" />
+ <xs:attribute name="name" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="profile" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="regexp" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="paths" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="depth" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="metadata">
+ <xs:complexType mixed="true">
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="short-title" />
+ <xs:enumeration value="text" />
+ <xs:enumeration value="title" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="options">
+ <xs:complexType mixed="true">
+ <xs:attribute name="order" type="xs:string"
use="optional" />
+ <xs:attribute name="profile" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="regexp" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="paths" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="depth" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="owner">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="permissions">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="preference">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="value" maxOccurs="unbounded"
/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NMTOKEN"
use="required" />
+ <xs:attribute name="readOnly" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="property">
+ <xs:complexType>
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="column" />
+ <xs:enumeration value="row" />
+ <xs:enumeration value="sizes" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="layout" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="value" type="xs:string"
use="required" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="roles">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="security-constraint">
+ <xs:complexType>
+ <xs:choice maxOccurs="4">
+ <xs:element ref="groups" minOccurs="0" />
+ <xs:element ref="permissions" minOccurs="0"
/>
+ <xs:element ref="roles" minOccurs="0" />
+ <xs:element ref="users" minOccurs="0" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="owner" minOccurs="0" />
+ <xs:element ref="security-constraint"
minOccurs="0" maxOccurs="unbounded" />
+ <xs:element ref="security-constraints-ref"
minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints-ref">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="separator">
+ <xs:complexType mixed="true">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="metadata" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="text" minOccurs="0" />
+ <xs:element ref="title" minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="short-title">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="text">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="title">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="users">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="value">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+</xs:schema>
+</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>
+<!-- top level folder element -->
+
+<!ELEMENT folder ( default-page | defaults | document-order | menu |
metadata | security-constraints | short-title | title )* >
+<!ATTLIST folder hidden ( false | true ) #IMPLIED >
+<!ATTLIST folder version NMTOKEN #IMPLIED >
+
+<!-- folder child elements -->
+
+<!ELEMENT default-page ( #PCDATA ) >
+
+<!ELEMENT defaults EMPTY >
+<!ATTLIST defaults layout-decorator NMTOKEN #REQUIRED >
+<!ATTLIST defaults portlet-decorator NMTOKEN #IMPLIED >
+<!ATTLIST defaults skin NMTOKEN #IMPLIED >
+
+<!ELEMENT document-order ( #PCDATA ) >
+
+<!ELEMENT exclude ( #PCDATA ) >
+
+<!ELEMENT groups ( #PCDATA ) >
+
+<!ELEMENT include ( #PCDATA ) >
+<!ATTLIST include nest ( false | true ) #IMPLIED >
+
+<!ELEMENT menu ( exclude | include | menu | metadata | options | separator
| short-title | title )* >
+<!ATTLIST menu depth NMTOKEN #IMPLIED >
+<!ATTLIST menu name NMTOKEN #IMPLIED >
+<!ATTLIST menu options CDATA #IMPLIED >
+<!ATTLIST menu order CDATA #IMPLIED >
+<!ATTLIST menu paths ( false | true ) #IMPLIED >
+<!ATTLIST menu profile NMTOKEN #IMPLIED >
+<!ATTLIST menu regexp ( false | true ) #IMPLIED >
+<!ATTLIST menu skin NMTOKEN #IMPLIED >
+
+<!ELEMENT metadata ( #PCDATA ) >
+<!ATTLIST metadata name ( short-title | text | title ) #REQUIRED >
+<!ATTLIST metadata xml:lang NMTOKEN #REQUIRED >
+
+<!ELEMENT options ( #PCDATA ) >
+<!ATTLIST options depth NMTOKEN #IMPLIED >
+<!ATTLIST options order CDATA #IMPLIED >
+<!ATTLIST options paths ( false | true ) #IMPLIED >
+<!ATTLIST options profile NMTOKEN #IMPLIED >
+<!ATTLIST options regexp ( false | true ) #IMPLIED >
+<!ATTLIST options skin NMTOKEN #IMPLIED >
+
+<!ELEMENT owner ( #PCDATA ) >
+
+<!ELEMENT permissions ( #PCDATA ) >
+
+<!ELEMENT roles ( #PCDATA ) >
+
+<!ELEMENT security-constraint ( groups | permissions | roles | users )* >
+
+<!ELEMENT security-constraints ( owner | security-constraint |
security-constraints-ref )* >
+
+<!ELEMENT security-constraints-ref ( #PCDATA ) >
+
+<!ELEMENT separator ( #PCDATA | metadata | text | title )* >
+<!ATTLIST separator skin NMTOKEN #IMPLIED >
+
+<!ELEMENT short-title ( #PCDATA ) >
+
+<!ELEMENT text ( #PCDATA ) >
+
+<!ELEMENT title ( #PCDATA ) >
+
+<!ELEMENT users ( #PCDATA ) >
+</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>
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <!-- top level folder element -->
+
+ <xs:element name="folder">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="default-page" minOccurs="0"
/>
+ <xs:element ref="defaults" minOccurs="0" />
+ <xs:element ref="document-order" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="menu" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="metadata minOccurs="0"
maxOccurs="unbounded"" />
+ <xs:element ref="security-constraints"
minOccurs="0" />
+ <xs:element ref="short-title" minOccurs="0"
/>
+ <xs:element ref="title" minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="version" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="hidden" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- folder child elements -->
+
+ <xs:element name="default-page">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="defaults">
+ <xs:complexType>
+ <xs:attribute name="portlet-decorator"
type="xs:NMTOKEN" use="optional" />
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="layout-decorator"
type="xs:NMTOKEN" use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="document-order">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="exclude">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="groups">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="include">
+ <xs:complexType mixed="true">
+ <xs:attribute name="nest" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="menu">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="exclude" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="include" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="menu" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="metadata" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="options" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="separator" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="short-title" minOccurs="0"
/>
+ <xs:element ref="title" minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="order" type="xs:string"
use="optional" />
+ <xs:attribute name="options" type="xs:string"
use="optional" />
+ <xs:attribute name="name" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="profile" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="regexp" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="paths" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="depth" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="metadata">
+ <xs:complexType mixed="true">
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="short-title" />
+ <xs:enumeration value="text" />
+ <xs:enumeration value="title" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="options">
+ <xs:complexType mixed="true">
+ <xs:attribute name="order" type="xs:string"
use="optional" />
+ <xs:attribute name="profile" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="regexp" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="paths" use="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="false" />
+ <xs:enumeration value="true" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="depth" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="owner">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="permissions">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="roles">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="security-constraint">
+ <xs:complexType>
+ <xs:choice maxOccurs="4">
+ <xs:element ref="groups" minOccurs="0" />
+ <xs:element ref="permissions" minOccurs="0"
/>
+ <xs:element ref="roles" minOccurs="0" />
+ <xs:element ref="users" minOccurs="0" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="owner" minOccurs="0" />
+ <xs:element ref="security-constraint"
minOccurs="0" maxOccurs="unbounded" />
+ <xs:element ref="security-constraints-ref"
minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints-ref">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="separator">
+ <xs:complexType mixed="true">
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="metadata" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="text" minOccurs="0" />
+ <xs:element ref="title" minOccurs="0" />
+ </xs:choice>
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="short-title">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="text">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="title">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="users">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+</xs:schema>
+</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>
+<!-- top level link element -->
+
+<!ELEMENT link ( metadata | security-constraints | short-title | title |
url )* >
+<!ATTLIST link target NMTOKEN #REQUIRED >
+<!ATTLIST link version NMTOKEN #IMPLIED >
+<!ATTLIST link skin NMTOKEN #IMPLIED >
+
+<!-- link child elements -->
+
+<!ELEMENT groups ( #PCDATA ) >
+
+<!ELEMENT metadata ( #PCDATA ) >
+<!ATTLIST metadata name ( short-title | title ) #REQUIRED >
+<!ATTLIST metadata xml:lang NMTOKEN #REQUIRED >
+
+<!ELEMENT owner ( #PCDATA ) >
+
+<!ELEMENT permissions ( #PCDATA ) >
+
+<!ELEMENT roles ( #PCDATA ) >
+
+<!ELEMENT security-constraint ( groups | permissions | roles | users )* >
+
+<!ELEMENT security-constraints ( owner | security-constraint |
security-constraints-ref )* >
+
+<!ELEMENT security-constraints-ref ( #PCDATA ) >
+
+<!ELEMENT short-title ( #PCDATA ) >
+
+<!ELEMENT title ( #PCDATA ) >
+
+<!ELEMENT url ( #PCDATA ) >
+
+<!ELEMENT users ( #PCDATA ) >
+</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>
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <!-- top level link element -->
+
+ <xs:element name="link">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="metadata" minOccurs="0"
maxOccurs="unbounded" />
+ <xs:element ref="security-constraints"
minOccurs="0" />
+ <xs:element ref="short-title" minOccurs="0"
/>
+ <xs:element ref="title" minOccurs="0" />
+ <xs:element ref="url" />
+ </xs:choice>
+ <xs:attribute name="version" type="xs:NMTOKEN"
use="optional" />
+ <xs:attribute name="target" type="xs:NMTOKEN"
use="required" />
+ <xs:attribute name="skin" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <!-- link child elements -->
+
+ <xs:element name="groups">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="metadata">
+ <xs:complexType mixed="true">
+ <xs:attribute name="name" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="short-title" />
+ <xs:enumeration value="title" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="owner">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="permissions">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="roles">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="security-constraint">
+ <xs:complexType>
+ <xs:choice maxOccurs="4">
+ <xs:element ref="groups" minOccurs="0" />
+ <xs:element ref="permissions" minOccurs="0"
/>
+ <xs:element ref="roles" minOccurs="0" />
+ <xs:element ref="users" minOccurs="0" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="owner" minOccurs="0" />
+ <xs:element ref="security-constraint"
minOccurs="0" maxOccurs="unbounded" />
+ <xs:element ref="security-constraints-ref"
minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints-ref">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="short-title">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="title">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="url">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="users">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+</xs:schema>
+</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>
+<!-- top level page-security element -->
+
+<!ELEMENT page-security ( global-security-constraints-ref |
security-constraints-def )* >
+<!ATTLIST page-security version NMTOKEN #IMPLIED >
+
+<!-- page-security child elements -->
+
+<!ELEMENT global-security-constraints-ref ( #PCDATA ) >
+
+<!ELEMENT groups ( #PCDATA ) >
+
+<!ELEMENT permissions ( #PCDATA ) >
+
+<!ELEMENT roles ( #PCDATA ) >
+
+<!ELEMENT security-constraint ( groups | permissions | roles | users )* >
+
+<!ELEMENT security-constraints-def ( security-constraint ) >
+<!ATTLIST security-constraints-def name NMTOKEN #REQUIRED >
+
+<!ELEMENT users ( #PCDATA ) >
+</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>
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <!-- top level page-security element -->
+
+ <xs:element name="page-security">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="global-security-constraints-ref"
minOccurs="0" maxOccurs="unbounded" />
+ <xs:element ref="security-constraints-def"
minOccurs="0" maxOccurs="unbounded" />
+ </xs:choice>
+ <xs:attribute name="version" type="xs:NMTOKEN"
use="optional" />
+ </xs:complexType>
+ </xs:element>
+
+ <!-- page-security child elements -->
+
+ <xs:element name="global-security-constraints-ref">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="groups">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="permissions">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="roles">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+ <xs:element name="security-constraint">
+ <xs:complexType>
+ <xs:choice maxOccurs="4">
+ <xs:element ref="groups" minOccurs="0" />
+ <xs:element ref="permissions" minOccurs="0"
/>
+ <xs:element ref="roles" minOccurs="0" />
+ <xs:element ref="users" minOccurs="0" />
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="security-constraints-def">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="security-constraint"
maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NMTOKEN"
use="required" />
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="users">
+ <xs:complexType mixed="true" />
+ </xs:element>
+
+</xs:schema>
+</pre>
+</div>
+</div>
+
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xright">©
+ 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 = *