You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@portals.apache.org by rw...@apache.org on 2010/04/20 00:26:56 UTC

svn commit: r935760 - in /portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc: guide-psml-dtd.xml guide-psml-xsd.xml guide-psml.xml

Author: rwatler
Date: Mon Apr 19 22:26:55 2010
New Revision: 935760

URL: http://svn.apache.org/viewvc?rev=935760&view=rev
Log:
JS2-1105: First pass on PSML Templating Features docs

Added:
    portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-xsd.xml
      - copied, changed from r935468, portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-dtd.xml
Removed:
    portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-dtd.xml
Modified:
    portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml.xml

Copied: portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-xsd.xml (from r935468, portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-dtd.xml)
URL: http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-xsd.xml?p2=portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-xsd.xml&p1=portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-dtd.xml&r1=935468&r2=935760&rev=935760&view=diff
==============================================================================
--- portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-dtd.xml (original)
+++ portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml-xsd.xml Mon Apr 19 22:26:55 2010
@@ -17,16 +17,16 @@ limitations under the License.
 -->
 <document>
   <properties>
-    <title>Guide to PSML DTDs and XML Schema</title>
-    <subtitle>Guide to PSML DTDs and XML Schema</subtitle>
+    <title>Guide to PSML XML Schema</title>
+    <subtitle>Guide to PSML XML Schema</subtitle>
     <authors>
       <person name="Randy Watler" email="rwatler@apache.org"/>
     </authors>
   </properties>
   <body>
-<section name="PSML DTDs and XML Schema">
+<section name="PSML XML Schema">
 <p>
-The following PSML DTDs and XML Schema are included to further define the XML documents defined in these guides:
+The following PSML XML Schema 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>
@@ -34,882 +34,23 @@ The following PSML DTDs and XML Schema a
 </ul>
 </p>
 <p>
-The DTDs and XML Schema included here are organized by PSML document:
+PSML XML Schema definitions by document type:
 <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>
+    <li><a href="../2.2/schemas/psml.xsd">Page, (*.psml)</a></li>
+    <li><a href="../2.2/schemas/folder-metadata.xsd">Folder Metadata, (folder.metadata)</a></li>
+    <li><a href="../2.2/schemas/link.xsd">Link, (*.link)</a></li>
+    <li><a href="../2.2/schemas/page-security.xsd">Page Security, (page.security)</a></li>
+    <li><a href="../2.2/schemas/dpsml.xsd">Dynamic Page, (*.dpsml)</a></li>
+    <li><a href="../2.2/schemas/tpsml.xsd">Template Page, (*.tpsml)</a></li>
+    <li><a href="../2.2/schemas/fpsml.xsd">Fragment Definition, (*.fpsml)</a></li>
+</ul>
+</p>
+<p>
+Additional PSML XML Schema definitions:
+<ul>
+    <li><a href="../2.2/schemas/psml-core.xsd">Common Core PSML Schema Definitions</a></li>
 </ul>
 </p>
 </section>
-
-<section name='Page'>
-<p><a href="guide-psml.html#Page">Page</a> documents, (*.psml), are described by the following DTD:</p>
-<source><![CDATA[
-<!-- 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 ) >
-]]></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" 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>
-]]></source>
-</section>
-
-<section name='Folder'>
-<p><a href="guide-psml.html#Folder">Folder Metadata</a> documents, (folder.metadata), are described by the following DTD:</p>
-<source><![CDATA[
-<!-- 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 ) >
-]]></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="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>
-]]></source>
-</section>
-
-<section name='Link'>
-<p><a href="guide-psml.html#Link">Link</a> documents, (*.link), are described by the following DTD:</p>
-<source><![CDATA[
-<!-- 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 ) >
-]]></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: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>
-]]></source>
-</section>
-
-<section name='Page Security'>
-<p><a href="guide-psml.html#Global_Page_Security">Page Security</a> documents, (page.security), are described by the following DTD:</p>
-<source><![CDATA[
-<!-- 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 ) >
-]]></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>
-
 </body>
 </document>

