<!-- PubMed Journal Article DTD Version 3.0 -->

<!-- This document is still under revision and may change.

	Changes:
	
    version 2.8
     - Added elements for reference citations:
     	  ReferenceList
     	  Title
     	  Reference
     	  Citation
     	  PMID
     - Added CDATA Type attribute to OtherAbstract      	  
     	  
    version 2.7
     - Added MathML3 support files
     - removed directly referenced character files (ISO*.ent) in favor of MathML characters
	  - added pubmedchars/ISOchars.ent to define 138 ISO characters that were defined
	    in the previous PubMed.dtd but were not covered by the mathml iso sets

	version 2.6:
	 - added attributes on Article tag:
	   VersionID
	   VersionDate

	version 2.5:
	 - added tags:
	 	OtherAbstract

	version 2.4:
	 - added tags:
	 	CopyrightInformation

	
	version 2.3:
	 - added tags:
		GroupList
		Group
		GroupName
		IndividualName
		ELocationID

	version 2.2:
	 - added "EmptyYN" attribute to FirstName tag

     version 2.1:
     - AuthorList changed from containing (Author+) to (Author*)
     - Removal of FullTextURL element
	 - Addition of euro entity
     
     -->

<!-- Typical usage:

        <!DOCTYPE ArticleSet PUBLIC "-//NLM//DTD PubMed 2.0//EN" "http://www.ncbi.nlm.nih.gov:80/entrez/query/static/PubMed.dtd">
        <ArticleSet>
        ...
         </ArticleSet>
            
         or:

        <!DOCTYPE ArticleSet PUBLIC "-//NLM//DTD PubMed//EN" "http://www.ncbi.nlm.nih.gov:80/entrez/query/static/PubMed.dtd">
        <ArticleSet>
        ...
         </ArticleSet>
	-->


       
<!-- ============================================================= -->
<!--                     MATHML 3.0 SETUP                        -->
<!-- ============================================================= -->
<!--                    MATHML SETUP FILE                 -->
<!ENTITY % mathml-in-pubmed     SYSTEM        "mathml-in-pubmed.mod"               >	
%mathml-in-pubmed;

<!-- ============================================================= -->
<!--                 REMAINING PUBMED CHARACTERS                   -->
<!-- ============================================================= -->
<!ENTITY % ISOchars  SYSTEM "pubmedchars/ISOchars.ent">
%ISOchars;


<!ENTITY % data             "#PCDATA | sup | inf | b | u | i | sub">

<!ENTITY % pub.status.int   "pmc | pmcr | pubmed | pubmedr | 
                             premedline | medline | medliner">
<!ENTITY % pub.status       "(received | accepted | epublish | 
                              ppublish | revised | aheadofprint | ecollection | 
                               %pub.status.int;)">

<!ENTITY % art.id.type.int  "pubmed | medline | pmcid">
<!ENTITY % art.id.type      "(doi | pii | pmcpid | pmpid | %art.id.type.int;)">


<!-- This is the top level element -->
<!ELEMENT ArticleSet      (Article+)>
<!ATTLIST       ArticleSet  >

<!ELEMENT Article         (Journal, Replaces?, 
                               ArticleTitle?, VernacularTitle?,
                               FirstPage?, LastPage?, ELocationID*,
                               Language*, AuthorList?, GroupList?,
                               PublicationType*, ArticleIdList?,
                               History?, Abstract?, OtherAbstract*, CopyrightInformation?, CoiStatement?, ObjectList?, ReferenceList*, ArchiveCopySource? )>
<!ATTLIST Article
		VersionID	CDATA	#IMPLIED
		VersionDate	CDATA	#IMPLIED
		>

<!ELEMENT AbstractText (%data; | mml:math | DispFormula)*>
<!ATTLIST AbstractText Label CDATA #REQUIRED>

<!ENTITY % abstract.common "#PCDATA | AbstractText | sup | inf | b | u | i | sub | mml:math | DispFormula">
<!ENTITY % abstract "(%abstract.common;)*">
<!ENTITY % other.abstract "(%abstract.common; | ArticleTitle)*">

<!ELEMENT Journal         (PublisherName, 
                              JournalTitle, Issn, 
                              Volume?, Issue?, 
                              PubDate)>
