 <!--
	News Industry Text Format
	Document Type Definition - Version 2.5
	http://www.nitf.org/

	Copyright (c) 2000. All Rights Reserved.
	International Press Telecommunications Council
	http://www.iptc.org
		
	Last changed: 9 August 2000  wb/kr/ak
	
	For the list of modifications from previous releases, see:
		http://www.nitf.org/recent-modifications.html 

	For the list of proposed modifications, see:
		http://www.nitf.org/proposed-changes.html 
-->



<!ENTITY % enriched-text '
	#PCDATA
	| chron
	| copyrite
	| event
	| function
	| location
	| money
	| num
	| object.title
	| org
	| person
	| postaddr
	| virtloc
	| a
	| br
	| em
	| lang
	| pronounce
	| q
	'>

<!ENTITY % block.head "dateline?, copyrite?, abstract?">
<!ENTITY % block.content "p | hl2 | table | media | ol | ul | dl | bq | fn | note | pre | hr">
<!ENTITY % block.end "datasource?">


<!ENTITY % global-attributes '
	id 	ID 						#IMPLIED
	'>
<!ENTITY % common-attributes '
	%global-attributes;
	class 	NMTOKENS 					#IMPLIED
	style 	CDATA 						#IMPLIED
	lang 	NMTOKEN 					#IMPLIED
	dir 	(ltr | rtl) 					#IMPLIED
	'>
<!ENTITY % cell.align '
	align 	(left | center | right | justify | char) 	#IMPLIED
	char 	CDATA 						#IMPLIED
	charoff CDATA 						#IMPLIED
	'>
<!ENTITY % cell.valign '
	valign 	(top | middle | bottom | baseline) 		#IMPLIED
	'>
<!ENTITY % url.link '
	md 	CDATA 						#IMPLIED
	'>
<!ENTITY % boolean '(true | false)'>


<!ELEMENT nitf (head, body)>
<!ATTLIST nitf
	%global-attributes;
	uno 		CDATA 		#IMPLIED
	version 	CDATA 		#FIXED 		"-//IPTC-NAA//DTD NITF-XML 2.1//EN"
	change.date 	CDATA 		#FIXED 		"4 July 2000"
	change.time 	CDATA 		#FIXED 		"1900"
	baselang 	CDATA 		#IMPLIED
	class 		NMTOKENS 	#IMPLIED
	>
	

<!ELEMENT head (title?, meta*, tobject?, iim?, docdata?, pubdata*, revision-history*)>
<!ATTLIST head
	%global-attributes;
	>
	
