<!--  ENTITIES -->
<!--  special characters macro; see bottom of file for
     definitions of these characters
  -->


<!ELEMENT ipcEntriesList (ipcEntries*)>



<!ELEMENT ipcEntries (ipcEntry+)>
<!ATTLIST ipcEntries
	ipcSymbol	CDATA	#IMPLIED
	displayMode	CDATA	#IMPLIED
	edition		CDATA	#IMPLIED
	ipcLevel	CDATA	#IMPLIED
	lang		CDATA	#IMPLIED
	documentRoot	CDATA	""
>

<!ELEMENT ipcEntry ANY>
<!ATTLIST ipcEntry
	symbol		CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	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|B|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
>


<!--  fulltext view is not valid for sections, classes and subclasses! -->
<!ELEMENT flatNotes	(flatNote*)>
<!ATTLIST flatNotes
	mode CDATA	#IMPLIED
	type CDATA	#IMPLIED
>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  textBody: various body part of the text of an entry
Structure:
	one of note, index, deleted or title
	note: for kind='n'
	index: for kind='i'
	deleted: for kind='d'
	title: for all other cases, including guidance heading and subsection titles
-->

<!ELEMENT textBody ANY>

<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  deleted: body of a deleted entry
Structure:
	tupple of transferredTo and coveredBy
Comment:
	both optional to allow deletion of elements
	RIPCIS: 'delete' is an amendment type and 'deleted' is the result (in normal case)
	of a 'delete' amendment
-->
<!ELEMENT deleted ANY>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  transferredTo
Structure:
	list of mrefs or srefs (multiple or single references)
-->
<!ELEMENT transferredTo ANY>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  coveredBy
Structure:
	list of mrefs or srefs (multiple or single references)
-->
<!ELEMENT coveredBy     ANY>

<!--  note: body for a note
Structure:
	list of noteParagraphs that may embedd subnotes
Attributes:
 	type: type of prefix;
		e.g. Roman is like I, Alpha: A. (seldomly used)
	indent: indentation depth (if not automatic)
-->

<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!ELEMENT note ANY>
<!ATTLIST note
	type  	(none|table|number|Roman|roman|Alpha|alpha)	'none'
	indent	CDATA	#IMPLIED
>

<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  noteParagraph: text of a single paragraph and its subparagraphs
Structure: two independent 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
Attributes:
	edition: each single paragraph has an edition attribute,
		that may be different from the attribute of the embedding ipcEntry
-->

<!ELEMENT noteParagraph ANY>
<!ATTLIST noteParagraph
	edition		CDATA	#IMPLIED
>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  orphan: out-of-sequence subparagraph
Structure: tupple of text, optional subnote and optional orphan
	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
Attributes:
	indent: presentation indentation when irregular
	edition: an orphan may have an edition mark in []-s
-->
<!ELEMENT orphan ANY>
<!ATTLIST orphan
	indent	CDATA	#IMPLIED
	edition		CDATA	#IMPLIED
>

<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  subnote: sequence of noteParagraphs
	used to embedd as subparagraphs of noteParagraphs
Structure:
	list of noteParagraphs
Attributes: as note
-->
<!ELEMENT subnote ANY>
<!ATTLIST subnote
	type  	(none|table|number|Roman|roman|Alpha|alpha|bullet)	'none'
	indent	CDATA	#IMPLIED
