<!ENTITY % name 'name CDATA #REQUIRED'>
<!ENTITY % undoc 'undoc (true | false) "false"'>
<!ENTITY % access 'access (public | private) "private"'>
<!ENTITY % abstract 'abstract (true | false) "false"'>
<!ENTITY % static 'static (true | false) "false"'>
<!ENTITY % final 'final (true | false) "false"'>
<!ENTITY % type 'type CDATA'>
<!ENTITY % file 'file CDATA'>
<!ENTITY % package 'package CDATA'>
<!ENTITY % group 'group CDATA'>

<!ELEMENT phpdoc (class|module)*>
<!ELEMENT class (file, doc?, function*, variable*, uses*, constant*, inherited*, overriden*, path*, baseclass*, subclasses*)>
<!ATTLIST class
						%name;
						extends CDATA
						%undoc;
						%access;
						%abstract;
						%static;
						%final;
						%package;>

<!ELEMENT module (file, doc?, function*, uses*, constant*)>
<!ATTLIST module
						%name;
						%group;
						%undoc;
						%access;
						%package;>

<!ELEMENT variable (#PCDATA, doc?)>
<!ATTLIST variable 
						%name;
						%access;
						%type;
						%static;
						%final;>

<!ELEMENT path (parent?)>
<!ELEMENT parent (#PCDATA)>

<!ELEMENT subclasses (subclass?)>
<!ELEMENT subclass (#PCDATA)>

<!ELEMENT doc (	link | 
								author |
								see |
								parameter |
								return |
								throws |
								global |
								inherited |
								overriden |
								description |
								shortdescription |
								version |
								since |
								deprecated |
								copyright |
								exclude |
								brother |
								magic 
							)*>


<!ELEMENT function (#PCDATA)>
<!ATTLIST function 
						%name;
						%undoc;
						%access;
						%abstract;
						%static;>

<!ELEMENT constant (#PCDATA)>
<!ATTLIST constant 
						%name;
						%undoc;
						%access;
						case CDATA>
						
<!ELEMENT uses (#PCDATA)>	
<!ATTLIST uses
						%type;
						%file;
						%undoc;>


<!ELEMENT baseclass (#PCDATA)>
							
<!ELEMENT link (#PCDATA)>
<!ATTLIST link
						url CDATA>
						
<!ELEMENT author (PANIK)>
<!ATTLIST author
						email CDATA> 
							
<!ELEMENT see (#PCDATA)>
<!ATTLIST see
						type CDATA #REQUIRED
						group CDATA>
						
<!ELEMENT parameter (#PCDATA?)>
<!ATTLIST parameter
						%name;
						%type;
						value CDATA
						%undoc;>
						
<!ELEMENT return (#PCDATA)>
<!ATTLIST return 
						name CDATA 
						%type; #REQUIRED>
					
<!ELEMENT throws (#PCDATA)>

<!ELEMENT global (#PCDATA)>
<!ATTLIST global
						name CDATA
						%type; #REQUIRED>
					
<!ELEMENT inherited (element)*>
<!ATTLIST inherited 
						type CDATA
						src CDATA>
<!ELEMENT element (#PCDATA)>
						
<!ELEMENT overriden (element)*>
<!ATTLIST overriden
						type CDATA
						src CDATA>

						
<!ELEMENT description (#PCDATA)>
<!ELEMENT shortdescription (#PCDATA)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT since (#PCDATA)>
<!ELEMENT deprecated (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT exclude (#PCDATA)>
<!ELEMENT brother (#PCDATA)>
<!ELEMENT magic (#PCDATA)>


<!ELEMENT file (#PCDATA)>	