<!ELEMENT PublisherName   (#PCDATA)>
<!ELEMENT JournalTitle    (#PCDATA)>
<!ELEMENT Issn            (#PCDATA)>
<!ELEMENT Volume          (#PCDATA)>
<!ELEMENT Issue           (#PCDATA)>
<!ELEMENT PubDate         (Year, Month?, Day?, Season?)>
<!ATTLIST PubDate
          PubStatus        %pub.status;        "ppublish" >

<!ELEMENT Year            (#PCDATA)>
<!ELEMENT Month           (#PCDATA)>
<!ELEMENT Day             (#PCDATA)>
<!ELEMENT Season          (#PCDATA)>
<!-- End of PubDate group -->
<!ELEMENT History         (PubDate*)>
<!-- End of Journal group -->
<!ELEMENT Replaces        (#PCDATA)>
<!ATTLIST Replaces
       IdType     %art.id.type;   "pubmed" >
<!ELEMENT ArticleTitle     (%data; | mml:math)*>
<!ELEMENT VernacularTitle  (%data; | mml:math)*>
<!ELEMENT FirstPage       (#PCDATA)>
<!ATTLIST FirstPage
       LZero     (Save|save|delete)   "delete" >
<!ELEMENT LastPage        (#PCDATA)>
<!ELEMENT Language        (#PCDATA)>
<!ELEMENT AuthorList      (Author*)>
<!ENTITY % affiliation "(Affiliation|AffiliationInfo+)?">
<!ELEMENT Author          (((FirstName, MiddleName?, LastName, Suffix?, Initials?)| 
                                CollectiveName), %affiliation;, Identifier*)>
<!ATTLIST  Author
             EqualContrib (Y|N)	#IMPLIED >
<!ELEMENT FirstName       (#PCDATA)>
<!ATTLIST FirstName
	   EmptyYN	(Y|N)	"N">
<!ELEMENT MiddleName      (#PCDATA)>
<!ELEMENT LastName        (#PCDATA)>
<!ELEMENT CollectiveName  (#PCDATA)>
<!ELEMENT Suffix          (#PCDATA)>
<!ELEMENT Initials        (#PCDATA)>
<!ELEMENT Affiliation     (#PCDATA)>
<!ELEMENT AffiliationInfo (Affiliation,Identifier*)>
<!ELEMENT Identifier      (#PCDATA)>
<!ATTLIST Identifier
	   Source	CDATA	#REQUIRED>
<!-- End of Author group -->
<!-- End of AuthorList group -->
<!ELEMENT PublicationType  (#PCDATA)>
<!ELEMENT ArticleIdList   (ArticleId*)>
<!ELEMENT ArticleId       (#PCDATA)>
<!ATTLIST ArticleId
       IdType     %art.id.type;   "pii" >

<!ELEMENT Abstract          %abstract; >
<!ELEMENT OtherAbstract     %other.abstract;>
<!ATTLIST OtherAbstract
		Language	CDATA	#REQUIRED
      		Type                 CDATA #IMPLIED>

<!ELEMENT ObjectList (Object)+>
<!ELEMENT Object (Param)*>
<!ATTLIST Object Type CDATA #REQUIRED>
<!ELEMENT Param (%data; | mml:math)*>
<!ATTLIST Param Name CDATA #REQUIRED>

<!ELEMENT	ReferenceList (Title?, Reference*, ReferenceList*) >
<!ELEMENT   Title (#PCDATA)>
<!ELEMENT	Reference ((Citation | PMID), ArticleIdList?) >
<!ELEMENT	Citation  (%data; | mml:math)*>
<!ELEMENT	PMID (#PCDATA) >
<!ATTLIST	PMID 
		    VersionID CDATA #IMPLIED >

<!-- End of Article group -->

<!-- End of ArticleSet group -->

<!ELEMENT  sup           (%data;)*>
<!ELEMENT  inf           (%data;)*>
<!ELEMENT  sub           (%data;)*>
<!ELEMENT  b             (%data;)*>
<!ELEMENT  i             (%data;)*>
<!ELEMENT  u             (%data;)*>

<!ELEMENT DispFormula   (mml:math) >

<!ELEMENT GroupList (Group+)>
<!ELEMENT Group (GroupName?,IndividualName+)>
<!ELEMENT GroupName (#PCDATA)>
<!ELEMENT IndividualName (FirstName, MiddleName?, LastName, Suffix?, %affiliation; , Identifier*)>

<!ELEMENT ELocationID (#PCDATA)>
<!ATTLIST ELocationID 
		EIdType (doi | pii) #REQUIRED
		ValidYN (Y | N) "Y"
	>
<!ELEMENT CopyrightInformation (#PCDATA)>
<!ELEMENT  CoiStatement      (%data;)*  >
<!ELEMENT ArchiveCopySource (#PCDATA)>
<!ATTLIST ArchiveCopySource DocType CDATA #FIXED "pdf">
