The following PSML DTDs and XML Schema are included to further define the XML documents defined in these guides:
The DTDs and XML Schema included here are organized by PSML document:
Page documents, (*.psml), are described by the following DTD:
<!-- 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 ) >
Page documents, (*.psml), are described by the following XML Schema:
<?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>
Folder Metadata documents, (folder.metadata), are described by the following DTD:
<!-- 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 ) >
Folder Metadata documents, (folder.metadata), are described by the following XML Schema:
<?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>
Link documents, (*.link), are described by the following DTD:
<!-- 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 ) >
Link documents, (*.link), are described by the following XML Schema:
<?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>
Page Security documents, (page.security), are described by the following DTD:
<!-- 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 ) >
Page Security documents, (page.security), are described by the following XML Schema:
<?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>