<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	E-LAYER_DEFINITIONS
Modifications:
20070807 Version 1-02
1. Element: IPCDefinitionClass
   Classes (e.g. A01) may have definition, optional IPC-DEFINITION element added 
2. Element: IPC-DEFINITION
   There are definitions (e.g. A61B0018020000) that do not contain title; therefore, DEFINITION-TITLE was made optional
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->

<!-- HIERARCHY -->

<!-- IPCDefinitionsSet: embeds a list of IPCDefinitions -->
<!ELEMENT IPCDefinitionsSet (IPCDefinitions*)>


<!-- IPCDefinitions: contains definitions in one language, for a certain edition
Structure:
	list of IPCDefinitionsSection
Attributes:
	edition	edition of IPC to which these definitions beling
	lang	language
-->

<!ELEMENT IPCDefinitions (IPCDefinitionsSection+|IPC-DEFINITION)*>
<!ATTLIST IPCDefinitions
	edition CDATA	#REQUIRED
	lang	CDATA	#REQUIRED
>
<!-- IPCDefinitionsSection, IPCDefinitionsClass: hiearchic elements for storing definitions
Structure:
	IPCDefinitionsSection: list of IPCDefinitionClasses
	IPCDefinitionsClass: list of IPCDefinitionSubclasses
Attributes:
	symbol	IPC symbol of the class or section
-->
<!ELEMENT IPCDefinitionsSection (IPCDefinitionsClass+)>
<!ATTLIST IPCDefinitionsSection symbol CDATA	#REQUIRED>

<!-- 20070807 Classes may have definition, optional IPC-DEFINITION element added -->
<!ELEMENT IPCDefinitionsClass (IPC-DEFINITION?,IPCDefinitionsSubclass*)>
<!ATTLIST IPCDefinitionsClass symbol CDATA	#REQUIRED>


<!-- IPCDefinitionsSubclass: definition of the subclass and definition of its maingroups
Structure:
	optional: definition of the subclass as IPC-DEFINITION
	(maybe, empty) list of IPCDefinitionsMaingroups, that contain definitions of deeper hierarchic levels
Attributes:
	symbol	IPC symbol of the subclass
-->
<!ELEMENT IPCDefinitionsSubclass (IPC-DEFINITION?,IPCDefinitionsMaingroup*)>
<!ATTLIST IPCDefinitionsSubclass symbol CDATA	#REQUIRED>


<!-- IPCDefinitionsMaingroup: definition of the maingroup and definition of its groups
Structure:
	optional: definition of the maingroup as IPC-DEFINITION
	(maybe, empty) list of IPCDefinitionsGroups, that contain definitions of deeper hierarchic levels
	definition groups will not contain embedded groups!
Attributes:
	symbol	IPC symbol of the maingroup, A99AZZMMGGZZZZ format
-->
<!ELEMENT IPCDefinitionsMaingroup (IPC-DEFINITION?,IPCDefinitionsGroup*)>
<!ATTLIST IPCDefinitionsMaingroup symbol CDATA	#REQUIRED>


<!-- IPCDefinitionsGroup: definition of the group
Structure:
	optional: definition of the maingroup as IPC-DEFINITION
	(maybe, empty) list of IPCDefinitionsGroups, that contain definitions of deeper hierarchic levels
	definition groups will not contain embedded groups!
Attributes:
	symbol	IPC symbol of the maingroup, A99AZZMMGGZZZZ format
-->
<!ELEMENT IPCDefinitionsGroup (IPC-DEFINITION?)>
<!ATTLIST IPCDefinitionsGroup symbol CDATA	#REQUIRED>




<!-- A SINGLE DEFINITION -->
<!ENTITY % TEXT "(#PCDATA|BR|SUP|SUB|U|UND|B|IMG|A|SREF|MREF|LREF|GREF|TAB|MDASH|GE|LE|LH3BOND|LH2BOND|RH3BOND|RH2BOND|DBOND)*" >
<!--  TEXT MACRO
Structure:
	PCDATA	any text
	SUP	superscript
	SUB	subscript
	U       underline
	B	bold
	IMG	image
	SREF	single reference to IPC
	MREF	multiple reference to IPC
	LREF	local reference to a defined IPC
	GREF	glossary reference
	others	special characters