Modified: portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml.xml
URL: http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml.xml?rev=935760&r1=935759&r2=935760&view=diff
==============================================================================
--- portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml.xml (original)
+++ portals/site/jetspeed/jetspeed-2.2/jetspeed-guide-dev/src/site/xdoc/guide-psml.xml Mon Apr 19 22:26:55 2010
@@ -27,13 +27,20 @@ limitations under the License.
   <body>
 <section name="PSML">
 <ul>
-    <li><a href="#Page">Page</a></li>          
+    <li><a href="#Page">Page</a></li>
     <ul>
         <li><a href="#Layout_Fragments">Layout Fragments</a></li>    
         <li><a href="#Portlet_Fragments">Portlet Fragments</a></li>    
+        <li><a href="#Fragment_References">Fragment References</a></li>    
         <li><a href="#Fragment_Properties">Fragment Properties</a></li>
         <li><a href="#Preferences">Portlet Preferences</a></li>
     </ul>
+    <li><a href="#Dynamic_Page">Dynamic Page</a></li>
+    <li><a href="#Page_Template">Page Template</a></li>
+    <ul>
+        <li><a href="#Page_Fragment">Page Fragment</a></li>    
+    </ul>
+    <li><a href="#Fragment_Definition">Fragment Definition</a></li>
     <li><a href="#Folder">Folder</a></li>          
     <li><a href="#Link">Link</a></li>          
     <li><a href="#Global_Page_Security">Global Page Security</a></li>          
@@ -41,20 +48,97 @@ limitations under the License.
     <li><a href="#PSML_Defaults">Defaults</a></li>     
     <li><a href="#PSML_Security_Constraints">Security Constraints</a></li>        
     <li><a href="#PSML_Menus">Menus</a></li>        
-    <li><a href="guide-psml-dtd.html#PSML_DTDs">PSML Document DTDs</a></li>        
+    <li><a href="guide-psml-xsd.html">PSML Document XML Schemas</a></li>        
 </ul>
     
 <p>
 PSML is an acronym for Portal Structure Markup Language. It was created to allow content structure and abstraction within Jetspeed.
-PSML defines how portlets are aggregated, layed out, and decorated on a portal page. Note that page layout is not a part of the Java
+PSML defines how portlets are aggregated, laid out, and decorated on a portal page. Note that page layout is not a part of the Java
 Portlet Standard API. Thus PSML is a Jetspeed-specific implementation. Also note that PSML in Jetspeed-2 is different from PSML in 
 Jetspeed-1. This document can be used as a reference guide to the elements of a PSML resource.
 </p>
 <p>
-PSML files also capture other portal site information related to pages, folders, links, and global security constraints.
-Each of these primary PSML elements are captured in separate documents arranged in a hierarchy of directories in the file system.
-Typically, this directory is accessed as a resource at /WEB-INF/pages within the jetspeed web application.
+PSML files capture portal site information related to pages, folders, links, and global security constraints for the portal. PSML
+elements can be defined in separate documents arranged in a hierarchy of directories in the file system. The folder structure of the
+PSML documents mirrors the portal URL space. Typically, the PSML root directory is accessed as a resource at /WEB-INF/pages within
+the jetspeed web application. It is also possible to store PSML definitions in the database; the folder and document arrangement
+of the PSML hierarchy is maintained there as well.
+</p>
+<p>
+The following PSML documents/elements are defined below:
 </p>
