自定義dtd可以寫在xml裏面而不必引入外部鏈接.
下面的一套dtd
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config [ //注1
<!ELEMENT config (jdbcDriver,jdbcUrl,jdbcSchema,jdbcUser,jdbcPassword,tables)> //注2
<!ELEMENT jdbcDriver (#PCDATA)>//注3
<!ELEMENT jdbcUrl (#PCDATA)>
<!ELEMENT jdbcSchema (#PCDATA)>
<!ELEMENT jdbcUser (#PCDATA)>
<!ELEMENT jdbcPassword (#PCDATA)>
<!ELEMENT tables (table+)>//注4
<!ELEMENT table (column*)>//注5
<!ATTLIST table tableName CDATA #REQUIRED>//注6
<!ATTLIST table count CDATA #REQUIRED>//注7
<!ELEMENT column EMPTY>//注8
<!ATTLIST column columnName CDATA #REQUIRED>//注9
<!ATTLIST column className CDATA #IMPLIED>//注10
<!ATTLIST column methodName CDATA #IMPLIED>
<!ATTLIST column params CDATA #IMPLIED>
]>
註釋:
1.根標籤是config
2.根標籤下面一共有5個標籤,這5個標籤不能少,也不能重複多個,分別是jdbcDriver,jdbcUrl,jdbcSchema,jdbcUser,jdbcPassword,tables
3.其中jdbcDriver,jdbcUrl,jdbcSchema,jdbcUser,jdbcPassword內部是字符串
4.tables內部是table標籤,且table標籤數量大於等於1
5.table標籤內部是column標籤,標籤數量大於等於0
6.table標籤有屬性叫做tableName="",內容是CDATA(自定義填字符串)類型的,不是引用其他標籤.且是必須的required
7.table標籤有屬性叫做count="",內容是CDATA(自定義填字符串)類型的,不是引用其他標籤.且是必須的.
8.column標籤內部是空的.是自閉合標籤
9.column標籤有屬性叫做columnName ="",內容是CDATA(自定義填字符串)類型的,不是引用其他標籤.且是必須的.
10.column標籤有其他三個屬性內容是CDATA(自定義填字符串)類型的,不是引用其他標籤.不是是必須的.
當然也可以寫成一個dtd文件,由外部引入,如下寫了個aa.dtd
<!ELEMENT config (jdbcDriver,jdbcUrl,jdbcSchema,jdbcUser,jdbcPassword)>
<!ELEMENT jdbcDriver (#PCDATA)>
<!ELEMENT jdbcUrl (#PCDATA)>
<!ELEMENT jdbcSchema (#PCDATA)>
<!ELEMENT jdbcUser (#PCDATA)>
<!ELEMENT jdbcPassword (#PCDATA)>
在xml裏引入,可以是相對路徑,也可以是絕對路徑
<!DOCTYPE config SYSTEM "aa.dtd">