<!-- History
2003-MAY-09 (TA) languageversions,ipcEntriesList added
2003-MAY-09 (TA) project identification: with project type instead of technology (see session_project and proposal)
2003-MAY-09 (TA) project types: R(errangement) C(revision) T(ranslation) added or maintained
2003-MAY-09 (TA) xml:lang systematically modified to lang
2003-MAY-09 (TA) proposal: dummy projectId entry was removed and attribute added to proposal
2003-MAY-09 (TA) text modification (modify) removed, only complex modification allowed that is named 'modify'
2003-MAY-09 (TA) type: changed to entryType in new and modify
2003-MAY-12 (TA) added: renumber, deletenew, undelete,restore
2003-MAY-14 (TA) added: navigation specific tags
2003-MAY-14 (TA) kind added to unchanged
2003-MAY-14 (TA) oe,OE entities added
2003-MAY-16 (TA) harmonization with database (amendments & amendment types)
2003-MAY-16 (TA) 'decision...' elements added
2003-MAY-29 (TA) 'ERRORs' refined
2003-AUG-03 (TA) ERROR lists: attributes added (name, remark); IPCErrorListsAll tag added;
2003-AUG-03 (TA) IPCErrors in ErrorLists can be empty, + changed to * (so far, it was so pessimistic!)
2003-AUG-26 (TA) IPCEntry: amendment* added
2003-AUG-26 (TA) amendment: decision codes are put imperative and in-line with AmendmentStates
2003-AUG-26 (TA) amendment: amendment state added in line with AmendmentStates; projectType projectNumber added
2003-AUG-26 (TA) errorLocation: ANY added for representing the place where the error appeared, edition attribute added
2003-OCT-08 (BJ) TestScenario and related elements are added
2003-OCT-08 (BJ) ipcEntry.language is renamed to ipcEntry.lang
2003-DEC-09 (TA) validity structures added, see ValidityFile
2003-DEC-12 (TA) proposals: mode added to allow refined XSLT for Word
2003-DEC-12 (TA) proposals: amendments: rescue operation: htmltext added
2004-JAN-12 (TA) decisions: element added for allowing more sessionDecisions in a single file
2004-JAN-14 (TA) validity structures revised, advanced attributes to IMPLIED, ValidityEdition entry added
2004-JAN-25 (TA) RCL: mode is added in accordance with database structure
2004-FEB-12 (TA) validity structures revised (upon comments by MM); ValidityEdition removed (no history!)
2004-FEB-23 (SZM) guide entity removed
2004-MAR-03 (BJ) The proposals section is changed according sessionDecisions
2004-MAR-17 (TA) guideheading line kind added
2004-MAR-23 (BJ) DEFINITIONS section added
2004-MAR-24 (BJ) remark added to ipcEntry
2004-MAR-29 (SZM) remark added to ipcEntry
2004-MAR-30 (SZM) made a lots of changes at the CW tags
2004-MAR-30 (SZM) flatnotes added
2004-APR-19 (BJ) ipcLevel added to references
2004-MAY-10 (BJ) illustrations added to ipcEntry
2004-MAY-13 (BJ) proposalsAndDecisions added
2004-MAY-13 (BJ) ipcLevel added to nonstructured amendments
2004-MAY-19 (BJ) versioning of ipcentries is changed
2004-MAY-19 (BJ) ipcLevel added to sRef mRef
2004-MAY-25 (BJ) amendmentType added to ipcEntry
2004-JUL-22 (TA) RCLPublications... entries added (RCL browser)
2004-JUL-29 (TA) Definitions... entries added (Definitions browser)
2004-JUL-29 (TA) Illustrations... entries added (Illustrations browser)
2004-AUG-18 (TA) New project type "S" added
2004-AUG-26 (BJ) ipcLevel added to amendment
2004-SEP-30 (HA) sref..style, mref..endStyle, endRefType
2004-OCT-20 (TA) proposalByArea => proposalsByArea
2004-OCT-21 (TA) symbol added
2004-OCT-21 (TA) documentRoot attribute as implied added to all root elements
2004-NOV-07 (BJ) ipcLevel adjustment in various amendment types
2004-NOV-16 (BJ) html child addad to amendments to allow viewing wrongly formatted amendments
2004-DEC-20 (HA) adding documentRoot attribute to RCLPublication element
2004-DEC-20 (HA) adding new value manual to mode attribute of RCLPublication element
2005-JAN-17 (HA) adding 'D' value to ipcr-symbol element entry-type attribute
2005-FEB-09 (TA) source added to IPCEntry (source file from which it was split)
2005-FEB-09 (TA) isCore attr. of IPCEdition and level of staticIpc was changed to ipcLevel
2005-FEB-09 (TA) proposals in revisionPeriod was made optional
2005-FEB-11 (HA) add 'EF' to lang values
2005-FEB-15 (BJ) different core/advanced added to ipcEntry

-->
<!-- ENTITIES -->
<!-- special characters macro; see bottom of file for
     definitions of these characters
  -->
<!ENTITY % chars 'nbsp|llinkt|rlinkt|larrow|rarrow|llinkthree|rlinkthree|symbol|alpha|beta|omega|ge|gt|le|lt|dbond|tbond|regist|degree|tm|cr|oe|OE|emdash|endash'>
<!-- ROOT NODES -->
<!ELEMENT RIPCISDatabase (administration,revisionPeriods)>
<!ATTLIST RIPCISDatabase
	version	CDATA	"0.0"
>
<!-- ROOT for administration: administrative information -->
<!ELEMENT administration (rapporteurs,users,projects,sessions)>
<!-- ROOT for revisionPeriods:
     more revision periods can be stored in the database
     independently, test purposes and providing continuity
-->
<!ELEMENT revisionPeriods (revisionPeriod+)>
<!-- revisionPeriod:
     contains a starting ipcEdition and proposals
-->
<!ELEMENT revisionPeriod (ipcEdition+,proposals?)>
<!-- ADMINISTRATION ELEMENTS -->
<!-- rapporteurs: list rapporteur offices -->
<!ELEMENT rapporteurs (rapporteur)+>
<!ELEMENT rapporteur EMPTY>
<!ATTLIST rapporteur
	office	CDATA #REQUIRED
	description CDATA	#REQUIRED
	email 	CDATA #REQUIRED
>
<!-- office: office or country code
     description: complete description of the office
     e-mail: e-mail of the representative
-->
<!-- users: list of users -->
<!ELEMENT users (user+)>
<!ELEMENT user EMPTY>
<!ATTLIST user
	userName	CDATA	#REQUIRED
	userType	(A|R|V|C|I)	"V"
	password	CDATA	#REQUIRED
	email		CDATA	#REQUIRED
	rapporteur	CDATA	#REQUIRED