-->
<!-- 20070807 there are definitions that do not contain title; therefore, DEFINITION-TITLE was made optional -->
<!ELEMENT IPC-DEFINITION (DEFINITION-TITLE?,
			  DEFINITION-STATEMENT?,
 			  LARGESUBJECTS?,
			  LIMITINGREFERENCES?,
			  INFORMATIVEREFERENCES?,
			  SPECIALRULES?,
			  GLOSSARYOFTERMS?,
			  SYNONYMSANDKEYWORDS?) >
<!ATTLIST IPC-DEFINITION
	IPC	CDATA	#REQUIRED
>
<!--  IPC-DEFINITION	definition of a single subclass, maingroup or group
Structure:
	DEFINITION-TITLE	the title
	DEFINITION-STATEMENT?	main text of the definition
	LARGESUBJECT?		Relationship between large subject matter areas
	LIMITINGREFERENCES?	Limiting references
	INFORMATIVEREFERENCES?	Informative references
	REFERENCES?		references in generated definitions
	GENERALREFERENCES?	in general references in generated definitions
	SPECIALRULES?		Special rules of classification
	GLOSSARYOFTERMS?	Glossary
 	SYNONYMSANDKEYWORDS?	Synonyms and Keywords
Attributes:
	IPC			the IPC symbol of the entry that is to be defined
-->
<!ELEMENT DEFINITION-TITLE %TEXT;>
<!--  DEFINITION-TITLE	title of the definition
Structure:
	%TEXT;	simple text
-->
<!ELEMENT DEFINITION-STATEMENT ((DEFINITION-CASE+,MAIN-PARAGRAPH*,INDEXOFGROUPS*)|(MAIN-PARAGRAPH+,INDEXOFGROUPS*))>
<!--  DEFINITION-STATEMET	definition statement paragraphs
Structure:
	DEFINITION-CASE		the definition cases, optional
	MAIN-PARAGRAPH		explanations, optional but at least one case or main paragraph must exist
	INDEXOFGROUPS*		optional table(s) of local references in complex subclasses
-->
<!ELEMENT LARGESUBJECTS ((SUBHEADING|MAIN-PARAGRAPH)+)>
<!--  LARGESUBJECTS		Relationship between large subject matter areas
	(SUBHEADING		heading 3 is allowed
	MAIN-PARAGRAPH		once large subject matters are defined, it must contain
                                at least one main paragraph
	)+
-->

<!ELEMENT LIMITINGREFERENCES    ((REFERENCETABLE?,(SUBHEADING,REFERENCETABLE?)*))>
<!--  LIMITINGREFERENCES
	REFERENCETABLE		limiting references is a simple reference table
-->
<!ELEMENT INFORMATIVEREFERENCES ((REFERENCETABLE?,(SUBHEADING,REFERENCETABLE?)*))>
<!--  INFORMATIVEREFERENCES
	REFERENCETABLE?		standard limiting references
				optional sequence of:
	SUBHEADING	mandatory heading (maybe, standard!) of the tables
	REFERENCETABLE		table of references
-->
<!ELEMENT SPECIALRULES (MAIN-PARAGRAPH+)>
<!--  SPECIALRULES
	MAIN-PARAGRAPH+		once special rules are defined, it must contain
                                at least one main paragraph
-->
<!ELEMENT GLOSSARYOFTERMS (TERMROW+)>
<!--  GLOSSARYOFTERMS
	TERMROW+               a sequence of term table rows
-->
<!ELEMENT SYNONYMSANDKEYWORDS (TERMTEXT+|TERMROW+)*>
<!--  SYNONYMSANDKEYWORDS
	TERMTEXT+	       "standard texts" (formatted with S)
	TERMROW+               a sequence of term table rows
-->
<!ELEMENT DEFINITION-CASE (PARAGRAPH-TEXT,SUBPARAGRAPH*)>
<!--  DEFINITION-CASE
	PARAGRAPH-TEXT		text of the paragraph
	SUBPARAGRAPH*		bulleted subparagraphs
-->
<!ELEMENT MAIN-PARAGRAPH (PARAGRAPH-TEXT,SUBPARAGRAPH*)>
<!--  MAIN-PARAGRAPH
	PARAGRAPH-TEXT		text of the paragraph
	SUBPARAGRAPH*		bulleted subparagraphs
-->
<!ELEMENT INDEXOFGROUPS (SUBHEADING,REFERENCETABLE)>
<!--  INDEXOFGROUPS	local reference table
	SUBHEADING	heading text (a single paragraph)
	REFERENCETABLE	references stored in this table are local to the definition file
