Included is an attempt at formalizing the definition of a Domain.xml file - a Domain.xsd file. To use it one has to add the following attribute to your Domain.xml 'slide' element:
xmlns="http://www.apache.org/slide"
as in:
<?xml version="1.0"?>
<slide
xmlns="http://www.apache.org/slide"
logger="org.apache.slide.util.logger.SimpleLogger"
logger-level="6" default="slide">
....
</slide>and then use some xml validating parser (e.g., xerces). One could have added uniqueness contraints, but I will leave that to another day.
please give me any corrections.
RME
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:slide="http://www.apache.org/slide"
targetNamespace="http://www.apache.org/slide"
elementFormDefault="qualified"
>
<xsd:element name="slide" type="slide:SlideType"/>
<xsd:complexType name="SlideType">
<xsd:sequence>
<xsd:element name="namespace" maxOccurs="unbounded"
type="slide:NamespaceType"/>
<xsd:element name="parameter"
minOccurs="0" maxOccurs="unbounded"
type="slide:ParameterType"/>
</xsd:sequence>
<xsd:attribute name="default" type="xsd:string"
use="optional" default="slide"/>
<xsd:attribute name="logger" type="xsd:string"
use="optional"
default="org.apache.slide.util.logger.SimpleLogger"/>
<xsd:attribute name="logger-level" type="slide:LogLevel"
use="optional" default="6"/>
</xsd:complexType>
<xsd:complexType name="NamespaceType" >
<xsd:sequence>
<xsd:element name="definition" type="slide:DefinitionType"/>
<xsd:element name="configuration" type="slide:ConfiguationType"/>
<xsd:element name="data" type="slide:DataType"/>
<xsd:element name="services" type="slide:ServicesType"
minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="logger" type="xsd:string"
use="optional"
default="org.apache.slide.util.logger.SimpleLogger"/>
<xsd:attribute name="logger-level" type="slide:LogLevel"
use="optional" default="6"/>
</xsd:complexType>
<xsd:complexType name="DefinitionType" >
<xsd:sequence>
<xsd:element name="store"
maxOccurs="unbounded"
type="slide:StoreType"/>
<xsd:element name="scope"
maxOccurs="unbounded"
type="slide:ScopeType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StoreType" >
<xsd:choice maxOccurs="unbounded">
<xsd:element name="parameter" minOccurs="0" maxOccurs="unbounded"
type="slide:ParameterType"/>
<!-- child stores -->
<xsd:element name="nodestore" type="slide:NodeStoreType"/>
<xsd:element name="securitystore" type="slide:SecurityStoreType"/>
<xsd:element name="lockstore" type="slide:LockStoreType"/>
<xsd:element name="revisiondescriptorsstore"
type="slide:RevisionDescriptorsStoreType"/>
<xsd:element name="revisiondescriptorstore"
type="slide:RevisionDescriptorStoreType"/>
<xsd:element name="contentstore" type="slide:ContentStoreType"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="classname" type="slide:ClassName" use="optional" />
</xsd:complexType>
<xsd:complexType name="BaseNodeStoreType" >
<!-- either classname attribute and parameters or reference child -->
<xsd:sequence>
<xsd:element name="reference"
minOccurs="0"
type="slide:ReferenceType"/>
<xsd:element name="parameter"
minOccurs="0" maxOccurs="unbounded"
type="slide:ParameterType"/>
</xsd:sequence>
<xsd:attribute name="classname" type="slide:ClassName" use="optional" />
</xsd:complexType>
<xsd:complexType name="NodeStoreType" >
<xsd:complexContent>
<xsd:extension base="slide:BaseNodeStoreType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="SecurityStoreType" >
<xsd:complexContent>
<xsd:extension base="slide:BaseNodeStoreType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="LockStoreType" >
<xsd:complexContent>
<xsd:extension base="slide:BaseNodeStoreType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RevisionDescriptorStoreType" >
<xsd:complexContent>
<xsd:extension base="slide:BaseNodeStoreType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="RevisionDescriptorsStoreType" >
<xsd:complexContent>
<xsd:extension base="slide:BaseNodeStoreType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ContentStoreType" >
<xsd:complexContent>
<xsd:extension base="slide:BaseNodeStoreType"/>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="ReferenceType" >
<xsd:attribute name="store" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="ConfiguationType" >
<xsd:choice maxOccurs="unbounded">
<xsd:element name="default-action" type="slide:DefaultActionType"/>
<xsd:element name="read-object" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="create-object" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="remove-object" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="grant-permission" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="revoke-permission" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="read-permissions" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="lock-object" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="kill-lock" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="read-locks" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="read-revision-metadata" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="create-revision-metadata" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="modify-revision-metadata" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="remove-revision-metadata" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="read-revision-content" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="create-revision-content" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="modify-revision-content" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="remove-revision-content" minOccurs="0"
type="slide:ActionType"/>
<xsd:element name="userspath" minOccurs="0"
type="slide:PathType"/>
<xsd:element name="guestpath" minOccurs="0"
type="slide:PathType"/>
<xsd:element name="filespath" minOccurs="0"
type="slide:PathType"/>
<xsd:element name="parameter" maxOccurs="unbounded"
type="slide:ParameterType"/>
<xsd:element name="role" maxOccurs="unbounded"
type="slide:RoleType"/>
<xsd:element name="auto-create-users" minOccurs="0"
type="slide:BooleanType"/>
<xsd:element name="auto-create-users-role" minOccurs="0"
type="slide:BooleanType"/>
<xsd:element name="default-property" maxOccurs="unbounded"
type="slide:DefaultPropertyType"/>
<xsd:element name="content-interceptor"
minOccurs="0" maxOccurs="unbounded"
type="slide:ContentInterceptorType"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="RoleType" >
<xsd:simpleContent >
<xsd:extension base="xsd:string">
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="DefaultPropertyType" >
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="namespace" type="xsd:string" use="required" />
<xsd:attribute name="role" type="xsd:string" use="required" />
<xsd:attribute name="value" type="xsd:string" use="optional" />
</xsd:complexType>
<xsd:complexType name="DataType" >
<xsd:sequence>
<xsd:element name="objectnode" type="slide:ObjectNodeType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ObjectNodeType" >
<xsd:sequence>
<xsd:element name="permission"
minOccurs="0" maxOccurs="unbounded"
type="slide:PermissionType"/>
<xsd:element name="revision"
minOccurs="0"
type="slide:RevisionType"/>
<xsd:element name="objectnode"
minOccurs="0" maxOccurs="unbounded"
type="slide:ObjectNodeType"/>
</xsd:sequence>
<xsd:attribute name="classname" type="slide:ClassName" use="required" />
<xsd:attribute name="uri" type="xsd:string" use="required" />
<xsd:attribute name="linkedUri" type="xsd:string" use="optional" />
</xsd:complexType>
<xsd:complexType name="PermissionType" >
<xsd:attribute name="subject" type="xsd:string" use="required" />
<xsd:attribute name="action" type="slide:AbsoluteDirectory"
use="required" />
<xsd:attribute name="inheritable" type="xsd:boolean" use="optional" />
<xsd:attribute name="negative" type="xsd:boolean" use="optional" />
</xsd:complexType>
<xsd:complexType name="RevisionType" >
<xsd:sequence>
<xsd:element name="property" maxOccurs="unbounded"
type="slide:PropertyType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PropertyType" >
<xsd:simpleContent >
<xsd:extension base="xsd:string">
<xsd:attribute name="namespace" type="xsd:string"
use="required" />
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="DefaultActionType" >
<xsd:simpleContent >
<xsd:extension base="slide:AbsoluteDirectory"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="ActionType" >
<xsd:simpleContent >
<xsd:extension base="slide:AbsoluteDirectory"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="PathType" >
<xsd:simpleContent >
<xsd:extension base="slide:AbsoluteDirectory"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="BooleanType" >
<xsd:simpleContent >
<xsd:extension base="xsd:boolean">
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="ContentInterceptorType" >
<xsd:sequence>
<xsd:element name="parameter" maxOccurs="unbounded"
type="slide:ParameterType"/>
</xsd:sequence>
<xsd:attribute name="class" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="ScopeType" >
<xsd:attribute name="match" type="xsd:string" use="required" />
<xsd:attribute name="store" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="ServicesType">
<xsd:sequence>
<xsd:element name="parameter" maxOccurs="unbounded"
type="slide:ParameterType"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="classname" type="slide:ClassName" use="required" />
</xsd:complexType>
<xsd:complexType name="ParameterType" >
<xsd:simpleContent >
<xsd:extension base="xsd:string">
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="LogLevel">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="7"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ClassName">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-zA-Z]\w*(\.[a-zA-Z]\w*)*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AbsoluteDirectory">
<xsd:restriction base="xsd:string">
<!-- optional value -->
<xsd:pattern value="(((/)*[ a-zA-Z0-9_\-]+)+(/)*)?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