+<table>
+    <tr>
+    <th>PSML Element</th>
+    <th>Document</th>
+    <th>Description</th>
+    </tr>
+    <tr>
+    <td><a href="#Page">Page</a></td>
+    <td>*.psml</td>
+    <td>
+      Defines a single portal page within the portal at a specific portal URL. Page definitions
+      will be augmented by a page template, if found, in current or parent folders. Pages are
+      primarily composed of fragments which are mapped to individual portlets. Pages can also
+      include fragment references to separately defined fragment references.
+    </td>
+    </tr>
+    <tr>
+    <td><a href="#Dynamic_Page">Dynamic Page</a></td>
+    <td>*.dpsml</td>
+    <td>
+      Defines a reusable portal page used with matching content URLs within the portal. Like page
+      definitions, dynamic pages will be augmented by page templates and are made up of fragments
+      and fragment references. Dynamic pages are matched to portal content page requests by URL
+      and content type mappings: matching pages are selected from current or parent folders. Only
+      one dynamic page per content type should be defined per folder.
+    </td>
+    </tr>
+    <tr>
+    <td><a href="#Page_Template">Page Template</a></td>
+    <td>*.tpsml</td>
+    <td>
+      Defines fragment and fragment references that are to be included in all concrete and dynamic
+      pages. An individual page template is selected from within the current page or parent
+      folders. A special page fragment is used to define where in the page template current page
+      fragments are inserted. Only one page template can be defined per folder.
+    </td>
+    </tr>
+    <tr>
+    <td><a href="#Fragment_Definition">Fragment Definition</a></td>
+    <td>*.fpsml</td>
+    <td>
+    </td>
+      Externally defines fragments to be referenced from multiple pages or page templates.
+      Fragment references are used to refer to fragment definitions. Fragment definitions cannot
+      contain references to other fragment definitions. Only one fragment definition per fragment
+      id can be defined per folder.
+    </tr>
+    <tr>
+    <td><a href="#Folder">Folder</a></td>
+    <td>folder.metadata</td>
+    <td>
+      Defines metadata associated with the file system folder or URL path. As one would expect,
+      only one set of metadata information can be associated with a folder. With the exception of
+      content URLs, the hierarchical structure defined by folders and pages defines the portal
+      URL space.
+    </td>
+    </tr>
+    <tr>
+    <td><a href="#Link">Link</a></td>
+    <td>*.link</td>
+    <td>
+      Defines URL links to external or local resources used in portal menus.
+    </td>
+    </tr>
+    <tr>
+    <td><a href="#Global_Page_Security">Global Page Security</a></td>
+    <td>page.security</td>
+    <td>
+      Defines global securuty constraint definitions and defaults for all portal pages and folders.
+    </td>
+    </tr>
+</table>
 <p>
 Here is an example PSML file for a portal site <a href="#Page">page</a>, (*.psml):
 </p>
@@ -73,18 +157,18 @@ Here is an example PSML file for a porta
   <!-- page fragments -->
   <fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn">
     <fragment id="100939" type="portlet" name="j2-admin::LocaleSelector">
-      <property layout="OneColumn" name="row" value="0"/>
+      <property name="row" value="0"/>
     </fragment>                                
     <fragment id="100345" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
-      <property layout="OneColumn" name="row" value="1"/>
-      <property layout="TwoColumns" name="sizes" value="33%,66%"/>
+      <property name="row" value="1"/>
+      <property name="sizes" value="33%,66%"/>
       <fragment id="100121" type="portlet" name="j2-admin::LoginPortlet">
-        <property layout="TwoColumns" name="row" value="0"/>
-        <property layout="TwoColumns" name="column" value="0"/>
+        <property name="row" value="0"/>
+        <property name="column" value="0"/>
       </fragment>                                
       <fragment id="100171" type="portlet" name="demo::UserInfoTest">
-        <property layout="TwoColumns" name="row" value="0"/>
-        <property layout="TwoColumns" name="column" value="1"/>
+        <property name="row" value="0"/>
+        <property name="column" value="1"/>
       </fragment>    
     </fragment>
   </fragment>
@@ -96,6 +180,62 @@ Here is an example PSML file for a porta
 </page>
 ]]></source>
 <p>
