
<?xml version = "1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<?xml version = "1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Bob</to>
<from>Bill</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT element-name category>
- OR -
<!ELEMENT element-name (element-content)>
<ELEMENT element-name EMPTY>
<!ELEMENT element-name (#PCDATA)>
<!ELEMENT element-name ANY>
<!ELEMENT element-name (child-element-name, child-element-name...)>
<!ELEMENT element-name (child-name)>
<!ELEMENT element-name (child-name+)>
<!ELEMENT element-name (child-name*)>
<!ELEMENT element-name (child-name?)>
<!ELEMENT element-name (child-name,(child-name|other-child-name))>
<!ELEMENT element-name (#PCDATA|child-name|child-name|child-name)*>
<!ATTLIST element-name attribute-name attribute-type default-value>
| Value | Explanation |
|---|---|
| CDATA | The Value Is Character Data |
| (en1[en2]..) | The Value Must be One from an Enumerated List |
| ID | The Value Is A Unique Id |
| IDREF | The Value is the Id of Another Element |
| IDREFS | The Value Is A List of Other Id's |
| NMTOKEN | The Value Is A Valid XML Name |
| NMTOKENS | The Value Is a List of Valid XML Names |
| ENTITY | The Value Is is An Entity |
| ENTITIES | The Value Is a List of Entities |
| NOTATION | The Value Is a Name of a Notation |
| xml: | The Value Is a Predefined XML Value |
| Value | Explanation |
|---|---|
| value | The default value of an Attribute |
| #REQUIRED | The Attribute Value Must be Included in the Element |
| #IMPLIED | The Attribute Does Not Have to be Included |
| #FIXED value | The Attribute Value is Fixed |
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width = "100" />
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid MXL:
<contact fax = "555-6687" />
Valid XML:
< contact />
<!ATTLIST element-name attribute_name attribute-type #REQUIRED>
DTD
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number = "5677" />
Invalid XML:
<person />
<!ATTLIST element-name attribute-name attribute-type #FIXED "value">
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Valid XML:
<sender company = "Microsoft" />
Invalid XML:
<sender company = "W3Schools" />
<!ATTLIST element-name attribute-name (en1|en2|...) default-value>
DTD:
<!ATTLIST payment type (check|cash) "cash">
XML Example:
<payment type = "check" />
Or:
<payment type = "cash" />
<!ENTITY entity-name "entity-value">
<!ENTITY writer "Donald Duck.">
<!ENTITY coopyright "Copyright W3Schools.">
<author>&writer/&copyright;</author>
<!ENTITY entity-name SYSTEM "URI/URL">
<!ENTITY writer SYSTEM "http://www.w3schools.com/entities/entities.xml">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities/entities.dtd">
<author>&writer;&copyright;</author>
var xmlDoc = newActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = "false"
xmlDoc.validateOnParse = "true"
xmlDoc.load("note_dtd_error.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
var xmlDoc = newActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = "false"
xmlDoc.validateOnParse = "false"
xmlDoc.load("note_dtd_error.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
<!DOCTYPE TVSCHEDULE [<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+))+>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
]>
<!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED><!ENTITY NEWSPAPER "Vervet Logic Times">
<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">]>
<!DOCTYPE CATALOG [<!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ENTITY EMAIL "[email protected]"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)> ]>

|
|
|