Source

psilib / doc / psi.dtd

<?xml version="1.0" encoding="UTF-8"?>

<!--
Portable Structured Information
Version: 0.41
Created: 8.10.1999
Updated: 7.15.2002
 
Copyright (c) 1999 by L.C. Rees. 
 
Permission to use, copy, modify, and distribute this DTD for 
any purpose  with or without fee is hereby granted, provided 
that the  above  copyright notice and this permission notice 
appear in all copies. 
 
THIS DTD IS PROVIDED  "AS IS"  AND  L.C. REES  DISCLAIMS ALL
WARRANTIES  WITH  REGARD  TO  THIS DTD INCLUDING ALL IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL 
L.C. REES BE LIABLE  FOR ANY SPECIAL,  DIRECT,  INDIRECT, OR 
CONSEQUENTIAL  DAMAGES  OR  ANY DAMAGES WHATSOEVER RESULTING 
FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN  ACTION OF
CONTRACT,  NEGLIGENCE OR OTHER TORTIOUS ACTION,  ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS DTD.
-->

<!-- Internal Entities for Elements -->

<!ENTITY % f.l.i.r "field|link|include|resource">

<!ENTITY % t.a.s.a.v "time?,access*,sort*,action*,version*">

<!ENTITY % m.f "metadata?,filter*">

<!ENTITY % f.l.i.t "field|link|include|text">

<!ENTITY % p.r.e "param*,result?,exception*">

<!-- Elements  -->

<!ELEMENT psi (collection*)>

<!ELEMENT collection (%m.f;, collection*, (%f.l.i.r;)*)>

<!ELEMENT metadata (log*)>

<!ELEMENT log #PCDATA>

<!ELEMENT filter (%t.a.s.a.v;)>

<!ELEMENT access (right+)>

<!ELEMENT right EMPTY>

<!ELEMENT sort (if*)>

<!ELEMENT if EMPTY>

<!ELEMENT action (if*, time*)>

<!ELEMENT time EMPTY>

<!ELEMENT version (change*)>

<!ELEMENT change EMPTY>

<!ELEMENT field EMPTY>

<!ELEMENT link ANY>

<!ELEMENT include EMPTY>

<!ELEMENT resource (%m.f;, (%f.l.i.t;|fragment)*, %p.r.e;)>

<!ELEMENT text ANY>

<!ELEMENT fragment (%m.f;, (%f.l.i.t;)*>

<!ELEMENT parameter (%m.f; (%f.l.i.t;)>

<!ELEMENT result (%m.f; (%f.l.i.t;)>

<!ELEMENT exception (%m.f; (%f.l.i.t;)>

<!-- Internal Entities for Attributes -->

<!ENTITY % n "name ID #IMPLIED">

<!ENTITY % c "class CDATA #IMPLIED">

<!ENTITY % r "ref IDREF #IMPLIED">

<!ENTITY % ncr "%n; %c; %r;">
    
<!ENTITY % s.e "
    start CDATA #IMPLIED
    end CDATA #IMPLIED">

<!ENTITY % s "state (planned|readlock|writelock|nolock) #IMPLIED" %r;>

<!ENTITY % a.t "type (all|read|write|create|delete|control) #REQUIRED">

<!ENTITY % m "match CDATA #REQUIRED">

<!-- Attributes -->

<!ATTLIST psi
    xmlns CDATA #FIXED "urn:psilib:PSI:0:4:core">
	
<!ATTLIST collection %ncr;>
	
<!ATTLIST metadata %s;>
	
<!ATTLIST log %a.c; %s; %s.e; %r;>

<!ATTLIST filter %ncr;>

<!ATTLIST access
    type (grant|deny) #REQUIRED %c; %r;>

<!ATTLIST right %a.t;>

<!ATTLIST sort
    type (root|seq|choice|par) #REQUIRED %r;>

<!ATTLIST if
    value CDATA #IMPLIED %m;>

<!ATTLIST action
    type (read|write|create|delete|go|pass|pause|stop) #REQUIRED %c; %r;>

<!ATTLIST time
    type (month|week|day|hour|min|sec|mil) #REQUIRED
    length CDATA #IMPLIED %s.e;
    loop CDATA #IMPLIED>

<!ATTLIST version
    type (replace|fork|archive|stop) #REQUIRED
    mark (seq|start|end) #IMPLIED>

<!ATTLIST change
    type (name|class|ref|state|action|start|end) #REQUIRED %m;>

<!ATTLIST link %r;>

<!ATTLIST field %n;>

<!ATTLIST include %c;>

<!ATTLIST resource %ncr;>

<!ATTLIST fragment %ncr;>

<!ATTLIST text %ncr;
    xml:space (default|preserve) #IMPLIED>

<!ATTLIST parameter %ncr;
    required (true|false|optional) #REQUIRED>
	
<!ATTLIST result %ncr;>

<!ATTLIST exception %ncr;>