<?xml version="1.0" encoding="UTF-8" ?>
<!-- url="http://escrire.inrialpes.fr/dtd/qesc.dtd" -->
<!-- $Id: qesc.dtd,v 1.11 2001/04/25 16:03:31 troncy Exp $ -->

<!-- import escrire DTD -->
<!ENTITY % escrireDTD SYSTEM "http://escrire.inrialpes.fr/dtd/escrire.dtd">
%escrireDTD;

<!-- declaration des entites -->
<!ENTITY % esc:expr "esc:not|esc:and|esc:or|esc:exist|esc:all|esc:eq|esc:member|esc:type">

<!ELEMENT esc:query (esc:select, esc:from, esc:where?, esc:orderby?)>
<!ATTLIST esc:query url       CDATA #REQUIRED
	 	    xmlns:esc CDATA #FIXED "http://escrire.inrialpes.fr/">

<!ELEMENT esc:select (esc:path*)>
<!ELEMENT esc:from ((esc:objref|esc:objvar|esc:relvar)+)>
<!ELEMENT esc:where ((%esc:expr;)?)>
<!ELEMENT esc:orderby (esc:path+)>

<!ELEMENT esc:objvar EMPTY>
<!ATTLIST esc:objvar type CDATA #REQUIRED
		       id CDATA #REQUIRED>
<!ELEMENT esc:relvar EMPTY>
<!ATTLIST esc:relvar type CDATA #REQUIRED
		       id CDATA #REQUIRED>

<!ELEMENT esc:var (esc:objref,esc:relvar,esc:var)>
<!ATTLIST esc:var type CDATA #REQUIRED
	            id CDATA #REQUIRED>

<!ELEMENT esc:not    (%esc:expr;)>
<!ELEMENT esc:and    ((%esc:expr;)+)>
<!ELEMENT esc:or     ((%esc:expr;)+)>
<!ELEMENT esc:exist  ((esc:objvar|esc:relvar),(%esc:expr;))>
<!ELEMENT esc:all    ((esc:objvar|esc:relvar),(%esc:expr;))>

<!ELEMENT esc:eq     (esc:path,(esc:value|esc:objref|esc:path))>
<!ELEMENT esc:member ((esc:value|esc:objref|esc:path),esc:path)>
<!ELEMENT esc:type   (esc:path,esc:classref)>

<!ELEMENT esc:path   ((esc:objvarref|esc:relvarref),esc:attribute*)>

<!ELEMENT esc:objvarref EMPTY>
<!ATTLIST esc:objvarref type CDATA #REQUIRED
			id CDATA #REQUIRED>
<!ELEMENT esc:relvarref EMPTY>
<!ATTLIST esc:relvarref type CDATA #REQUIRED
			id CDATA #REQUIRED>
<!ELEMENT esc:varref EMPTY>
<!ATTLIST esc:varref type CDATA #REQUIRED
			id CDATA #REQUIRED>

<!ELEMENT esc:attribute EMPTY>
<!ATTLIST esc:attribute name CDATA #REQUIRED>

<!ELEMENT esc:value ANY>