>
<!-- userType:
	A: administrator
	R: rapporteur
	V: viewer
	C: configurator
	I: IP Office user for reclassification
     rapporeur: reference to the rapporteur.office
-->
<!-- projects: list of projects -->
<!ELEMENT projects (project)+>
<!ELEMENT project (area+)>
<!ATTLIST project
	technology      (C|M|E) #REQUIRED
	projectNumber	CDATA 	#REQUIRED
	projectStatus   (A|C|S|L|O)	#REQUIRED
	projectType	(D|M|C|H|T|R|S)	#REQUIRED
	projectLevel	(C|I|S|W)	#REQUIRED
	rapporteur	CDATA	#REQUIRED
	translator	CDATA	#IMPLIED
	remark		CDATA	#IMPLIED
>
<!-- technology:
	C(emistry)
	M(echanics)
	E(lectricity)
     projectStatus:
	A(ctive)
	C(ompleted)
	S(uspended)
	c(L)osable,
	cl(O)sed
     projectType:
	D(efinitions)
	M(aintenance)
	C (revision)
	H(ybrid)
	T(ranslation of any kind of project)
	R(earrangement)
	S(ubcommitee)
     projectLevel:
	C(E)
	I(B)
	S(C)
	W(G)
-->
<!-- projectId: used to refer to a project -->
<!ELEMENT projectId EMPTY>
<!ATTLIST projectId
	projectType	(D|M|R|H|S)	#REQUIRED
	projectNumber	CDATA 		#REQUIRED
>
<!-- areas of a project -->
<!ELEMENT area EMPTY>
<!ATTLIST area
	area  		CDATA	#REQUIRED
>
<!-- area:
	class or subclass symbol
-->
<!-- sessions: list of sessions -->
<!ELEMENT sessions (session)+>
<!-- session: contains references to projects -->
<!ELEMENT session (comment,(project_session)+)>
<!ATTLIST session
	sessionType	CDATA	#REQUIRED
	sessionNumber	CDATA	#REQUIRED
	sessionDate	CDATA	#REQUIRED
>
<!-- sessionType: not enum to keep it updateable
     currently allowed values:
	CE
	WG
	IB (on CE level)
	SC
	PUB publication session
-->
<!-- project_session: reference to a project
	equaivalent to projectId,
	but expresses n:m relationship!
	connection to sessions: by ownership,
	connection to projects: by technology || projectNumber
-->
<!ELEMENT project_session EMPTY>
<!ATTLIST project_session
	projectType      (C|M|E) #REQUIRED
	projectNumber   CDATA 	#REQUIRED
>
<!-- end of administration -->
<!-- STATIC IPC -->
<!-- ipcEdition -->
<!ELEMENT ipcEdition (en?,fr?)>
<!ATTLIST ipcEdition
	edition		CDATA	#REQUIRED
	validFrom	CDATA	#REQUIRED
	validTo		CDATA	#IMPLIED
	ipcLevel	(c|a)	#REQUIRED
	documentRoot	CDATA	""
>
<!-- edition: 1-7, 2005, 2005.03  (implies: advanced)
     isCore: c(ore), a(dvanced)
-->
<!ELEMENT en (staticIpc)>
<!ELEMENT fr (staticIpc)>
<!-- staticIpc: static ipc in a single language
	sequence of ipcEntries
	IMPORTANT:
	it is allowed that the exact parent-child relationship
	between ipcEntries is not reflected by the
	XML file; instead, ipcEntries can be handled
	as 'text records'
  -->
<!ELEMENT staticIpc (ipcEntry+)>
<!ATTLIST staticIpc
	lang		CDATA 	"EN"
	edition		CDATA	#REQUIRED
	ipcLevel	(a|c)	"a"
	documentRoot	CDATA	""
>
<!-- lang: redundant for allowing multiroot use of DTD -->
<!-- ipcEntry: text and (optional) children of the entry
	IMPORTANT: children are not necessarily
	contained here when simple output for viewing is done,
	instead the sequence of the staticIpc contains
	the children
-->
<!ELEMENT ipcEntry (textBody*,amendment*,illustrations*,ipcEntry*)>
<!ATTLIST ipcEntry
	symbol		CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	acceptanceLevel	CDATA	"O"
	entryType       (c|i|d|n|I|K|D)	'c'
	ipcLevel	(c|i|a|C|O|A)		'c'
	lang	(EN|FR|EF)	#IMPLIED
	coreOfEntry     CDATA	#IMPLIED
	kind		(s|t|c|u|g|m|1|2|3|4|5|6|7|8|9|A|d|i|n|l)	#IMPLIED
	isRenumbered (Y|N) 'N'
	isDead		(Y|N)	'N'
	renumberedFrom	CDATA	#IMPLIED
	edition		CDATA	#IMPLIED
	priorityOrder	CDATA	#IMPLIED
	amendmentType	CDATA	#IMPLIED
	amendmentState	CDATA	#IMPLIED
	remark		CDATA	#IMPLIED
	version		CDATA	#IMPLIED
	ofEdition	CDATA	#IMPLIED
	ofSession	CDATA	#IMPLIED
	ofProject	CDATA	#IMPLIED
	source		CDATA	#IMPLIED
	diffCA		CDATA	#IMPLIED
>
<!--
	textBody: the text itself [XMLS field in DB]
	amendment: amendment(s) that modify the entry [recently: physically 1]
	ipcEntry: child elements [used in input only]
	acceptanceLevel: kept as CHAR(1), foreseen values:
		O(riginal)
		P(ublished)
		(p)R(oposed)
		C(E adopted)
		S(C approved)
		W(G accepted)
	entryType:	c(lassifying), i(ndexing), d(ouble purpose), n(one)
	ipcLevel:	c(ore), i(ntermediary), a(dvanced)
	kind:
		s(ection)
		t(itle: subsection title)
		c(lass)
		(s)u(bclass)
		g(uidance header)
		m(ain group)
		1-10 (dot group)
		d(eleted)
		(subclass) i(ndex)
		n(ote)
		l(ine) guide heading line
	symbol:	symbol or start of scope for notes and guide headings
	endSymbol: end of scope, in case of note, guide heading and deleted
	coreOfEntry:	symbol of associated core entry in the edition to which the entry belongs
	renumberedFrom: symbol from which renumbered
	isDead: when entry is deleted by an amendment
	language: EF: language-independent
	priorityOrder: secondary sort key (number)
	source: in output files, the source file from which the actual file was generated
-->
<!ELEMENT singleamendment (textBody*)>
<!-- textBody: IPC Text Body,
	depending on kind of owning ipcEntry:
	* note, (kind=n)
	* index (kind=i)
	* deleted (kind=d)
	* title (any other)
