<?xml encoding="US-ASCII"?>

<!ELEMENT POLICY (GROUP)*>

<!ELEMENT GROUP  (RULE)*>
<!ATTLIST GROUP
  NAME			ID #REQUIRED>

<!ELEMENT RULE   ((INCLUSION)*, (FUNCTION)?, (EXCLUSIONGROUP)*)>

<!ELEMENT EXCLUSIONGROUP ((EXCLUSION)*, (FUNCTION)?)>

<!ELEMENT INCLUSION EMPTY>
<!ATTLIST INCLUSION
  ID			ID    #REQUIRED
  TYPE			CDATA #REQUIRED
  FROM			CDATA #REQUIRED
  REPEAT		CDATA #IMPLIED>
  
<!ELEMENT EXCLUSION EMPTY>
<!ATTLIST EXCLUSION
  ID			ID    #REQUIRED
  TYPE			CDATA #REQUIRED
  FROM			CDATA #REQUIRED
  REPEAT		CDATA #IMPLIED>

<!ELEMENT FUNCTION (AND|OR|NOT|GT|GE|LT|LE|EQ|NE|EXTERN)>

<!ELEMENT AND  (AND|OR|NOT|GT|GE|LT|LE|EQ|NE|EXTERN)*>
<!ELEMENT OR   (AND|OR|NOT|GT|GE|LT|LE|EQ|NE|EXTERN)*>
<!ELEMENT NOT  (AND|OR|NOT|GT|GE|LT|LE|EQ|NE|EXTERN)>

<!ELEMENT GT   ((FIELD|CONST),(FIELD|CONST))>
<!ELEMENT GE   ((FIELD|CONST),(FIELD|CONST))>
<!ELEMENT LT   ((FIELD|CONST),(FIELD|CONST))>
<!ELEMENT LE   ((FIELD|CONST),(FIELD|CONST))>
<!ELEMENT EQ   ((FIELD|CONST),(FIELD|CONST))>
<!ELEMENT NE   ((FIELD|CONST),(FIELD|CONST))>

<!ELEMENT EXTERN (PARAM)*>
<!ATTLIST EXTERN
  CLASS			CDATA #REQUIRED>

<!ELEMENT PARAM (FIELD|CONST)>
<!ATTLIST PARAM
  NAME			ID #REQUIRED>

<!ELEMENT FIELD EMPTY>
<!ATTLIST FIELD 
  ID			IDREF #REQUIRED
  NAME			CDATA #REQUIRED>

<!ELEMENT CONST (#PCDATA)>