>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  index: body of subclass, class and subsection indexes
Structure:
	list of indexEntries (that may include further indexEntries
Comment:
	indexEntries on the 0th depth are those in full capitals
-->
<!ELEMENT index ANY>

<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  indexEntry: one paragraph of an index
Structure:
	a text, associated references and contained indexEntries
	references are optional
Comment:
	at leaves references should not be empty
-->
<!ELEMENT indexEntry ANY>



<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  title: body of structured elements as described in Guide: multipart title
Structure:
	list of titlePart (separated by ';')
-->
<!ELEMENT title ANY>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  titlePart: text and associated references with texts
Structure:
	tupple of text and list of entryReferences
Comment:
	the entryReferences, if any, are put into parentheses
	and separated by ';'-s
-->
<!ELEMENT titlePart ANY>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  entryReference: text with layout and references
Structure:
	PCDATA and special characters,
	marked up with underline, super/subscript, image, references
Comment:
	usual format: text,references+
 	however simplification was required, e.g.  'takes precedence' clause is reverse order
-->
<!ELEMENT entryReference ANY>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  references: list of references with separators,
		 used in notes and indexes
Structure:
	PCDATA (separators) and references
-->
<!ELEMENT references ANY>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	COMMON
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->

<!ELEMENT comment ANY>

<!--  text: marked-up text -->
<!ELEMENT text ANY>

<!--  sref, mref: references to IPC symbols
Attributes:
	ref:	IPC symbol in A99AZZZMGGZZZZ format
	endRef:	end of reference interval IPC symbol in A99AZZZMGGZZZZ format
	refType: compatibility with prereform, / or :
	endRefType: type of the end of reference type
	reference level: c(ore) a(advanced), default: core
		references are rolled up in the core publication
	refAdvanced: non-rolled-up reference
	endRefAdvanced: non-rolled-up reference of the end of interval
-->

<!ELEMENT sref EMPTY>
<!ATTLIST sref
	ref		CDATA	#REQUIRED
	refType		CDATA	"/"
	refLevel	(c|i|a)		'c'
	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'
	refAdvanced	CDATA	#IMPLIED
	endRefAdvanced	CDATA	#IMPLIED
>


<!--  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--  Character markup elements
Comment:
	embedding not allowed for simplicity
-->
<!ELEMENT sub ANY>
<!ELEMENT sup ANY>
<!ELEMENT u   ANY>
<!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>

<!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
	project		CDATA 		#IMPLIED
	amendmentState	CDATA	#IMPLIED
	ipcLevel	(c|b|a)		#REQUIRED
	errorText	CDATA 		#IMPLIED
	errorSeverity	CDATA 		#IMPLIED
>
<!-- 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)>
<!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)>
<!ATTLIST modify
	symbol	CDATA	#REQUIRED
	entryType	(c|i|d|n)	#IMPLIED
	ipcLevel	(c|a)		#IMPLIED
	kind	CDATA	#IMPLIED
	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)>
<!ATTLIST newunstructured
	symbol	CDATA	#REQUIRED
	endSymbol	CDATA	#IMPLIED
	kind	CDATA	#REQUIRED
	ipcLevel	(c|a)	"c"
>
<!ELEMENT modifyunstructured (index|note|title)>
<!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	#IMPLIED
	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
>

<!ELEMENT flatNote	ANY>
<!ATTLIST flatNote
	parentId 	CDATA	#IMPLIED
	id		CDATA	#IMPLIED
	myid		CDATA	#IMPLIED
	type		CDATA	#IMPLIED
	num		CDATA	#IMPLIED
	indent		CDATA	#IMPLIED
	outTypeModec	CDATA	#IMPLIED
	outType		CDATA	#IMPLIED
	outTypeKind	CDATA	#IMPLIED
	notetype	CDATA	#IMPLIED
	outTypeModeo	CDATA	#IMPLIED
	newnum		CDATA	#IMPLIED
	edition		CDATA	#IMPLIED
	to		CDATA	#IMPLIED
	Orphan		CDATA	#IMPLIED
	indentChange	CDATA	#IMPLIED
	listtypechangedto CDATA	#IMPLIED
	listtypechangedfrom CDATA	#IMPLIED
	new-edition	CDATA	#IMPLIED
	del-edition	CDATA	#IMPLIED
	mod-edition	CDATA	#IMPLIED
>
<!-- |last3Word|lastWord|firstWord|bar|first3Word|textnew|textdel	-->
<!ELEMENT last3Word	ANY>
<!ELEMENT lastWord	ANY>
<!ELEMENT firstWord	ANY>
<!ELEMENT bar		ANY>
<!ELEMENT first3Word	ANY>

<!ELEMENT textnew	ANY>
<!ELEMENT textdel	ANY>

