<?xml version="1.0"?>
<!DOCTYPE kanjidic2 [
	<!-- Version 1.3
	This is the DTD of the XML-format kanji file combining information from
	the KANJIDIC and KANJD212 files. It is intended to be largely self-
	documenting, with each field being accompanied by an explanatory
	comment.

	The file covers the following kanji:
	(a) the 6,355 kanji from JIS X 0208;
	(b) the 5,801 kanji from JIS X 0212;
	(c) the 3,625 kanji from JIS X 0213 as follows:
		(i) the 2,741 kanji which are also in JIS X 0212 have
		JIS X 0213 code-points (kuten) added to the existing entry;
		(ii) the 884 "new" kanji have new entries.

	At the end of the explanation for a number of fields there is a tag
	with the format [N]. This indicates the leading letter(s) of the
	equivalent field in the KANJIDIC and KANJD212 files.

	The KANJIDIC documentation should also be read for additional 
	information about the information in the file.
	-->
<!ELEMENT kanjidic2 (header,character*)>
<!ELEMENT header (file_version,database_version,date_of_creation)>
<!--
	The single header element will contain identification information
	about the version of the file 
	-->
<!ELEMENT file_version (#PCDATA)>
<!--
	This field denotes the version of kanjidic2 structure, as more
	than one version may exist.
	-->
<!ELEMENT database_version (#PCDATA)>
<!--
	The version of the file, in the format YYYY-NN, where NN will be
	a number starting with 01 for the first version released in a
	calendar year, then increasing for each version in that year.
	-->
<!ELEMENT date_of_creation (#PCDATA)>
<!--
	The date the file was created in international format (YYYY-MM-DD).
	-->
<!ELEMENT character (literal,codepoint, radical, misc, dic_number?, query_code?, reading_meaning?,nanori?)*>
<!ELEMENT literal (#PCDATA)>
<!--
	The character itself in UTF8 coding.
	-->
<!ELEMENT codepoint (cp_value+)>
	<!-- 
	The codepoint element states the code of the character in the various
	character set standards.
	-->
<!ELEMENT cp_value (#PCDATA)>
	<!-- 
	The cp_value contains the codepoint of the character in a particular
	standard. The standard will be identified in the cp_type attribute.
	-->
<!ATTLIST cp_value cp_type CDATA #REQUIRED>
	<!-- 
	The cp_type attribute states the coding standard applying to the
	element. The values assigned so far are:
		jis208 - JIS X 0208-1997 - kuten coding (nn-nn)
		jis212 - JIS X 0212-1990 - kuten coding (nn-nn)
		jis213 - JIS X 0213-2000 - kuten coding (p-nn-nn)
		ucs - Unicode 4.0 - hex coding (4 or 5 hexadecimal digits)
	-->
<!ELEMENT radical (rad_value+)>
<!ELEMENT rad_value (#PCDATA)>
	<!-- 
	The radical number, in the range 1 to 214. The particular
	classification type is stated in the rad_type attribute.
	-->
<!ATTLIST rad_value rad_type CDATA #REQUIRED>
	<!-- 
	The rad_type attribute states the type of radical classification.
		classical - as recorded in the KangXi Zidian.
		nelson - as used in the Nelson "Modern Japanese-English 
		Character Dictionary" (i.e. the Classic, not the New Nelson).
		This will only be used where Nelson reclassified the kanji.
	-->
<!ELEMENT misc (grade?, stroke_count+, variant*, freq*, rad_name*)>
<!ELEMENT grade (#PCDATA)>
	<!-- 
	The Jouyou Kanji grade level. 1 through 6 indicate the grade in which
	the kanji is taught in Japanese schools. 8 indicates it is one of the
	remaining Jouyou Kanji to be learned in junior high school, and 9 
	indicates it is a Jinmeiyou (for use in names) kanji. [G]
	-->
<!ELEMENT stroke_count (#PCDATA)>
	<!-- 
	The stroke count of the kanji, including the radical. If more than 
	one, the first is considered the accepted count, while subsequent ones 
	are common miscounts. (See Appendix E. of the KANJIDIC documentation
	for some of the rules applied when counting strokes in some of the 
	radicals.) [S]
	-->
<!ELEMENT variant (#PCDATA)>
	<!-- 
	A cross-reference code to another kanji, usually regarded as a variant.
	The type of cross-reference is given in the var_type attribute.
	-->
<!ATTLIST variant var_type CDATA #REQUIRED>
	<!-- 
	The var_type attribute indicates the type of variant code. The current
	values are: 
		jis208 - in JIS X 0208 - kuten coding
		jis212 - in JIS X 0212 - kuten coding
		jis213 - in JIS X 0213 - kuten coding
		deroo - De Roo number - numeric
		njecd - Halpern NJECD index number - numeric
		s_h - The Kanji Dictionary (Spahn & Hadamitzky) - descriptor
		nelson - "Classic" Nelson - numeric
		oneill - Japanese Names (O'Neill) - numeric
	-->
<!ELEMENT freq (#PCDATA)>
	<!-- 
	A frequency-of-use ranking. The 2,500 most-used characters have a 
	ranking; those characters that lack this field are not ranked. The 
	frequency is a number from 1 to 2,500 that expresses the relative 
	frequency of occurrence of a character in modern Japanese. This is
	based on a survey in newspapers, so it is biassed towards kanji
	used in newspaper articles. The discrimination between the less
	frequently used kanji is not strong.
	-->
<!ELEMENT rad_name (#PCDATA)>
	<!-- 
	When the kanji is itself a radical and has a name, this element
	contains the name (in hiragana.) [T2]
	-->
<!ELEMENT dic_number (dic_ref+)>
	<!-- 
	This element contains the index numbers and similar unstructured
	information such as page numbers in a number of published dictionaries,
	and instructional books on kanji.
	-->
<!ELEMENT dic_ref (#PCDATA)>
	<!-- 
	Each dic_ref contains an index number. The particular dictionary,
	etc. is defined by the dr_type attribute.
	-->
<!ATTLIST dic_ref dr_type CDATA #REQUIRED>
	<!-- 
	The dr_type defines the dictionary or reference book, etc. to which
	dic_ref element applies. The initial allocation is:
	  nelson_c - "Modern Reader's Japanese-English Character Dictionary",  
	  	edited by Andrew Nelson (now published as the "Classic" 
	  	Nelson).
	  nelson_n - "The New Nelson Japanese-English Character Dictionary", 
	  	edited by John Haig.
	  halpern_njecd - "New Japanese-English Character Dictionary", 
	  	edited by Jack Halpern.
	  halpern_kkld - "Kanji Learners Dictionary" (Kodansha) edited by 
	  	Jack Halpern.
	  heisig - "Remembering The  Kanji"  by  James Heisig.
	  gakken - "A  New Dictionary of Kanji Usage" (Gakken)
	  oneill_names - "Japanese Names", by P.G. O'Neill. 
	  oneill_kk - "Essential Kanji" by P.G. O'Neill.
	  moro - "Daikanwajiten" compiled by Morohashi. For some kanji two
	  	additional attributes are used: m_vol:  the volume of the
	  	dictionary in which the kanji is found, and m_page: the page
	  	number in the volume.
	  henshall - "A Guide To Remembering Japanese Characters" by
	  	Kenneth G.  Henshall.
	  sh_kk - "Kanji and Kana" by Spahn and Hadamitzky.
	  sakade - "A Guide To Reading and Writing Japanese" edited by
	  	Florence Sakade.
	  henshall3 - "A Guide To Reading and Writing Japanese" 3rd
		edition, edited by Henshall, Seeley and De Groot.
	  tutt_cards - Tuttle Kanji Cards, compiled by Alexander Kask.
	  crowley - "The Kanji Way to Japanese Language Power" by
	  	Dale Crowley.
	  kanji_in_context - "Kanji in Context" by Nishiguchi and Kono.
	  busy_people - "Japanese For Busy People" vols I-III, published
		by the AJLT. The codes are the volume.chapter.
	  kodansha_compact - the "Kodansha Compact Kanji Guide".
	-->
<!ATTLIST dic_ref m_vol CDATA #IMPLIED>
	<!-- 
	See above under "moro".
	-->
<!ATTLIST dic_ref m_page CDATA #IMPLIED>
	<!-- 
	See above under "moro".
	-->
<!ELEMENT query_code (q_code+)>
	<!-- 
	These codes contain information relating to the glyph, and can be used
	for finding a required kanji. The type of code is defined by the
	qc_type attribute.
	-->
<!ELEMENT q_code (#PCDATA)>
	<!--
	The q_code contains the actual query-code value, according to the
	qc_type attribute.
	-->
<!ATTLIST q_code qc_type CDATA #REQUIRED>
	<!-- 
	The q_code attribute defines the type of query code. The current values
	are:
	  skip -  Halpern's SKIP (System  of  Kanji  Indexing  by  Patterns) 
	  	code. The  format is n-nn-nn.  See the KANJIDIC  documentation 
	  	for  a description of the code and restrictions on  the 
	  	commercial  use  of this data. [P]

	  sh_desc - the descriptor codes for The Kanji Dictionary (Tuttle 
	  	1996) by Spahn and Hadamitzky. They are in the form nxnn.n,  
	  	e.g.  3k11.2, where the  kanji has 3 strokes in the 
	  	identifying radical, it is radical "k" in the SH 
	  	classification system, there are 11 other strokes, and it is 
	  	the 2nd kanji in the 3k11 sequence. (I am very grateful to 
	  	Mark Spahn for providing the list of these descriptor codes 
	  	for the kanji in this file.) [I]
	  four_corner - the "Four Corner" code for the kanji. This is a code 
	  	invented by Wang Chen in 1928. See the KANJIDIC documentation 
	  	for  an overview of  the Four Corner System. [Q]

	  deroo - the codes developed by the late Father Joseph De Roo, and 
	  	published in  his book "2001 Kanji" (Bojinsha). Fr De Roo 
	  	gave his permission for these codes to be included. [DR]
	  misclass - a possible misclassification of the kanji according
		to one of the code types. (See the "Z" codes in the KANJIDIC
		documentation for more details.)
	  
	-->
<!ELEMENT reading_meaning (rmgroup*, nanori*)>
	<!-- 
	The readings for the kanji in several languages, and the meanings, also
	in several languages. The readings and meanings are grouped to enable
	the handling of the situation where the meaning is differentiated by 
	reading. [T1]
	-->
<!ELEMENT nanori (#PCDATA)>
	<!-- 
	Japanese readings that are now only associated with names.
	-->
<!ELEMENT rmgroup (reading*, meaning*)>
<!ELEMENT reading (#PCDATA)>
	<!-- 
	The reading element contains the reading or pronunciation
	of the kanji.
	-->
<!ATTLIST reading r_type CDATA #REQUIRED>
	<!-- 
	The r_type attribute defines the type of reading in the reading
	element. The current values are:
	  pinyin - the modern PinYin romanization of the Chinese reading 
	  	of the kanji. The tones are represented by a concluding 
	  	digit. [Y]
	  korean_r - the romanized form of the Korean reading(s) of the 
	  	kanji.  The readings are in the (Republic of Korea) Ministry 
	  	of Education style of romanization. [W]
	  korean_h - the Korean reading(s) of the kanji in hangul.
	  ja_on - the "on" Japanese reading of the kanji, in katakana. A
	  	second attribute r_status, if present, will indicate with
	  	a value of "jy" whether the reading is approved for a
	  	"Jouyou kanji".
	  ja_kun - the "kun" Japanese reading of the kanji, in hiragana. 
	  	Where relevant the okurigana is also included separated by a 
	  	".". Readings associated with prefixes and suffixes are 
	  	marked with a "-". A second attribute r_status, if present, 
	  	will indicate with a value of "jy" whether the reading is 
	  	approved for a "Jouyou kanji".
	-->
<!ATTLIST reading r_status CDATA #IMPLIED>
	<!-- 
	See under ja_on and ja_kun above.
	-->
<!ELEMENT meaning (#PCDATA)>
	<!-- 
	The meaning associated with the kanji.
	-->
<!ATTLIST meaning m_lang CDATA #IMPLIED>
	<!-- 
	The m_lang attribute defines the target language of the meaning. It 
	will be coded using the two-letter language code from the ISO 639 
	standard. When absent, the value "en" (i.e. English) is implied. [{}]
	-->
] >
<kanjidic2>
</kanjidic2>