+Here is an example PSML file for portal site <a href="#Dynamic_Page">dynamic page</a>, (*.dpsml):
+</p>
+<source><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+<dynamic-page content-type="*" inheritable="true">
+  <title>Jetspeed 2 Portals Content</title>
+  <fragment id="default-content-layout" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
+    <property name="sizes" value="80%,20%" />
+    <fragment id="default-content-dynamic-content" type="portlet" name="j2-admin::DynamicWebContentPortlet" decorator="gray-gradient-noborder">
+      <property name="row" value="0" />
+      <property name="column" value="0" />
+      <preference name="SRC">
+        <value>http://portals.apache.org/</value>
+      </preference>
+      <preference name="PORTALPATH">
+        <value>/content/</value>
+      </preference>
+    </fragment>
+    <fragment-reference id="default-content-wp-reference" refid="wp-definition">
+        <property name="row" value="0"/>
+        <property name="column" value="1"/>
+    </fragment-reference>
+  </fragment>
+</dynamic-page>
+]]></source>
+<p>
+Here is an example PSML file for portal site <a href="#Page_Template">page template</a>, (*.tpsml):
+</p>
+<source><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+<page-template>
+  <title>Portal Template</title>
+  <fragment id="template-top" type="layout" name="jetspeed-layouts::VelocityOneColumn">
+    <page-fragment id="template-top-page-template">
+      <property name="row" value="0"/>
+    </page-fragment>
+    <fragment id="template-top-login" type="portlet" name="j2-admin::LoginPortlet">
+      <property name="row" value="1"/>
+    </fragment>                                
+    <fragment-reference id="template-top-wp-reference" refid="wp-definition">
+      <property name="row" value="2"/>
+    </fragment-reference>
+  </fragment>
+</page-template>
+]]></source>
+<p>
+Here is an example PSML file for portal site <a href="#Fragment_Definition">fragment definition</a>, (*.fpsml):
+</p>
+<source><![CDATA[
+<?xml version="1.0" encoding="UTF-8"?>
+<fragment-definition>
+  <title>Current Weather</title>
+  <fragment id="wp-definition" type="portlet" name="demo::WeatherPortlet"/>
+</fragment-definition>
+]]></source>
+<p>
 Here is an example PSML file that defines portal site <a href="#Folder">folder</a>, (folder.metadata):
 </p>
 <source><![CDATA[
@@ -184,6 +324,7 @@ Here is an example PSML file for the por
 </page-security>
 ]]></source>
 </section>
+
 <section name='Page'>
 <p>
 The &lt;page&gt; element is a simple container to hold other PSML elements associated with a portal site page.
@@ -313,18 +454,18 @@ The layout &lt;fragment&gt; element cont
   ...
   <fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn">
     <fragment id="100939" type="portlet" name="j2-admin::LocaleSelector">
-      <property layout="OneColumn" name="row" value="0"/>
+      <property name="row" value="0"/>
     </fragment>                                
     <fragment id="100345" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
-      <property layout="OneColumn" name="row" value="1"/>
-      <property layout="TwoColumns" name="sizes" value="33%,66%"/>
+      <property name="row" value="1"/>
+      <property name="sizes" value="33%,66%"/>
       <fragment id="100121" type="portlet" name="j2-admin::LoginPortlet">
-        <property layout="TwoColumns" name="row" value="0"/>
-        <property layout="TwoColumns" name="column" value="0"/>
+        <property name="row" value="0"/>
+        <property name="column" value="0"/>
       </fragment>                                
       <fragment id="100171" type="portlet" name="demo::UserInfoTest">
-        <property layout="TwoColumns" name="row" value="0"/>
-        <property layout="TwoColumns" name="column" value="1"/>
+        <property name="row" value="0"/>
+        <property name="column" value="1"/>
       </fragment>    
     </fragment>
   </fragment>
@@ -398,13 +539,36 @@ The portlet &lt;fragment&gt; element con
 <fragment id="100393" type="layout" name="jetspeed-layouts::VelocityOneColumn">
   ...
   <fragment id="100939" type="portlet" name="j2-admin::LocaleSelector">