<!ELEMENT title (#PCDATA)>
<!ATTLIST title
	%global-attributes;
	type 	(
		main
		| subtitle
		| parttitle
		| alternate
		| abbrev
		| other
		) 	#IMPLIED
	>
	
<!ELEMENT meta EMPTY>
<!ATTLIST meta
	%global-attributes;
	http-equiv 	NMTOKEN 	#IMPLIED
	name 		NMTOKEN 	#IMPLIED
	content 	CDATA 		#REQUIRED
	>
	
<!ELEMENT tobject (tobject.property*, tobject.subject*)>
<!ATTLIST tobject
	%global-attributes;
	tobject.type 		CDATA 	"news"
	>
	
	<!ELEMENT tobject.property EMPTY>
	<!ATTLIST tobject.property
		%global-attributes;
		tobject.property.type 	CDATA 	"current"
		>
		
	<!ELEMENT tobject.subject  EMPTY>
	<!ATTLIST tobject.subject
		%global-attributes;
		tobject.subject.ipr 		CDATA 		"IPTC"
		tobject.subject.refnum 		NMTOKEN 	#REQUIRED
		tobject.subject.code 		CDATA 		#IMPLIED
		tobject.subject.type 		CDATA 		#IMPLIED
		tobject.subject.matter 		CDATA 		#IMPLIED
		tobject.subject.detail 		CDATA 		#IMPLIED
		>
		
<!ELEMENT iim (ds*)>
<!ATTLIST iim
	%global-attributes;
	ver 	NMTOKEN 	#IMPLIED
	>
	
	<!ELEMENT ds EMPTY>
	<!ATTLIST ds
		%global-attributes;
		num 		NMTOKEN 	#REQUIRED
		value 		CDATA 		#IMPLIED
		>
		
<!ELEMENT docdata (
	correction
	| evloc
	| doc-id
	| del-list
	| urgency
	| fixture
	| date.issue
	| date.release
	| date.expire
	| doc-scope
	| series
	| ed-msg
	| du-key
	| doc.copyright
	| doc.rights
	| key-list
	)*>
<!ATTLIST docdata
	%global-attributes;
	>
	
	<!ELEMENT correction EMPTY>
	<!ATTLIST correction
		%global-attributes;
		info 		CDATA 	#IMPLIED
		id-string 	CDATA 	#IMPLIED
		reg-src 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT evloc EMPTY>
	<!ATTLIST evloc
		%global-attributes;
		iso-cc 		CDATA 	#IMPLIED
		state-prov 	CDATA 	#IMPLIED
		county-dist 	CDATA 	#IMPLIED
		city 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT doc-id EMPTY>
	<!ATTLIST doc-id
		%global-attributes;
		regsrc 		CDATA 	#IMPLIED
		id-string 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT del-list (from-src)*>
	<!ATTLIST del-list
		%global-attributes;
		>
		
		<!ELEMENT from-src EMPTY>
		<!ATTLIST from-src
			%global-attributes;
			src-name 	CDATA 	#IMPLIED
			level-number 	CDATA 	#IMPLIED
			>
			
	<!ELEMENT urgency EMPTY>
	<!ATTLIST urgency
		%global-attributes;
		ed-urg 		NMTOKEN 	#IMPLIED
		>
		
	<!ELEMENT fixture EMPTY>
	<!ATTLIST fixture
		%global-attributes;
		fix-id 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT date.issue EMPTY>
	<!ATTLIST date.issue
		%global-attributes;
		norm 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT date.release EMPTY>
	<!ATTLIST date.release
		%global-attributes;
		norm 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT date.expire EMPTY>
	<!ATTLIST date.expire
		%global-attributes;
		norm 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT doc-scope EMPTY>
	<!ATTLIST doc-scope
		%global-attributes;
		scope 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT series EMPTY>
	<!ATTLIST series
		%global-attributes;
		series.name 		CDATA 		#IMPLIED
		series.part 		NMTOKEN 	"0"
		series.totalpart 	NMTOKEN 	"0"
		>
		
	<!ELEMENT ed-msg EMPTY>
	<!ATTLIST ed-msg
		%global-attributes;
		msg-type 	CDATA 	#IMPLIED
		info 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT du-key EMPTY>
	<!ATTLIST du-key
		%global-attributes;
		generation 	NMTOKEN 	#IMPLIED
		part 		NMTOKEN 	#IMPLIED
		version 	NMTOKEN 	#IMPLIED
		key 		CDATA 		#IMPLIED
		>
		
	<!ELEMENT doc.copyright EMPTY>
	<!ATTLIST doc.copyright
		%global-attributes;
		year 		NMTOKEN 	#IMPLIED
		holder 		CDATA 		#IMPLIED
		>
		
	<!ELEMENT doc.rights EMPTY>
	<!ATTLIST doc.rights
		%global-attributes;
		owner 		CDATA 		#IMPLIED
		startdate 	CDATA 		#IMPLIED
		enddate 	CDATA 		#IMPLIED
		agent 		CDATA 		#IMPLIED
		geography 	CDATA 		#IMPLIED
		location-code 	CDATA 		#IMPLIED
		code-source 	CDATA 		#IMPLIED
		type 		CDATA 		#IMPLIED
		limitations 	CDATA 		#IMPLIED
		>
		
	<!ELEMENT key-list (keyword)*>
	<!ATTLIST key-list
		%global-attributes;
		>
		
		<!ELEMENT keyword EMPTY>
		<!ATTLIST keyword
			%global-attributes;
			key 		CDATA 	#IMPLIED
			>
			
<!ELEMENT pubdata EMPTY>
<!ATTLIST pubdata
	%global-attributes;
	type 			(
				print
				| audio
				| video
				| web
				| appliance
				| other
				) 		#IMPLIED
	item-length 		CDATA 		#IMPLIED
	unit-of-measure 	(
				word
				| character
				| byte
				| inch
				| pica
				| cm
				| hour
				| minute
				| second
				| other
				) 		#IMPLIED
	date.publication 	CDATA 		#IMPLIED
	name 			CDATA 		#IMPLIED
	issn 			CDATA 		#IMPLIED
	volume 			CDATA 		#IMPLIED
	number 			CDATA 		#IMPLIED
	issue 			CDATA 		#IMPLIED
	edition.name 		CDATA 		#IMPLIED
	edition.area 		CDATA 		#IMPLIED
	position.section 	CDATA 		#IMPLIED
	position.sequence 	CDATA 		#IMPLIED
	ex-ref 			CDATA 		#IMPLIED
	>
	
<!ELEMENT revision-history EMPTY>
<!ATTLIST revision-history
	%global-attributes;
	name 		CDATA 			#IMPLIED
	function 	(
			writer-author
			| editor
			| producer
			| archivist
			| videographer
			| graphic-artist
			| photographer
			| statistician
			| other
			) 			#IMPLIED
	norm 		CDATA 			#IMPLIED
	comment 	CDATA 			#IMPLIED
	>
	

<!ELEMENT body (body.head?, body.content*, body.end?)>
<!ATTLIST body
	%common-attributes;
	background 	CDATA 		#IMPLIED
	>
	

<!ELEMENT body.head (
	hedline?,
	note*,
	rights?,
	byline*,
	distributor?,
	dateline*,
	abstract?,
	series?
	)>
<!ATTLIST body.head
	%global-attributes;
	>
	
<!ELEMENT hedline (hl1, hl2*)>
<!ATTLIST hedline
	%global-attributes;
	>
	
	<!ELEMENT hl1 (%enriched-text;)*>
	<!ATTLIST hl1 %common-attributes;>
	
	<!ELEMENT hl2 (%enriched-text;)*>
	<!ATTLIST hl2 %common-attributes;>
	
<!ELEMENT note (body.content)+>
<!ATTLIST note
	%common-attributes;
	noteclass 	(
			cpyrt
			| end
			| hd
			| editorsnote
			| trademk
			| undef
			) 			#IMPLIED
	type 		(std | pa | npa) 	"std"
	src 		CDATA 			#IMPLIED
	%url.link;
	>
	
<!ELEMENT rights (
	#PCDATA
	| rights.owner
	| rights.startdate
	| rights.enddate
	| rights.agent
	| rights.geography
	| rights.type
	| rights.limitations
	)*>
<!ATTLIST rights
	%global-attributes;
	>
	
	<!ELEMENT rights.owner (#PCDATA)>
	<!ATTLIST rights.owner
		%global-attributes;
		contact 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT rights.startdate (#PCDATA)>
	<!ATTLIST rights.startdate
		%global-attributes;
		norm 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT rights.enddate (#PCDATA)>
	<!ATTLIST rights.enddate
		%global-attributes;
		norm 		CDATA 	#IMPLIED
		>
		
	<!ELEMENT rights.agent (#PCDATA)>
	<!ATTLIST rights.agent
		%global-attributes;
		contact 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT rights.geography (#PCDATA)>
	<!ATTLIST rights.geography
		%global-attributes;
		location-code 	CDATA 	#IMPLIED
		code-source 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT rights.type (#PCDATA)>
	<!ATTLIST rights.type
		%global-attributes;
		>
		
	<!ELEMENT rights.limitations (#PCDATA)>
	<!ATTLIST rights.limitations
		%global-attributes;
		>
		
<!ELEMENT byline (#PCDATA | person | byttl | location | virtloc)*>
<!ATTLIST byline
	%global-attributes;
	>
	
	<!ELEMENT byttl (#PCDATA | org )*>
	<!ATTLIST byttl
		%global-attributes;
		>
		
<!ELEMENT distributor (#PCDATA | org)*>
<!ATTLIST distributor
	%global-attributes;
	>
	
<!ELEMENT dateline (#PCDATA | location | story.date)*>
<!ATTLIST dateline %common-attributes;>
	
	<!ELEMENT story.date (#PCDATA)>
	<!ATTLIST story.date
		%global-attributes;
		norm 		CDATA 	#IMPLIED
		>
		
<!ELEMENT abstract (%block.content;)+>
<!ATTLIST abstract
	%global-attributes;
	>
	

<!ELEMENT copyrite (#PCDATA | copyrite.year | copyrite.holder)*>
<!ATTLIST copyrite
	%global-attributes;
	>
	
	<!ELEMENT copyrite.year (#PCDATA)>
	<!ATTLIST copyrite.year
		%global-attributes;
		>
		
	<!ELEMENT copyrite.holder (#PCDATA)>
	<!ATTLIST copyrite.holder
		%global-attributes;
		>
		

<!ELEMENT body.content (block | %block.content;)*>
<!ATTLIST body.content
	%global-attributes;
	>
	
<!ELEMENT block ((%block.head;)?, (%block.content;)*, (%block.end;)?)>
<!ATTLIST block %common-attributes;>
	
<!ELEMENT p (%enriched-text;)*>
<!ATTLIST p
	%common-attributes;
	lede 		%boolean; 	#IMPLIED
	summary 	%boolean; 	#IMPLIED
	optional-text 	%boolean; 	#IMPLIED
	>
	

<!ELEMENT table (caption?, (col* | colgroup*), thead?, tfoot?, tbody+)>
<!ATTLIST table
	%common-attributes;
	tabletype 	ENTITY 		#IMPLIED
	align 		(
			left
			| center
			| right
			) 		#IMPLIED
	width 		CDATA 		#IMPLIED
	cols 		NMTOKEN 	#IMPLIED
	border 		CDATA 		#IMPLIED
	frame 		(
			void
			| above
			| below
			| hsides
			| lhs
			| rhs
			| vsides
			| box
			| border
			) 		#IMPLIED
	rules 		(
			none
			| basic
			| rows
			| cols
			| all
			) 		#IMPLIED
	cellspacing 	CDATA 		#IMPLIED
	cellpadding 	CDATA 		#IMPLIED
	table.fmt 	CDATA 		#IMPLIED
	table.domain 	CDATA 		#IMPLIED
	table.inst 	CDATA 		#IMPLIED
	>
	
<!ELEMENT media (media-metadata*, media-reference, media-object?, media-caption*, media-producer?)>
<!ATTLIST media
	%common-attributes;
	media-type 	(
			text
			| audio
			| image
			| video
			| data
			| application
			| other
			)		#REQUIRED
	>
	
	<!ELEMENT media-reference (#PCDATA)>
	<!ATTLIST media-reference
		%common-attributes;
		data-location		CDATA		#REQUIRED
		name			CDATA 		#IMPLIED
		source 			CDATA 		#IMPLIED
		mime-type 		CDATA 		#REQUIRED
		coding 			CDATA 		#IMPLIED
		time 			CDATA 		#IMPLIED
		time-unit-of-measure 	CDATA 		#IMPLIED
		outcue 			CDATA 		#IMPLIED
		source-credit 		CDATA 		#IMPLIED
		copyright 		CDATA 		#IMPLIED
		alternate-text 		CDATA 		#IMPLIED
		height 			NMTOKEN 	#IMPLIED
		width 			NMTOKEN 	#IMPLIED
		units 			(pixels) 	"pixels"
		imagemap 		CDATA 		#IMPLIED
		noflow 			(noflow) 	#IMPLIED
		>
		
	<!ELEMENT media-metadata EMPTY>
	<!ATTLIST media-metadata
		%common-attributes;
		name 		CDATA 		#REQUIRED
		value 		CDATA 		#IMPLIED
		>
		
	<!ELEMENT media-object (#PCDATA)>
	<!ATTLIST media-object
		%common-attributes;
		encoding 	CDATA 	#REQUIRED
		>
		
	<!ELEMENT media-caption (%enriched-text; | %block.content;)*>
	<!ATTLIST media-caption
		%common-attributes;
		>
		
	<!ELEMENT media-producer (%enriched-text;)*>
	<!ATTLIST media-producer
		%common-attributes;
		>
		
<!ELEMENT ol (li)+>
<!ATTLIST ol
	%common-attributes;
	continue 	(continue) 	#IMPLIED
	seqnum 		NMTOKEN 	#IMPLIED
	compact 	(compact) 	#IMPLIED
	>
	
<!ELEMENT ul (li)+>
<!ATTLIST ul
	%common-attributes;
	wrap 		(vert | horiz | none) 	"none"
	plain 		(plain) 		#IMPLIED
	dingbat 	ENTITY 			#IMPLIED
	src 		CDATA 			#IMPLIED
	%url.link;
	compact 	(compact) 		#IMPLIED
	>
	
	<!ELEMENT li (%enriched-text; | %block.content;)*>
	<!ATTLIST li
		%common-attributes;
		dingbat 	ENTITY 		#IMPLIED
		src 		CDATA 		#IMPLIED
		%url.link;
		skip 		NMTOKEN 	"0"
		>
		
<!ELEMENT dl (dt | dd)+>
<!ATTLIST dl %common-attributes;>
	
	<!ELEMENT dt (%enriched-text;)*>
	<!ATTLIST dt %common-attributes;>
		
	<!ELEMENT dd (block)*>
	<!ATTLIST dd %common-attributes;>
		
<!ELEMENT bq (block+, credit?)*>
<!ATTLIST bq
	%common-attributes;
	nowrap 		(nowrap) 	#IMPLIED
	quote-source 	CDATA 		#IMPLIED
	>
	
	<!ELEMENT credit (%enriched-text;)*>
	<!ATTLIST credit %common-attributes;>
	
<!ELEMENT fn (body.content)+>
<!ATTLIST fn %common-attributes;>
	

<!ELEMENT pre (#PCDATA)>
<!ATTLIST pre
	%global-attributes;
	>
	
<!ELEMENT hr EMPTY>
<!ATTLIST hr
	%global-attributes;
	src 		CDATA 	#IMPLIED
	>
	

<!ELEMENT datasource (#PCDATA)>
<!ATTLIST datasource
	%global-attributes;
	>
	


<!ELEMENT caption (%enriched-text; | %block.content;)*>
<!ATTLIST caption
	%common-attributes;
	align 		(
			top
			| bottom
			| left
			| right
			) 		#IMPLIED
	>
	
<!ELEMENT col EMPTY>
<!ATTLIST col
	%common-attributes;
	span 		NMTOKEN 	"1"
	width 		CDATA 		#IMPLIED
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT colgroup (col+)>
<!ATTLIST colgroup
	%common-attributes;
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT thead (tr+)>
<!ATTLIST thead
	%common-attributes;
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT tbody (tr+)>
<!ATTLIST tbody
	%common-attributes;
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT tfoot (tr+)>
<!ATTLIST tfoot
	%common-attributes;
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT tr (th | td)+>
<!ATTLIST tr
	%common-attributes;
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT th (%enriched-text; | %block.content;)*>
<!ATTLIST th
	%common-attributes;
	axis 		CDATA 		#IMPLIED
	axes 		CDATA 		#IMPLIED
	nowrap 		(nowrap) 	#IMPLIED
	rowspan 	NMTOKEN 	"1"
	colspan 	NMTOKEN 	"1"
	%cell.align;
	%cell.valign;
	>
	
<!ELEMENT td (%enriched-text; | %block.content;)*>
<!ATTLIST td
	%common-attributes;
	axis 		CDATA 		#IMPLIED
	axes 		CDATA 		#IMPLIED
	nowrap 		(nowrap) 	#IMPLIED
	rowspan 	NMTOKEN 	"1"
	colspan 	NMTOKEN 	"1"
	%cell.align;
	%cell.valign;
	>
	

<!ELEMENT chron (#PCDATA)>
<!ATTLIST chron
	%global-attributes;
	norm 		CDATA 	#IMPLIED
	>
	

<!ELEMENT event (#PCDATA | alt-code)*>
<!ATTLIST event
	%global-attributes;
	start-date 	CDATA 		#IMPLIED
	end-date 	CDATA 		#IMPLIED
	idsrc 		CDATA 		#REQUIRED
	value 		CDATA 		#REQUIRED
	>
	
<!ELEMENT function (#PCDATA | alt-code)*>
<!ATTLIST function
	%global-attributes;
	idsrc 		CDATA 		#REQUIRED
	value 		CDATA 		#REQUIRED
	>
	
<!ELEMENT location (#PCDATA | sublocation | city | state | region | country | alt-code)*>
<!ATTLIST location
	%global-attributes;
	location-code 	CDATA 	#IMPLIED
	code-source 	CDATA 	#IMPLIED
	>
	
	<!ELEMENT sublocation (#PCDATA | alt-code)*>
	<!ATTLIST sublocation
		%global-attributes;
		location-code 	CDATA 	#IMPLIED
		code-source 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT city (#PCDATA | alt-code)*>
	<!ATTLIST city
		%global-attributes;
		city-code 	CDATA 	#IMPLIED
		code-source 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT state (#PCDATA | alt-code)*>
	<!ATTLIST state
		%global-attributes;
		state-code 	CDATA 	#IMPLIED
		code-source 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT region (#PCDATA | alt-code)*>
	<!ATTLIST region
		%global-attributes;
		region-code 	CDATA 	#IMPLIED
		code-source 	CDATA 	#IMPLIED
		>
		
	<!ELEMENT country (#PCDATA | alt-code)*>
	<!ATTLIST country
		%global-attributes;
		iso-cc 		CDATA 	#IMPLIED
		>
		
<!ELEMENT money (#PCDATA)>
<!ATTLIST money
	%global-attributes;
	unit 		CDATA 	#IMPLIED
	date 		CDATA 	#IMPLIED
	>
	
<!ELEMENT num (#PCDATA | frac | sub | sup)*>
<!ATTLIST num
	%global-attributes;
	units 		CDATA 	#IMPLIED
	decimal-ch 	CDATA 	#IMPLIED
	thousands-ch 	CDATA 	#IMPLIED
	>
	
	<!ELEMENT frac (numer, frac-sep?, denom)>
	<!ATTLIST frac
		%global-attributes;
		>
		
		<!ELEMENT numer (#PCDATA)>
		<!ATTLIST numer
			%global-attributes;
			>
			
		<!ELEMENT frac-sep (#PCDATA)>
		<!ATTLIST frac-sep
			%global-attributes;
			>
			
		<!ELEMENT denom (#PCDATA)>
		<!ATTLIST denom
			%global-attributes;
			>
			
	<!ELEMENT sub (#PCDATA)>
	<!ATTLIST sub %common-attributes;>
		
	<!ELEMENT sup (#PCDATA)>
	<!ATTLIST sup %common-attributes;>
		
<!ELEMENT object.title (#PCDATA | alt-code)*>
<!ATTLIST object.title 
	%common-attributes;
	idsrc 	CDATA 	#REQUIRED
	value 	CDATA 	#REQUIRED
	>
	
<!ELEMENT org (#PCDATA | alt-code)*>
<!ATTLIST org
	%global-attributes;
	idsrc 	CDATA 	#REQUIRED
	value 	CDATA 	#REQUIRED
	>
	
	<!ELEMENT alt-code EMPTY>
	<!ATTLIST alt-code
		%global-attributes;
		idsrc 	CDATA 	#REQUIRED
		value 	CDATA 	#REQUIRED
		>
		
<!ELEMENT person (#PCDATA | name.given | name.family | function | alt-code)*>
<!ATTLIST person
	%global-attributes;
	idsrc 	CDATA 	#REQUIRED
	value 	CDATA 	#REQUIRED
	>
	
	<!ELEMENT name.given (#PCDATA)>
	<!ATTLIST name.given
		%global-attributes;
		>
		
	<!ELEMENT name.family (#PCDATA)>
	<!ATTLIST name.family
		%global-attributes;
		>
		
<!ELEMENT postaddr (addressee, delivery.point?, (postcode | delivery.office | region | country)*)>
<!ATTLIST postaddr
	%global-attributes;
	>
	
<!ELEMENT virtloc (#PCDATA | alt-code)*>
<!ATTLIST virtloc
	%global-attributes;
	idsrc 		CDATA 		#REQUIRED
	value 		CDATA 		#REQUIRED
	>
	
<!ELEMENT a (%enriched-text;)*>
<!ATTLIST a
	%common-attributes;
	href 		CDATA 		#IMPLIED
	name 		CDATA 		#IMPLIED
	%url.link;
	rel 		NMTOKEN 	#IMPLIED
	rev 		NMTOKEN 	#IMPLIED
	title 		CDATA 		#IMPLIED
	methods 	NMTOKENS 	#IMPLIED
	>
	
<!ELEMENT br EMPTY>
<!ATTLIST br
	%global-attributes;
	>
	
<!ELEMENT em (%enriched-text;)*>
<!ATTLIST em %common-attributes;>
	
<!ELEMENT lang (%enriched-text;)*>
<!ATTLIST lang %common-attributes;>
	
<!ELEMENT pronounce (%enriched-text;)*>
<!ATTLIST pronounce
	%global-attributes;
	guide 		CDATA 	#IMPLIED
	phonetic 	CDATA 	#IMPLIED
	>
	
<!ELEMENT q (%enriched-text;)*>
<!ATTLIST q
	%common-attributes;
	quote-source 	CDATA 	#IMPLIED
	>
	

<!ELEMENT addressee (person, function?, care.of?)>
<!ATTLIST addressee
	%global-attributes;
	>
	
	<!ELEMENT care.of (#PCDATA)>
	<!ATTLIST care.of
		%global-attributes;
		>
		
<!ELEMENT delivery.point (#PCDATA | br)*>
<!ATTLIST delivery.point
	%global-attributes;
	point-code 	CDATA 	#IMPLIED
	code-source 	CDATA 	#IMPLIED
	>
	
<!ELEMENT postcode (#PCDATA)>
<!ATTLIST postcode
	%global-attributes;
	code-source 	CDATA 	#IMPLIED
	>
	
<!ELEMENT delivery.office (#PCDATA | br)*>
<!ATTLIST delivery.office
	%global-attributes;
	office-code 	CDATA 	#IMPLIED
	code-source 	CDATA 	#IMPLIED
	>
	



<!ELEMENT body.end (tagline?, bibliography?)>
<!ATTLIST body.end
	%global-attributes;
	>
	
<!ELEMENT tagline (%enriched-text;)*>
<!ATTLIST tagline
	%global-attributes;
	type 		(std | pa | npa) 	"std"
	>
	
<!ELEMENT bibliography (#PCDATA)>
<!ATTLIST bibliography
	%global-attributes;
	>
	
