external DTD example name.dtd:
<!ELEMENT name (first, middle, last)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT middle (#PCDATA)>
<!ELEMENT last (#PCDATA)>
name.xml
<?xml version="1.0"?>
<!DOCTYPE name SYSTEM "C:\Users\Xing Hua Zhang\Desktop\name.dtd">
<name>
<first>John</first>
<middle>Fitzgerald Johansen</middle>
<last>Doe</last>
</name>
internal DTD
When declarations appear between the [ and ], as in the sample, they are called internal subset declarations.
example:
<?xml version="1.0"?>
<!DOCTYPE name [
<!ELEMENT name (first, middle, last)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT middle (#PCDATA)>
<!ELEMENT last (#PCDATA)>
]>
<name>
<first>John</first>
<middle>Fitzgerald Johansen</middle>
<last>Doe</last>
</name>
Document Type Declaration
<!DOCTYPE name [ ]>
System Identifiers
A system identifier allows you to specify the location of an external file containing DTD declarations. It is comprised of SYSTEM identifiers and URI reference
format:
<!DOCTYPE name SYSTEM "name.dtd" [...]>
<!DOCTYPE name SYSTEM "file:///c:/name.dtd" [ ]>
<!DOCTYPE name SYSTEM "http://website.com/hr/name.dtd" [ ]>
<!DOCTYPE name SYSTEM "name.dtd">
Public identifiers
An example of public identifier:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Name Example//EN" "name.dtd">
notice name.dtd is usually a relative path, this is decided by the parser.