-    <property layout="OneColumn" name="row" value="0"/>
+    <property name="row" value="0"/>
   </fragment>                                
   ...
 </fragment>
 ]]></source>
 </section>
-
+<section name='Fragment References'>
+<p>
+The &lt;fragment-reference&gt; element is used to insert an external <a href="#Fragment_Definition">fragment definition</a> fragment hierarchy into the containing <a href="#Page">page</a>, <a href="#Dynamic_Page">dynamic page</a> or <a href="#Page_Template">page template</a>. Fragment references cannot appear in <a href="#Fragment_Definition">fragment definitions</a>. The referenced fragment may be either a <a href="#Layout_Fragments">layout fragment</a> or <a href="#Portlet_Fragments">portlet fragment</a>. Attributes and child elements of the fragment reference element override the settings in the referenced fragment. The fragment reference element supports one additional attribute not supported by <a href="#Layout_Fragments">layout fragments</a> or <a href="#Portlet_Fragments">portlet fragments</a>:
+</p>
+<table>
+    <tr>
+    <th>Attribute</th>
+    <th>Description</th>
+    </tr>
+    <tr>
+    <td>refid</td>
+    <td>Unique identifier of the root fragment in the <a href="#Fragment_Definition">fragment definition</a> to insert.</td>
+    </tr>
+</table>
+<p>
+The following <a href="#Layout_Fragments">layout fragment</a> and <a href="#Portlet_Fragments">portlet fragment</a> attributes and child elements are not supported by the fragment reference element: name, type, fragment, fragment-reference, and page-fragment.
+</p>
+<p>Example:</p>
+<source><![CDATA[
+<fragment-reference id="template-top-wp-reference" refid="wp-definition">
+  <property name="row" value="2"/>
+</fragment-reference>
+]]></source>
+</section>
 <section name='Fragment Properties'>
 <p>
 The <a href="#Portlet_Fragments">fragment</a> &lt;property&gt; element is use to specify named properties for fragments. These properties are used commonly to specify layout portlet parameters and portlet positional location within the page. The property element has 3 supported attributes:
@@ -431,20 +595,19 @@ The <a href="#Portlet_Fragments">fragmen
 <source><![CDATA[
 <fragment id="100876" type="portlet" name="j2-admin::LoginPortlet">
   ...
-  <property layout="TwoColumns" name="row" value="2"/>
-  <property layout="TwoColumns" name="column" value="1"/>
+  <property name="row" value="2"/>
+  <property name="column" value="1"/>
   ...
 </fragment>
 ]]></source>
 <source><![CDATA[
 <fragment id="103456" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
   ...
-  <property layout="TwoColumns" name="sizes" value="33%,66%"/>
+  <property name="sizes" value="33%,66%"/>
   ...
 </fragment>
 ]]></source>
 </section>
-
 <section name='Preferences'>
 <p>
 The <a href="#Portlet_Fragments">portlet fragment</a> &lt;preference&gt; elements allow for the defining of default
@@ -493,7 +656,85 @@ Preference precedence: User Defined > Fr
 </fragment>
 ]]></source>
 </section>
