You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2005/12/16 09:34:01 UTC

svn commit: r357144 - /portals/jetspeed-2/trunk/xdocs/guides/guide-psml-dtd.xml

Author: rwatler
Date: Fri Dec 16 00:33:58 2005
New Revision: 357144

URL: http://svn.apache.org/viewcvs?rev=357144&view=rev
Log:
add XML Schema versions of DTDs

Modified:
    portals/jetspeed-2/trunk/xdocs/guides/guide-psml-dtd.xml

Modified: portals/jetspeed-2/trunk/xdocs/guides/guide-psml-dtd.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/xdocs/guides/guide-psml-dtd.xml?rev=357144&r1=357143&r2=357144&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/xdocs/guides/guide-psml-dtd.xml (original)
+++ portals/jetspeed-2/trunk/xdocs/guides/guide-psml-dtd.xml Fri Dec 16 00:33:58 2005
@@ -16,16 +16,16 @@
 -->
 <document>
   <properties>
-    <title>Guide to PSML DTDs</title>
-    <subtitle>Guide to PSML DTDs</subtitle>
+    <title>Guide to PSML DTDs and XML Schema</title>
+    <subtitle>Guide to PSML DTDs and XML Schema</subtitle>
     <authors>
       <person name="Randy Watler" email="rwatler@apache.org"/>
     </authors>
   </properties>
   <body>
-<section name="PSML DTDs">
+<section name="PSML DTDs and XML Schema">
 <p>
-The following PSML DTDs are included to further define the XML documents defined in these guides:
+The following PSML DTDs and XML Schema are included to further define the XML documents defined in these guides:
 <ul>
     <li><a href="guide-psml.html">Guide to PSML</a></li>
     <li><a href="guide-security-declarative-psml.html">Guide to declarative security through PSML</a></li>
@@ -33,7 +33,7 @@
 </ul>
 </p>
 <p>
-The DTDs included here are organized by PSML document:
+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>
@@ -49,7 +49,7 @@
 <!-- top level page element -->
 
 <!ELEMENT page ( defaults | fragment | menu | metadata | security-constraints | short-title | title )* >
-<!ATTLIST page hidden NMTOKEN #REQUIRED >
+<!ATTLIST page hidden ( false | true ) #IMPLIED >
 <!ATTLIST page version NMTOKEN #IMPLIED >
 
 <!-- page child elements -->
@@ -72,16 +72,16 @@
 <!ELEMENT groups ( #PCDATA ) >
 
 <!ELEMENT include ( #PCDATA ) >
-<!ATTLIST include nest ( true | false ) #IMPLIED >
+<!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 ( true | false ) #IMPLIED >
+<!ATTLIST menu paths ( false | true ) #IMPLIED >
 <!ATTLIST menu profile NMTOKEN #IMPLIED >
-<!ATTLIST menu regexp ( true | false ) #IMPLIED >
+<!ATTLIST menu regexp ( false | true ) #IMPLIED >
 <!ATTLIST menu skin NMTOKEN #IMPLIED >
 
 <!ELEMENT metadata ( #PCDATA ) >
@@ -91,9 +91,9 @@
 <!ELEMENT options ( #PCDATA ) >
 <!ATTLIST options depth NMTOKEN #IMPLIED >
 <!ATTLIST options order CDATA #IMPLIED >
-<!ATTLIST options paths ( true | false ) #IMPLIED >
-<!ATTLIST options profile CDATA #IMPLIED >
-<!ATTLIST options regexp ( true | false ) #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 ) >
@@ -102,12 +102,12 @@
 
 <!ELEMENT preference ( value+ ) >
 <!ATTLIST preference name NMTOKEN #REQUIRED >
-<!ATTLIST preference readOnly ( true | false ) #IMPLIED >
+<!ATTLIST preference readOnly ( false | true ) #IMPLIED >
 
 <!ELEMENT property EMPTY >
 <!ATTLIST property layout NMTOKEN #IMPLIED >
 <!ATTLIST property name ( column | row | sizes ) #REQUIRED >
-<!ATTLIST property value #REQUIRED >
+<!ATTLIST property value CDATA #REQUIRED >
 
 <!ELEMENT roles ( #PCDATA ) >
 
@@ -130,6 +130,271 @@
 
 <!ELEMENT value ( #PCDATA ) >
 ]]></source>
+<p><a href="guide-psml.html#Page">Page</a> documents, (*.psml), are described by the following XML Schema:</p>
+<source><![CDATA[
+<?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" />
+        <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="required" />
+    </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>
+]]></source>
 </section>
 
 <section name='Folder'>
@@ -138,7 +403,7 @@
 <!-- top level folder element -->
 
 <!ELEMENT folder ( default-page | document-order | menu | metadata | security-constraints | short-title | title )* >
-<!ATTLIST folder hidden NMTOKEN #REQUIRED >
+<!ATTLIST folder hidden ( false | true ) #IMPLIED >
 <!ATTLIST folder version NMTOKEN #IMPLIED >
 
 <!-- folder child elements -->
@@ -152,16 +417,16 @@
 <!ELEMENT groups ( #PCDATA ) >
 
 <!ELEMENT include ( #PCDATA ) >
-<!ATTLIST include nest ( true | false ) #IMPLIED >
+<!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 ( true | false ) #IMPLIED >
+<!ATTLIST menu paths ( false | true ) #IMPLIED >
 <!ATTLIST menu profile NMTOKEN #IMPLIED >
-<!ATTLIST menu regexp ( true | false ) #IMPLIED >
+<!ATTLIST menu regexp ( false | true ) #IMPLIED >
 <!ATTLIST menu skin NMTOKEN #IMPLIED >
 
 <!ELEMENT metadata ( #PCDATA ) >
@@ -171,9 +436,9 @@
 <!ELEMENT options ( #PCDATA ) >
 <!ATTLIST options depth NMTOKEN #IMPLIED >
 <!ATTLIST options order CDATA #IMPLIED >
-<!ATTLIST options paths ( true | false ) #IMPLIED >
-<!ATTLIST options profile CDATA #IMPLIED >
-<!ATTLIST options regexp ( true | false ) #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 ) >
@@ -199,6 +464,210 @@
 
 <!ELEMENT users ( #PCDATA ) >
 ]]></source>
+<p><a href="guide-psml.html#Folder">Folder Metadata</a> documents, (folder.metadata), are described by the following XML Schema:</p>
+<source><![CDATA[
+<?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="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="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>
+]]></source>
 </section>
 
 <section name='Link'>
@@ -238,6 +707,102 @@
 
 <!ELEMENT users ( #PCDATA ) >
 ]]></source>
+<p><a href="guide-psml.html#Link">Link</a> documents, (*.link), are described by the following XML Schema:</p>
+<source><![CDATA[
+<?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: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>
+]]></source>
 </section>
 
 <section name='Page Security'>
@@ -264,6 +829,68 @@
 <!ATTLIST security-constraints-def name NMTOKEN #REQUIRED >
 
 <!ELEMENT users ( #PCDATA ) >
+]]></source>
+<p><a href="guide-psml.html#Global_Page_Security">Page Security</a> documents, (page.security), are described by the following XML Schema:</p>
+<source><![CDATA[
+<?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>
 ]]></source>
 </section>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org