Chúng ta có thểđịnh nghĩa DTD cho phần tử thẻ dựa trên các tham chiếu đã được
Sử dụng định nghĩa DTD tham chiếu ngoại khiến cho các ứng dụng XML của bạn có thể dễ dàng chia sẽ và dùng chung với các ứng dụng khác. Thực tế, đây là cách mà hầu hết các ứng dụng XML đều hỗ trợ. Có hai cách chỉ định một phần tử DTD tham chiếu ngoại: tham chiếu ngoại riêng (private DTD) và tham chiếu ngoại chung (Public DTD). Những định nghĩa DTD tham chiếu ngoại riêng được sử dụng cho một nhóm người và mang tính cá nhân chúng không được dùng cho mục đích phân phối chung. Khai báo và định nghĩa phần tử DTD tham chiếu ngoại riêng bằng cách sử dụng khóa SYSTEM trong chỉ thị khai báo <!DOCTYPE> như ví dụ sau:
<?xmlversion="1.0"encoding="utf-8"standalone="no" ?> <!DOCTYPEDocument SYSTEM "order.dtd">
<Document> <Customer>
<Name> <LastName>Như Ý</LastName> <FirstName>Lý</FirstName>
</Name>
<Date>29/12/2008</Date> <Orders>
<Item>
<Product>Dell</Product> <Number>1</Number> <Price>15000000</Price> </Item>
</Orders> </Customer>
</Document>
Ở ví dụ này ta sử dụng tham chiếu ngoại cho nên ta phải đổi lại chỉ thị
standalone=”no”. Bộ phân tích và kiểm tra sẽ hiểu rằng các phần tử mà ta định nghĩa kiểu DTD sử dụng trong tài liệu này sẽ được khai báo từ một nơi nào đó bên ngoài tài liệu của chính. Trong chỉ thị định nghĩa <!DOCTYPE> chúng ta cho biết các phần tử
DTD được định nghĩa chứa trong file order.dtd thuộc tính SYSTEM cho biết định nghĩa tham chiếu được xem là riêng tư.
Nội dung của file order.dtd như sau:
<!ELEMENTDocument(Customer)*> <!ELEMENTCustomer(Name,Date,Orders)> <!ELEMENTName(LastName,FirstName)> <!ELEMENTLastName(#PCDATA)>
<!ELEMENTFirstName(#PCDATA)> <!ELEMENTDate(#PCDATA)> <!ELEMENTOrders(Item)*>
<!ELEMENTItem(Product,Number,Price)> <!ELEMENTProduct(#PCDATA)>
<!ELEMENTNumber(#PCDATA)> <!ELEMENTPrice(#PCDATA)>