-->
<!ELEMENT REFERENCETABLE (REFERENCEROW+)>
<!--  REFERENCETABLE
	REFERENCEROW+		a sequence of references
-->
<!ELEMENT SUBHEADING %TEXT;>
<!--  SUBHEADING
	%TEXT;			single paragraph
-->
<!ELEMENT REFERENCEROW ((MAIN-PARAGRAPH|SUBPARAGRAPH),IPCREFS)>
<!--  REFERENCEROW
	MAIN-PARAGRAPH	first cell: either a general text, or a single paragraph
	|
	SUBPARAGRAPH    or a single subparagraph
	IPCREFS	second cell: sequence of references
-->
<!ELEMENT IPCREFS (#PCDATA|SREF|MREF|LREF)*>
<!--  IPCREFS
	(#PCDATA	any text e.g. and or ,.;:
	SREF |		sequence of (single reference or
	MREF |          interval reference or
	LREF)*		local reference)
-->
<!ELEMENT TERMROW (TERM+,MAIN-PARAGRAPH+)>
<!--  TERMROW            reperesents a row in a terminology table
	TERM+		first cell: a sequence of terms
	MAIN-PARAGRAPH	second cell: a general text, or a single paragraph
-->
<!ELEMENT PARAGRAPH-TEXT %TEXT;>
<!--  PARAGRAPH-TEXT	text of the paragraph -->
<!ELEMENT SUBPARAGRAPH %TEXT;>
<!--  SUBPARAGRAPH	text of the paragraph; no subsub allowed -->
<!ELEMENT TERMTEXT %TEXT;>
<!--  TERMTEXT	text of the term definition paragraph -->
<!--  IPC references -->
<!ELEMENT SREF EMPTY>
<!ATTLIST SREF  TARGET CDATA  #REQUIRED
                LABEL  CDATA  #IMPLIED
>
<!ELEMENT LREF EMPTY>
<!ATTLIST LREF  TARGET CDATA  #REQUIRED
                LABEL  CDATA  #IMPLIED
>
<!ELEMENT MREF EMPTY>
<!ATTLIST MREF  START  CDATA  #REQUIRED
                LABELS CDATA  #IMPLIED
                END    CDATA  #REQUIRED
                LABELE CDATA  #IMPLIED
>
<!ELEMENT GREF (#PCDATA)>
<!ATTLIST GREF
	REFID	CDATA	#REQUIRED
>
<!ELEMENT TERM (#PCDATA)>
<!ATTLIST TERM
	ID	CDATA	#REQUIRED
>

<!--  FONT MARKUP -->
<!ELEMENT UND   (#PCDATA|SREF|MREF|GREF|B|SUB|SUP)*> <!--  underline -->
<!ELEMENT U   (#PCDATA|SREF|MREF|GREF|B|SUB|SUP)*> <!--  underline -->
<!ELEMENT B   (#PCDATA|SREF|MREF|GREF|U|UND|SUB|SUP)*> <!--  bold -->
<!ELEMENT SUB (#PCDATA)> <!--  superscript -->
<!ELEMENT SUP (#PCDATA)> <!--  subscript -->
<!--  SPECIAL CHARACTERS -->
<!ELEMENT BR EMPTY> <!--  line break -->
<!ELEMENT GE EMPTY>
<!ELEMENT LE EMPTY>
<!ELEMENT LH3BOND EMPTY> <!--  left 3 hydrogen bonds -->
<!ELEMENT LH2BOND EMPTY> <!--  right 3 hydrogen bonds -->
<!ELEMENT RH3BOND EMPTY> <!--  left 3 hydrogen bonds -->
<!ELEMENT RH2BOND EMPTY> <!--  right 2 hydrogen bonds -->
<!ELEMENT DBOND EMPTY>   <!--  double hydrogen bonds -->
<!ELEMENT SP	EMPTY>
<!ELEMENT TAB	EMPTY>
<!ELEMENT MDASH	EMPTY>
<!--  ILLUSTRATIONS, IMAGES -->
<!ELEMENT IMG EMPTY>
<!ATTLIST IMG
	SRC	CDATA	#REQUIRED
>
<!ELEMENT P %TEXT;>
<!ATTLIST P
	class CDATA	#IMPLIED>
<!ELEMENT A	(#PCDATA|SP)*>
<!ATTLIST A
	href	CDATA	#REQUIRED
>