-->
<!ELEMENT textBody (note|index|deleted|title)>
<!-- deleted entry
	pls. note: 'delete' is the amendment type
-->
<!ELEMENT deleted (transferredTo?,coveredBy?)>
<!ELEMENT transferredTo (sref|mref)+>
<!ELEMENT coveredBy     (sref|mref)+>
<!-- note: sequence of noteParagraphs -->
<!ELEMENT note (noteParagraph)+>
<!ATTLIST note
	type  	(none|table|number|Roman|roman|Alpha|alpha)	'none'
	indent	CDATA	#IMPLIED
>
<!-- 	type: type of prefix
	indent: indentation depth
-->
<!-- subnote: sequence of noteParagraphs
	used as subparagraphs of noteParagraphs
-->
<!ELEMENT subnote (noteParagraph)+>
<!ATTLIST subnote
	type  	(none|table|number|Roman|roman|Alpha|alpha|bullet)	'none'
	indent	CDATA	#IMPLIED
>
<!-- noteParagraph: a single paragraph and its subparagraphs
Two cases:
textual paragraph:
	text: contains the text itself
	subnote: sequence of subparagraphs
	orphan: a subparagraph that falls out of the subparagraph sequence (non-prefixed)
table:
	references: list of references
	text: text associated to references
-->
<!ELEMENT noteParagraph ((text,subnote?,orphan?)|(references,text))>
<!ATTLIST noteParagraph
	edition		CDATA	#IMPLIED
>
<!-- orphan: out-of-sequence subparagraph
It has
	text: text of paragraph
	optional sequence of subnotes: when a new sequence of subparagraphs starts under the orphan
	orphan: an optional further orphan that closes the subparagraph sequence
-->
<!ELEMENT orphan (text,subnote?,orphan?)>
<!ATTLIST orphan
	indent	CDATA	#IMPLIED
	edition	CDATA	#IMPLIED
>
<!-- index: sequence of indexEntries -->
<!ELEMENT index (indexEntry)+>
<!-- indexEntry: a text, associated references and contained indexEntries -->
<!ELEMENT indexEntry (text,references?,indexEntry*)>
<!-- title: multipart title -->
<!ELEMENT title (titlePart)+>
<!-- titlePart: text and associated (qualified) references -->
<!ELEMENT titlePart (text,entryReference*)>
<!-- entryReference: text with layout and references
<	in general: it should be text,references
 	however simplification required
		referencelist from entryReference removed: reason: 'takes precedence' clause is reverse order