-
+<section name='Dynamic Page'>
+<p>
+The &lt;dynamic-page&gt; element defines a reusable page that is used to display any matching portal content request URLs in the portal site. Individual dynamic pages are selected by the portal site mappings of the portal URL paths and content type. Apart from this matching process, content pages are identical to concrete <a href="#Page">page</a> definitions. There are two attributes supported by the dynamic page element in addition to the page element attributes and child elements:
+</p>
+<table>
+    <tr>
+    <th>Attribute</th>
+    <th>Description</th>
+    </tr>
+    <tr>
+    <td>content-type</td>
+    <td>The content type string that identifies the content this reusable page is to be used to display. The wildcard type, '*', can be used to identify a dynamic page that should be used by all content types or as a fallback for unmatched content request URLs.</td>
+    </tr>
+    <tr>
+    <td>inheritable</td>
+    <td>Boolean indicating whether or not other more specific portal content URLs can utilize this page definition.</td>
+    </tr>
+</table>
+<p>Example:</p>  
+<source><![CDATA[
+<dynamic-page content-type="doc" inheritable="false">
+  ...
+  <fragment id="default-content-layout" type="layout" name="jetspeed-layouts::VelocityTwoColumns">
+    ...
+  </fragment>
+  ...
+</dynamic-page>
+]]></source>
+</section>
+<section name='Page Template'>
+<p>
+The &lt;page-template&gt; element specifies a template page that defines top level fragment and fragment references to be included in all <a href="#Page">concrete pages</a> and <a href="#Dynamic_Page">dynamic pages</a> in the portal site. A required single <a href="#Page_Fragment">page fragment</a> must be part of the page template fragment hierarchy. When pages are merged into the template, this fragment is replaced with the root fragment of the displayed <a href="#Page">concrete page</a> and <a href="#Dynamic_Page">dynamic page</a>. With the exception of the <a href="#Page_Fragment">page fragment</a>, the page template element supports all <a href="#Page">page</a> attributes and child elements identically.
+</p>
+<p>Example:</p>
+<source><![CDATA[
+<page-template>
+  ...
+  <fragment id="template-top" type="layout" name="jetspeed-layouts::VelocityOneColumn">
+    ...
+    <page-fragment id="template-top-page-template">
+      <property name="row" value="1"/>
+    </page-fragment>
+    ...
+  </fragment>
+  ...
+</page-template>
+]]></source>
+</section>
+<section name='Page Fragment'>
+<p>
+The &lt;page-fragment&gt; element appears exactly once in each <a href="#Page_Template">page template</a> definition. When the page template is merged with the displayed <a href="#Page">concrete page</a> or <a href="#Dynamic_Page">dynamic page</a>, all attributes and child elements override the same settings in the root fragment of the referenced page. No additional <a href="#Layout_Fragments">layout fragment</a> attributes are supported by the page fragment element. The following <a href="#Layout_Fragments">layout fragment</a> attributes and child elements are not supported by the page fragment element: name, type, fragment, fragment-reference, and page-fragment.
+</p>
+<p>Example:</p>
+<source><![CDATA[
+<page-template>
+  ...
+  <fragment id="template-top" type="layout" name="jetspeed-layouts::VelocityOneColumn">
+    ...
+    <page-fragment id="template-top-page-template">
+      <property name="row" value="1"/>
+    </page-fragment>
+    ...
+  </fragment>
+  ...
+</page-template>
+]]></source>
+</section>
+<section name='Fragment Definition'>
+<p>
+The &lt;fragment-definition&gt; element defines a hierarchy of fragments that can be referenced from and merged into in multiple <a href="#Page">pages</a>, <a href="#Dynamic_Page">dynamic pages</a>, or <a href="#Page_Template">page templates</a>. The fragment definition is referenced by the id of the contained root fragment and the fragment hierarchy is merged into the displayed page where referenced. All attributes and child elements of the fragment definition, (with the exception of the root fragment), are not used within the displayed pages. Consequently, only <a href="#Page">page</a> elements and attributes used to identify, describe, or secure the fragment definition itself are supported: id, security-constraints, version, title, short-title and metadata. Only <a href="#Layout_Fragments">layout fragments</a> and <a href="#Layout_Fragments">portlet fragments</a> can appear in the fragment hierarchy, but unlike pages, the root fragment need not be a layout.
+</p>
+<p>Example:</p>
+<source><![CDATA[
+<fragment-definition>
+  <title>Current Weather</title>
+  <fragment id="wp-definition" type="portlet" name="demo::WeatherPortlet"/>
+</fragment-definition>
+]]></source>
+</section>
 <section name='Folder'>
 <p>
 The &lt;folder&gt; element is a simple container to hold other PSML elements associated with a portal site folder.