<!--    
                This is the Current DTD for Entrez eLink
$Id: eLink_020511.dtd,v 1.1 2003/06/13 00:49:37 dalke Exp $
-->
<!-- ================================================================= -->

<!ELEMENT       ERROR           (#PCDATA)>	<!-- .+ -->
<!ELEMENT       Info            (#PCDATA)>	<!-- .+ -->

<!ELEMENT	Id		(#PCDATA)>	<!-- \d+ -->
<!ATTLIST	Id		
			HasLinkOut  (Y|N)	#IMPLIED	
			HasNeighbor (Y|N)	#IMPLIED
			>
			
<!ELEMENT	Score		(#PCDATA)>	<!-- \d+ -->
<!ELEMENT	DbFrom		(#PCDATA)>	<!-- \S+ -->
<!ELEMENT	DbTo		(#PCDATA)>	<!-- \S+ -->
<!ELEMENT	LinkName	(#PCDATA)>	<!-- \S+ -->

<!ELEMENT	IdList		(Id*)>

<!-- cmd=neighbor -->
<!ELEMENT	Link		(Id, Score?)>

<!ELEMENT	LinkSetDb	(DbTo, LinkName, (Link*|Info), ERROR?)>

<!-- cmd=links -->

<!ELEMENT	Url		(#PCDATA)>	<!-- \S+ -->
<!ELEMENT	IconUrl		(#PCDATA)>	<!-- \S+ -->
<!ELEMENT       SubjectType	(#PCDATA)>	<!-- .+ -->
<!ELEMENT       Attribute	(#PCDATA)>	<!-- .+ -->
<!ELEMENT       Name		(#PCDATA)>	<!-- .+ -->
<!ELEMENT       NameAbbr	(#PCDATA)>	<!-- \S+ -->

<!ELEMENT	Provider (
				Name,
				NameAbbr,
				Id,
				Url,
				IconUrl?
			)>


<!ELEMENT	ObjUrl	(
				Url,
				LinkName?,
                                SubjectType*,
                                Attribute*,
                               Provider			
			)>

<!ELEMENT	IdUrlSet	(Id,(ObjUrl+|Info))>

<!ELEMENT	IdUrlList	(IdUrlSet*,ERROR?)>


<!-- cmd=ncheck & lcheck -->
<!ELEMENT	IdCheckList	(Id*,ERROR?)>


<!-- Common -->
<!ELEMENT	LinkSet		(DbFrom, 
				((IdList?, LinkSetDb*) | IdUrlList | IdCheckList | ERROR)  
				)>

<!ELEMENT	eLinkResult	(LinkSet+,ERROR?)>