-->
<!ELEMENT entryReference (#PCDATA|u|sup|sub|img|sref|mref|%chars;)*>
<!-- references: list of references with separators -->
<!ELEMENT references (#PCDATA|sref|mref)*>
<!ELEMENT htmltext (#PCDATA|%chars;)*>
<!-- htmltext
	marked text in quasy-html
	html tags are bounded by lt - gt pairs
-->
<!ELEMENT illustrations (illustration+)>
<!ELEMENT illustration EMPTY>
<!ATTLIST illustration
	type		(formula|picture)	#IMPLIED
	label		CDATA	#IMPLIED
	src		CDATA	#REQUIRED
	remarkEN	CDATA	#IMPLIED
	remarkFR	CDATA	#IMPLIED
>
<!ELEMENT languageVersions (decision+|proposal+)>
<!-- PROPOSALS -->
<!ELEMENT proposals (proposalsByProject+)>
<!ELEMENT proposalsByProject (proposalsByArea+)>
<!ATTLIST proposalsByProject
	projectType	(D|M|C|H|T|R|S)	#REQUIRED
	projectNumber	CDATA 		#REQUIRED
	projectRapporteur CDATA		#IMPLIED
>
<!ELEMENT proposalsByArea (proposal+|languageVersions+)>
<!ATTLIST proposalsByArea
	area		CDATA	#REQUIRED
>
<!ELEMENT proposal (amendment+)>
<!ATTLIST proposal
	lang		(EN|FR|EF)	#IMPLIED
	isTranslation	CDATA	        #REQUIRED
	proposalNumber	CDATA		#IMPLIED
	proposalDate	CDATA		#IMPLIED
	projectRapporteur CDATA		#IMPLIED
	projectTranslator CDATA		#IMPLIED
>
<!-- amendment: covers amendment types -->
<!ELEMENT amendment (
			(  	unchanged
			|	structure
			|	core-advanced
			|	entry-type
			|	delete
			|	new
			|	modify
			|	deleteunstructured
			|	modifyunstructured
			|	newunstructured
			|	moveunstructured
			|	renumber
			|	priority
			|	deletenew
			|	undelete
			|	restore
			),html?
			)
>
<!ATTLIST amendment
	sessionDecided	CDATA	#IMPLIED
	isGenerated	(Y|N)	"N"
	decision	(withdraw|reject|approve|questionWithApproval|noDecide|question|adopt|sendbackToWG|sendbackToSC|publish|original|submit)	#IMPLIED
	state		(WGproposed|WGapproved|WGrejected|WGpending|WGquestions|WGapprovedwithquestions|
			 CEproposed|CEadopted|CErejected|CEpending|CEquestions|CEadoptedwithquestions|
			 SCproposed|SCadopted|SCrejected|SCpending|SCquestions|SCadoptedwithquestions|
			 IBproposed|IBadopted|IBpublished|IBoriginal
			) #IMPLIED
	isCType		(Y|N) 	"N"
	orderInProposal CDATA	#IMPLIED
	coreOfEntry	CDATA	#IMPLIED
	remark		CDATA	#IMPLIED
	lang		(EN|FR|EF)	#REQUIRED
	projectType	(D|M|C|H|T|R|S)	#IMPLIED
	projectNumber	CDATA 		#IMPLIED
	amendmentState	CDATA	#IMPLIED
	ipcLevel	(c|b|a)		#REQUIRED
>
<!-- sessionDecided: which session mande the decision
     generated: for tracking sent-back and automatically generated amendments
     decision: what was the decision of the session?
	simplification of the real state stored in the database
-->
<!ELEMENT html ANY>

<!-- STRUCTURED entry operations -->
<!-- unchanged amendment, for an interval -->
<!ELEMENT unchanged EMPTY>
<!ATTLIST unchanged
	symbol	CDATA	#REQUIRED
	endSymbol CDATA	#IMPLIED
	kind 	CDATA	#IMPLIED
>
<!-- structure modification -->
<!ELEMENT structure EMPTY>
<!ATTLIST structure
	symbol		CDATA	#REQUIRED
	endSymbol 	CDATA	#IMPLIED
	relativeDotNo	CDATA	#REQUIRED
>
<!-- core->advanced or advanced->core  modification -->
<!ELEMENT core-advanced EMPTY>
<!ATTLIST core-advanced
	symbol	  CDATA	#REQUIRED
	endSymbol CDATA	#IMPLIED
	ipcLevel  (c|a) #REQUIRED
	kind	CDATA	#IMPLIED
>
<!-- 'entry type' modification -->
<!ELEMENT entry-type EMPTY>
<!ATTLIST entry-type
	symbol		CDATA	  #REQUIRED
	endSymbol 	CDATA	  #IMPLIED
	entryType  	(c|i|d)   #REQUIRED
>
<!-- 'delete' amendment
	pls. note: 'deleted' is the IPC entry or interval that has been deleted!
-->
<!ELEMENT delete (transferredTo?,coveredBy?)>
<!ATTLIST delete
	symbol	CDATA	#REQUIRED
	endSymbol CDATA	#IMPLIED
>
<!-- 'new' amendment -->
<!ELEMENT new (title|htmltext)>
<!ATTLIST new
	symbol	CDATA	#REQUIRED
	entryType	(c|i|d|n)	"c"
	ipcLevel	(c|a)	"c"
	kind	CDATA	#REQUIRED
>
<!-- entryType, ipcLevel: see at ipcEntry -->
<!-- modify: text or complex modification -->
<!ELEMENT modify (title|htmltext)>
<!ATTLIST modify
	symbol	CDATA	#REQUIRED
	entryType	(c|i|d|n)	#IMPLIED
	ipcLevel	(c|a)		#IMPLIED
	kind	CDATA	#REQUIRED
	priorityOrder	CDATA 	#IMPLIED
>
<!-- type, ipcLevel: see at ipcEntry -->
<!-- delete unstructured -->
<!ELEMENT deleteunstructured EMPTY>
<!ATTLIST deleteunstructured
	symbol	CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	kind	CDATA	#REQUIRED
>
<!ELEMENT newunstructured (index|note|title|htmltext)>
<!ATTLIST newunstructured
	symbol	CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	kind	CDATA	#REQUIRED
	ipcLevel	(c|a)	"c"
>
<!ELEMENT modifyunstructured (index|note|title|htmltext)>
<!ATTLIST modifyunstructured
	symbol	CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	kind	CDATA	#REQUIRED
	ipcLevel	(c|a)	#IMPLIED
	toSymbol	CDATA	#IMPLIED
	endToSymbol	CDATA	#IMPLIED
>
<!ELEMENT moveunstructured EMPTY>
<!ATTLIST moveunstructured
	symbol	CDATA	#REQUIRED
	endSymbol	CDATA	#REQUIRED
	kind	CDATA	#REQUIRED
	ipcLevel	(c|a)	#IMPLIED
	toSymbol	CDATA	#IMPLIED
	endToSymbol	CDATA	#IMPLIED
>
<!-- RENUMBER and PRIORITY operations -->
<!ELEMENT renumber EMPTY>
<!ATTLIST renumber
	symbol	CDATA 	#REQUIRED
	endSymbol CDATA	""
	toSymbol	CDATA 	#REQUIRED
	endToSymbol	CDATA	""
>
<!ELEMENT priority EMPTY>
<!ATTLIST priority
	symbol		CDATA 	#REQUIRED
	priorityOrder	CDATA 	#REQUIRED
>
<!-- UNDO operations -->
<!ELEMENT deletenew EMPTY>
<!ATTLIST deletenew
	symbol	CDATA 	#REQUIRED
	endSymbol CDATA	#IMPLIED
	kind 	CDATA	#IMPLIED
>
<!ELEMENT undelete EMPTY>
<!ATTLIST undelete
	symbol	CDATA 	#REQUIRED
	endSymbol CDATA	#IMPLIED
	kind 	CDATA	#IMPLIED
>
<!ELEMENT restore EMPTY>
<!ATTLIST restore
	symbol	CDATA 	#REQUIRED
	endSymbol CDATA	#IMPLIED
	kind 	CDATA	#IMPLIED
>
<!-- GENERIC and ATTRIBUTE elements -->
<!ELEMENT comment (#PCDATA)>
<!ELEMENT text (#PCDATA|u|sup|sub|img|sref|mref|%chars;)*>
<!ELEMENT sref EMPTY>
<!ATTLIST sref
	ref		CDATA	#REQUIRED
	refType		CDATA	"/"
	refLevel	(c|i|a)		'c'
	style		CDATA 	#IMPLIED
	refAdvanced	CDATA	#IMPLIED
>
<!ELEMENT mref EMPTY>
<!ATTLIST mref
	ref		CDATA		#REQUIRED
	endRef		CDATA	#REQUIRED
	refType		CDATA	"/"
	endRefType	CDATA	"/"
	refLevel	(c|i|a)		'c'
	endRefLevel	(c|i|a)		'c'
	endStyle	CDATA 	#IMPLIED
	refAdvanced	CDATA	#IMPLIED
	endRefAdvanced	CDATA	#IMPLIED
>
<!ELEMENT sub (#PCDATA)>
<!ELEMENT sup (#PCDATA)>
<!ELEMENT u   (#PCDATA|sref|mref|nbsp)*>
<!ELEMENT img	EMPTY>
<!ATTLIST img
	src		CDATA	#REQUIRED
>
<!-- SPECIAL CHARACTERS -->
<!ELEMENT nbsp EMPTY>
<!ELEMENT llinkt EMPTY>
<!ELEMENT rlinkt EMPTY>
<!ELEMENT tbond EMPTY>
<!ELEMENT larrow EMPTY>
<!ELEMENT rarrow EMPTY>
<!ELEMENT llinkthree EMPTY>
<!ELEMENT rlinkthree EMPTY>
<!ELEMENT dbond EMPTY>
<!ELEMENT regist EMPTY>
<!ELEMENT ge EMPTY>
<!ELEMENT le EMPTY>
<!ELEMENT gt EMPTY>
<!ELEMENT lt EMPTY>
<!ELEMENT degree EMPTY>
<!ELEMENT alpha EMPTY>
<!ELEMENT symbol EMPTY>
<!ATTLIST symbol
  character	CDATA #REQUIRED
>
<!ELEMENT beta EMPTY>
<!ELEMENT omega EMPTY>
<!ELEMENT tm EMPTY>
<!ELEMENT cr EMPTY>
<!ELEMENT oe EMPTY>
<!ELEMENT OE EMPTY>
<!ELEMENT ldash EMPTY>
<!ELEMENT emdash EMPTY>
<!ELEMENT endash EMPTY>
<!--
<!ENTITY emdash "&#8212;">
<!ENTITY nbsp " ">

<!ENTITY endash "&#8211;">
<!ENTITY ge ">=">
<!ENTITY oe "oe">
<!ENTITY CAPOE "OE">
-->
<!-- DATA Exchange Elements -->
<!ELEMENT ipcEntriesList (ipcEntries+,navigation?)>
<!ATTLIST ipcEntriesList
	displayMode	CDATA	#IMPLIED
	ipcSymbol	CDATA	#IMPLIED
	ipcReference	CDATA	#IMPLIED
	ipcQuery	CDATA	#IMPLIED
	ipcId		CDATA	#IMPLIED
>
<!ELEMENT ipcEntries (ipcEntry+|ipcVersions+)>
<!ATTLIST ipcEntries
	displayMode	CDATA	#IMPLIED
	ipcSymbol	CDATA	#IMPLIED
	ipcReference	CDATA	#IMPLIED
	ipcQuery	CDATA	#IMPLIED
	ipcId		CDATA	#IMPLIED
	ipcLevel	CDATA	#IMPLIED
	documentRoot	CDATA	""
>
<!ELEMENT ipcVersions (ipcEntry+)>
<!ELEMENT navigation EMPTY>
<!ATTLIST navigation
	firstOnPage	CDATA	#IMPLIED
	lastOnPage	CDATA	#IMPLIED
	actual		CDATA	#IMPLIED
	displayMode	CDATA	#IMPLIED
	next		CDATA	#IMPLIED
	prev		CDATA	#IMPLIED
>
<!ELEMENT proposalsAndDecisions (decisions?,proposals?)>
<!ATTLIST proposalsAndDecisions
	documentRoot	CDATA	""
>
<!-- Decisions (data exchange only) -->
<!-- decisions: sequence of decisions of sessions -->
<!-- mode: e.g. compilation, Word (forward specified) -->
<!ELEMENT decisions (sessionDecisions+)>
<!ATTLIST decisions
	mode		CDATA		#IMPLIED
>
<!ELEMENT sessionDecisions (decisionsByProject+)>
<!ATTLIST sessionDecisions
	sessionCode	CDATA	#REQUIRED
	sessionNumber	CDATA	#REQUIRED
	sessionDate	CDATA	#IMPLIED
>
<!ELEMENT decisionsByProject (decisionsByArea+)>
<!ATTLIST decisionsByProject
	projectType	(D|M|C|H|T|R|S)	#REQUIRED
	projectNumber	CDATA 		#REQUIRED
	projectRapporteur CDATA		#IMPLIED
>
<!ELEMENT decisionsByArea (decision+|languageVersions+)>
<!ATTLIST decisionsByArea
	area		CDATA	#REQUIRED
>
<!ELEMENT decision (amendment+)>
<!ATTLIST decision
	lang		(EN|FR|EF)	#IMPLIED
	isTranslation	CDATA	        #REQUIRED
	proposalNumber	CDATA		#IMPLIED
	proposalDate	CDATA		#IMPLIED
	projectRapporteur CDATA		#IMPLIED
	projectTranslator CDATA		#IMPLIED
>
<!-- Errors: output only -->
<!ELEMENT IPCErrorListsAll (IPCErrorLists+)>
<!ATTLIST IPCErrorListsAll
	documentRoot	CDATA	""
>
<!ELEMENT IPCErrorLists (IPCErrors*)>
<!ATTLIST IPCErrorLists
	remark	CDATA	#IMPLIED
	name	CDATA	#IMPLIED
	date	CDATA	#IMPLIED
	documentRoot	CDATA	""
>
<!ELEMENT IPCErrors (IPCError+)>
<!ATTLIST IPCErrors
	proposalId	CDATA	#IMPLIED
	proposalDate	CDATA	#IMPLIED
	projectType	CDATA	#IMPLIED
	projectNumber	CDATA	#IMPLIED
	rapporteur	CDATA	#IMPLIED
	sessionCode	CDATA	#IMPLIED
	sessionNumber	CDATA	#IMPLIED
	amendmentId	CDATA	#IMPLIED
	amendmentType	CDATA	#IMPLIED
	remark		CDATA	#IMPLIED
	errorDate	CDATA	#IMPLIED
>
<!ELEMENT IPCError (IPCErrorLocation*)>
<!ATTLIST IPCError
	errorCode	CDATA	#IMPLIED
	severity	(I|H|W|E|S|F|X)	"I"
	avoidableLevel	(A|P|D)	"D"
	text		CDATA	#IMPLIED
>
<!ELEMENT IPCErrorLocation ANY>
<!ATTLIST IPCErrorLocation
	ipcEntryId	CDATA	#IMPLIED
	ipcSymbol	CDATA	#IMPLIED
	ipcEndSymbol	CDATA	#IMPLIED
	entryType       (c|i|d|n)	'c'
	edition		CDATA	#IMPLIED
	acceptanceLevel	CDATA	"O"
	language	(EN|FR|EF)	#IMPLIED
	kind		(s|t|c|u|g|m|1|2|3|4|5|6|7|8|9|10|d|i|n)	#IMPLIED
	kindText	CDATA	#IMPLIED
	sessionCode	CDATA	#IMPLIED
	sessionNumber	CDATA	#IMPLIED
	amendmentId	CDATA	#IMPLIED
	amendmentType	CDATA	#IMPLIED
	amendmentTypeText	CDATA	#IMPLIED
	projectType	CDATA	#IMPLIED
	projectNumber	CDATA	#IMPLIED
>
<!--
	errorCode: mnemonic code for the error, e.g. MISSXREF
	severity:
		I(nformation only)
		H(int)
		W(arning)
		E(rror)
		S(erious error)
		F(atal error) data error that is fatal, e.g. deleting a session
		X(internal error)
	avoidableLevel: certain errors can be avoided:
		A(mendment): when a single amendment is loaded in, e.g. xref to a non-existing entry in a new
		P(roposal): when a proposal is loaded in, e.g. missing translation
		D(ecision): no compromise, all errors are presented
	amendmentType: text information
-->
<!-- Catchword data -->
<!ELEMENT CW (CWEntry+|CWLetter+)>
<!ATTLIST CW
	lang		CDATA	#REQUIRED
	TRANSLATIONLANG	CDATA	#IMPLIED
	edition		CDATA	#REQUIRED
	type		CDATA	#IMPLIED
	view	CDATA	#IMPLIED
	displaymode	CDATA	#IMPLIED
	letter		CDATA	#IMPLIED
	CW 		CDATA	#IMPLIED
	FROMBEGIN	CDATA	""
	FROMBEGINID	CDATA	#IMPLIED
	FROMEND	CDATA	""
	FROMENDID	CDATA	#IMPLIED
	TOBEGIN	CDATA	""
	TOBEGINID	CDATA	#IMPLIED
	TOEND	CDATA	""
	TOENDID	CDATA	#IMPLIED
	PURPOSE	CDATA	#IMPLIED
	documentRoot	CDATA	""
>
<!-- CW
	lang		language of indications in this file
	TRANSLATIONLANG 	default language of the translations, if any
	EDITION	edition of IPC the CW belongs to
	TYPE	   	CW,SW or anything else (e.g. reverse IPC)
	LETTER	[A-Z] capital letter
	Interface only:
	CW 	sequence number of the document;  the XML file is called: type edition lang _ lowercase(letter) (CW) .xml
	FROMBEGIN	first entry of the preceding page; empty when == FROMBEGINID
	FROMBEGINID	id of first entry of the preceding page
	FROMEND	last entry of the preceding page; empty when == FROMENDID
	FROMENDID	id of last entry of the preceding page
	TOBEGIN	first entry of the subsequent page; empty when == TOBEGINID
	TOBEGINID	id of first entry of the subsequent page
	TOEND	last entry of the preceding page; empty when == TOENDID
	TOENDID	id of last entry of the subsequent page
	PURPOSE	purpose of the file
-->
<!ELEMENT CWLetter (CWEntryInterval+)>
<!ATTLIST CWLetter
	letter	CDATA	#IMPLIED
>
<!ELEMENT CWEntryInterval (CWEntry+)>
<!ATTLIST CWEntryInterval
	en	CDATA	#IMPLIED
>
<!ELEMENT CWEntry (CWIndication,CWSee?,CWReferences? ,CWEntry*)>
<!ATTLIST CWEntry
	id	CDATA	#IMPLIED
	rn	CDATA	#IMPLIED
	xmlId	CDATA	#IMPLIED
>
<!-- CWEntry	right-recursive structure containing tree of entries [currently: 3 levels are defined in CW, SW needs analysis, reverse IPC is variable depth]
	each entry has:
	an CWIndication (the text itself, with a little markup)
	an optional CWSee also clause, defining related CW entries,
	a (may be, empty) set of  TRANSLATIONs (in one [//CW[@translationlang] or more languages)
	optionally, it may contain CWReferences (e.g. a very broad CWentry has no specified reference)
	'child' CWentries, narrowing the meaning of the main CWentry
     ATTLIST
	ID	generated identifier of the entry; type ID would not allow data development!!!
-->
<!ELEMENT CWIndication  (#PCDATA|sub|ldash|larrow|rarrow)*>
<!-- CWIndication	the text of the entry; SUB is used in CW; the CWIndication entry is subject of change during SW and reverse IPC integration
-->
<!ELEMENT CWSee (#PCDATA|sub|ldash|CWRef)*>
<!-- CWSee
	see also references; it contains:
	free text (maybe SUB or LDASH), and
	CWRefS
-->
<!ELEMENT CWRef (#PCDATA)>
<!ATTLIST CWRef
	REFID	CDATA	#REQUIRED
	SEQUENCE	CDATA	#IMPLIED
>
<!-- CWRef	reference to an CW entry
     ATTLIST
	REFID	identifier to which the reference refers; REFID would not tolerate data development!
-->
<!ELEMENT CWReferences (sref|mref)+>
<!-- CWReferences
	either single or multiple references
-->
<!-- RCL Data -->
<!ELEMENT RCL (RCLEntry+)>
<!ATTLIST RCL
	fromEdition	CDATA	#REQUIRED
	toEdition	CDATA	#REQUIRED
	mode			CDATA #IMPLIED
	documentRoot	CDATA	""
>
<!-- RCL a sequence of RCLEntries
     ATTLIST
	fromEdition: the RCL file presents in RCLEntry.symbol-endSymbol entries in fromEdition
	toEdition: RCLEntry.RCLEntryTo.newSymbol - newEndSymbol are in toEdition
     the XML file presentation is prepared to store transitive entries.
     the database representation stores one edition only!
	mode: user, new to old, old to new or errors (user interface only!)
-->
<!ELEMENT RCLEntry (RCLEntryTo*|delete)>
<!ATTLIST RCLEntry
	symbol		CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	coreSymbol	CDATA	#IMPLIED
	coreEndSymbol	CDATA	#IMPLIED
	isCore		(c|a)	#REQUIRED
	modification	(c|d|n|m)	#REQUIRED
>
<!-- RCLEntry: a sequence of transition rules stored in RCLEntryTo-s
     ATTLIST
	symbol		start of interval in the 'old' edition (= parent.fromEdition)
	endSymbol	end of interval; if ommitted, single entry interval
      modification: c: c-type modified, d: deleted, m: modified
-->
<!ELEMENT RCLEntryTo EMPTY>
<!ATTLIST RCLEntryTo
	newSymbol	CDATA	#REQUIRED
	newEndSymbol	CDATA	#IMPLIED
	coreNewSymbol	CDATA	#IMPLIED
	coreNewEndSymbol	CDATA	#IMPLIED
	isCore		(c|a)	#REQUIRED
	modification	(c|d|n|m)	#REQUIRED
>
<!-- RCLEntryTo: an interval in the 'new' edition (=parent.parent.toEdition)
     ATTLIST
	newSymbol	start of target interval
	newEndSymbol	end of target interval
      modification: c: c-type modified, n: new, m: modified
-->
<!-- RCL Data Publication -->
<!ELEMENT RCLPublication (RCLPublicationSection+)>
<!ATTLIST RCLPublication
	oldEdition	CDATA	#REQUIRED
	newEdition	CDATA	#REQUIRED
	view	(full|hierarchic) #REQUIRED
	oldView		CDATA	#REQUIRED
	newView		CDATA	#REQUIRED
	mode		(new-to-old|old-to-new|combined|manual) #REQUIRED
	documentRoot	CDATA	""
>
<!-- RCLPublication a sequence of RCLPublicationSections
     ATTLIST
	fromEdition: the RCL file presents in RCLEntry.symbol-endSymbol entries in fromEdition
	toEdition: RCLEntry.RCLEntryTo.newSymbol - newEndSymbol are in toEdition
     the XML file presentation is prepared to store transitive entries.
     the database representation stores one edition only!
	mode: new to old, old to new, combined
-->
<!ELEMENT RCLPublicationSection (RCLPublicationClass+)>
<!ATTLIST RCLPublicationSection symbol CDATA	#REQUIRED>
<!ELEMENT RCLPublicationClass (RCLPublicationEntry?,RCLPublicationSubclass*)>
<!ATTLIST RCLPublicationClass symbol CDATA	#REQUIRED>
<!ELEMENT RCLPublicationSubclass (RCLPublicationEntry?,RCLPublicationMaingroup*)>
<!ATTLIST RCLPublicationSubclass symbol CDATA	#REQUIRED>
<!ELEMENT RCLPublicationMaingroup (RCLPublicationEntry+)>
<!ATTLIST RCLPublicationMaingroup symbol CDATA	#REQUIRED>
<!ELEMENT RCLPublicationEntry (RCLPublicationFroms,RCLPublicationOlds?,RCLPublicationNews?)>
<!ELEMENT RCLPublicationFroms (RCLPublicationFrom+)>
<!ELEMENT RCLPublicationFrom EMPTY>
<!ATTLIST RCLPublicationFrom
	symbol		CDATA	#REQUIRED
	entryType       (c|i|d|n)	'c'
	endSymbol	CDATA	#IMPLIED
	endEntryType       (c|i|d|n)	'c'
	coreSymbol	CDATA	#IMPLIED
	coreEndSymbol	CDATA	#IMPLIED
	isCore		(c|a)	#REQUIRED
	modification	(c|d|n|m)	#REQUIRED
>
<!ELEMENT RCLPublicationOlds (RCLPublicationOld+)>
<!ELEMENT RCLPublicationOld EMPTY>
<!ATTLIST RCLPublicationOld
	symbol		CDATA	#REQUIRED
	entryType       (c|i|d|n)	'c'
	endSymbol	CDATA	#IMPLIED
	endEntryType       (c|i|d|n)	'c'
	coreSymbol	CDATA	#IMPLIED
	coreEndSymbol	CDATA	#IMPLIED
	isCore		(c|a)	#REQUIRED
	modification	(c|d|n|m)	#REQUIRED
>
<!ELEMENT RCLPublicationNews (RCLPublicationNew+)>
<!ELEMENT RCLPublicationNew EMPTY>
<!ATTLIST RCLPublicationNew
	symbol		CDATA	#REQUIRED
	entryType       (c|i|d|n)	'c'
	endSymbol	CDATA	#IMPLIED
	endEntryType       (c|i|d|n)	'c'
	coreSymbol	CDATA	#IMPLIED
	coreEndSymbol	CDATA	#IMPLIED
	isCore		(c|a)	#REQUIRED
	modification	(c|d|n|m)	#REQUIRED
>
<!-- Definitions browser -->
<!ELEMENT IPCDefinitions (IPCDefinitionsSection+)>
<!ATTLIST IPCDefinitions
	edition	CDATA	#REQUIRED
	view	(full|hierarchic) #REQUIRED
	documentRoot	CDATA	""
>
<!ELEMENT IPCDefinitionsSection (IPCDefinitionsClass+)>
<!ATTLIST IPCDefinitionsSection symbol CDATA	#REQUIRED>
<!ELEMENT IPCDefinitionsClass (IPCDefinitionsSubclass*)>
<!ATTLIST IPCDefinitionsClass symbol CDATA	#REQUIRED>
<!ELEMENT IPCDefinitionsSubclass (IPC-DEFINITION?,IPCDefinitionsMaingroup*)>
<!ATTLIST IPCDefinitionsSubclass symbol CDATA	#REQUIRED>
<!ELEMENT IPCDefinitionsMaingroup (IPC-DEFINITION?,IPCDefinitionsGroup*)>
<!ATTLIST IPCDefinitionsMaingroup symbol CDATA	#REQUIRED>
<!ELEMENT IPCDefinitionsGroup (IPC-DEFINITION?)>
<!ATTLIST IPCDefinitionsGroup symbol CDATA	#REQUIRED>
<!-- fulltext view is not valid for sections and classes! -->
<!-- IPCIllustrations browser -->
<!ELEMENT IPCIllustrations (IPCIllustrationsSection*)>
<!ATTLIST IPCIllustrations
	edition	CDATA	#REQUIRED
	view	(full|hierarchic) #REQUIRED
	documentRoot	CDATA	""
>
<!ELEMENT IPCIllustrationsSection (IPCIllustrationsClass*)>
<!ATTLIST IPCIllustrationsSection
	symbol CDATA	#REQUIRED
	illustrationsNo CDATA	#REQUIRED
>
<!ELEMENT IPCIllustrationsClass (illustrations?,IPCIllustrationsSubclass*)>
<!ATTLIST IPCIllustrationsClass
	symbol CDATA	#REQUIRED
	illustrationsNo CDATA	#REQUIRED
>
<!ELEMENT IPCIllustrationsSubclass (illustrations?,IPCIllustrationsMaingroup*)>
<!ATTLIST IPCIllustrationsSubclass
	symbol CDATA	#REQUIRED
	entryType CDATA	#REQUIRED
	illustrationsNo CDATA	#REQUIRED
>
<!ELEMENT IPCIllustrationsMaingroup (illustrations?,IPCIllustrationsGroup*)>
<!ATTLIST IPCIllustrationsMaingroup
	symbol CDATA	#REQUIRED
	entryType CDATA	#REQUIRED
	illustrationsNo CDATA	#REQUIRED
>
<!ELEMENT IPCIllustrationsGroup (illustrations?)>
<!ATTLIST IPCIllustrationsGroup
	symbol CDATA	#REQUIRED
	entryType CDATA	#REQUIRED
	illustrationsNo CDATA	#REQUIRED
>
<!-- fulltext view is not valid for sections, classes and subclasses! -->
<!-- Validity data -->

<!--Contacts: WIPO: Hideto Tanaka (hideto.tanaka@wipo.int).-->

<!ELEMENT ipcr-validity-list  (subclass-list+) >

<!ELEMENT subclass-list  (subclass-description,ipcr-symbol+) >

<!ELEMENT subclass-description  (section,class,subclass) >

<!ELEMENT ipcr-symbol  (main-group?,subgroup?) >

<!ATTLIST ipcr-symbol
               classification-level (P | C | O| A)   #REQUIRED
               entry-type (K | I | D)   #REQUIRED
               validity-date-from  CDATA    #REQUIRED
               validity-date-to  CDATA    #IMPLIED
               core-predecessor  CDATA    #IMPLIED  >

<!--ipcr-symbol values
	classification-level:
		P=Pre reform (i.e prior to IPC reform)
		C=Core level(i.e for BOTH Core and Advanced Level classification)
		O=valid for Core level symbol, Obsolete for the Advanced level  (i.e for Core level symbols no longer valid in the Advanced level)
		A=Advanced level (i.e Advanced level classification ONLY)

	entry-type
		K=classification symbol
		I=indexing symbol

	validity-date-from and validity-date-to
		They are in YYYYMMDD format
	For Pre-reform IPC symbols the correspondence between editions and dates is as follows:
		edition 1: from 19680901 to 19740630
		edition 2: from 19740701 to 19791231
		edition 3: from 19800101 to 19841231
		edition 4: from 19850101 to 19891231
		edition 5: from 19900101 to 19941231
		edition 6: from 19950101 to 19991231
		edition 7: from 20000101 to 20051231
-->

<!ELEMENT section  (#PCDATA) >

<!ELEMENT class  (#PCDATA) >

<!ELEMENT subclass  (#PCDATA) >

<!ELEMENT main-group  (#PCDATA) >

<!ELEMENT subgroup  (#PCDATA) >

<!-- IPC Test Scenarios -->
<!ELEMENT TestScenarioList (TestScenario+)>
<!ELEMENT TestScenario (TestUnit+,IPCErrorLists?)>
<!ATTLIST TestScenario
	scenarioName	CDATA	#REQUIRED
	remark		CDATA	#IMPLIED
>
<!ELEMENT TestUnit (TestAtom+)>
<!ATTLIST TestUnit
	unitKind		CDATA	#REQUIRED
	unitName		CDATA	#REQUIRED
	unitOrderNo		CDATA	#IMPLIED
 >
<!ELEMENT amendments (amendment+)>
<!ELEMENT TestAtom ((sessionDecisions|proposals|amendments),expectedIPCEntry*,expectedError*,ipcEntry*)>
<!ATTLIST TestAtom
 	isLoaded		(Y|N) 'N'
>
<!ELEMENT expectedIPCEntry EMPTY>
<!ATTLIST expectedIPCEntry
	symbol	 		CDATA	#IMPLIED
	endSymbol      		CDATA	#IMPLIED
	acceptanceLevel		CDATA	#IMPLIED
	entryType      		CDATA	#IMPLIED
	ipcLevel		CDATA	#IMPLIED
	language		CDATA	#IMPLIED
	coreOfEntry     	CDATA	#IMPLIED
	kind			CDATA	#IMPLIED
	isRenumbered		CDATA	#IMPLIED
	isDead			CDATA	#IMPLIED
	renumberedFrom		CDATA	#IMPLIED
	publicationEdition	CDATA	#IMPLIED
	priorityOrder		CDATA	#IMPLIED
	amendmentState		CDATA	#IMPLIED
	positive		CDATA	#IMPLIED
>
<!ELEMENT expectedError EMPTY>
<!ATTLIST expectedError
	proposalId	CDATA	#IMPLIED
	proposalDate	CDATA	#IMPLIED
	projectType	CDATA	#IMPLIED
	projectNumber	CDATA	#IMPLIED
	rapporteur	CDATA	#IMPLIED
	translator	CDATA	#IMPLIED
	sessionCode	CDATA	#IMPLIED
	sessionNumber	CDATA	#IMPLIED
	amendmentId	CDATA	#IMPLIED
	amendmentType	CDATA	#IMPLIED
	remark		CDATA	#IMPLIED
	errorDate	CDATA	#IMPLIED
>
<!--
	IPC Definitions
-->
<!ELEMENT IPC-DEFINITIONS (IPC-DEFINITION+)>
<!ATTLIST IPC-DEFINITIONS
	SUBCLASS	CDATA	#REQUIRED
>
<!-- IPC-DEFINITIONS	  set of definitions
Structure:
	IPC-DEFINITION+   a definition XML file or Word document may contain more definitions
Attributes:
	SUBCLASS          the code of the subclass affected
-->
<!ENTITY % TEXT "(#PCDATA|BR|SUP|SUB|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
	UND     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
-->
<!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)+|(IMMEDIATE?,CONTAINED?))>
<!-- 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
	)+
Generated only:
	IMMEDIATE		references to large subject matter in the text of the subclass/maingroup
	CONTAINED		references to large subject matter in the text of the maingroups/groups of the subclass ormaingroup
-->
<!ELEMENT LIMITINGREFERENCES    ((REFERENCETABLE?,(SUBHEADING,REFERENCETABLE?)*)|(IMMEDIATE?,CONTAINED?))>
<!-- LIMITINGREFERENCES
	REFERENCETABLE		limiting references is a simple reference table
Generated only:
	IMMEDIATE		references to large subject matter in the text of the subclass/maingroup
	CONTAINED		references to large subject matter in the text of the maingroups/groups of the subclass ormaingroup
-->
<!ELEMENT INFORMATIVEREFERENCES ((REFERENCETABLE?,(SUBHEADING,REFERENCETABLE?)*)|(IMMEDIATE?,CONTAINED?))>
<!-- 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 B   (#PCDATA|SREF|MREF|GREF|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
>
<!--
  GENERATED DEFINITIONS
-->
<!ELEMENT GENERATED-DEFINITIONS (GENERATED-DEFINITION+)>
<!ELEMENT GENERATED-DEFINITION (DEFINITION-TITLE,DEFINITION-STATEMENT?,NOTES?,LARGESUBJECTS?,NONGENERALREFERENCES?,GENERALREFERENCES?,REVERSEREFERENCES?,GLOSSARYOFTERMS?) >
<!ATTLIST GENERATED-DEFINITION
	ID	CDATA	#REQUIRED
>
<!ELEMENT REVERSEREFERENCES (REVERSEREFERENCE+)>
<!ELEMENT REVERSEREFERENCE (PARAGRAPH-TEXT)>
<!ATTLIST REVERSEREFERENCE
	FROM	CDATA	#REQUIRED
	TO	CDATA	#IMPLIED
	ID	CDATA	#REQUIRED
>
<!ELEMENT IMMEDIATE (REFERENCEROW+)>
<!ELEMENT CONTAINED (REFERENCEROW+)>
<!ELEMENT NONGENERALREFERENCES (IMMEDIATE?,CONTAINED?)>
<!ELEMENT GENERALREFERENCES (IMMEDIATE?,CONTAINED?)>
<!ELEMENT NOTES (NOTEAFTER?,NOTEBEFORE?,NOTES*)>
<!ATTLIST NOTES
	ID 	CDATA	#REQUIRED
>
<!ELEMENT NOTEAFTER (P+)>
<!ELEMENT NOTEBEFORE (P+)>
<!ELEMENT P %TEXT;>
<!ATTLIST P
	class CDATA	#IMPLIED>
<!ELEMENT A	(#PCDATA|SP)*>
<!ATTLIST A
	href	CDATA	#REQUIRED
>
<!ELEMENT flatNotes	(flatNote*)>
<!ATTLIST flatNotes
	mode CDATA	#IMPLIED
	type CDATA	#IMPLIED
>
<!ELEMENT flatNote	((text,references?)|(references,text?))>
<!ATTLIST flatNote
	parentId CDATA	#IMPLIED
	id CDATA	#IMPLIED
	myid CDATA	#IMPLIED
	type CDATA	#IMPLIED
	num CDATA	#IMPLIED
	indent CDATA	#IMPLIED
>
