編寫XML檔案的dtd約束
阿新 • • 發佈:2018-12-18
一、瞭解dtd中的語法規則
1、元素宣告:
<!ELEMENT 元素名稱 類別> <!ELEMENT 元素名稱 (元素內容)>如:
<!ELEMENT factory EMPTY> ,表示空元素 <!ELEMENT id (#PCDATA)>,元素內容為普通的文字,也就是被解析的字元資料 <!ELEMENT 元素名稱 (子元素名稱1 | 子元素名稱2)>,帶有子元素的寫法 <!ELEMENT 元素名稱 (子元素名稱1,子元素名稱 2)>,帶有子元素的寫法 <!ELEMENT books (book+)>,相同的元素至少出現一次 <!ELEMENT books (book*)>,同元素不出現或者多次出現 <!ELEMENT books (book?)>,同元素不出現或者出現一次2、屬性
屬性的預設值 #REQUIRED 屬性值是必需的 #IMPLIED 屬性不是必需的 #FIXED value 屬性值是固定的 如:
<!ATTLIST book alias CDATA #REQUIRED>二、寫出想要的xml檔案內容
<?xml version="1.0" encoding="UTF-8" ?> <books> <factory name="北京出版社" /> <book alias="java"> <id>111111</id> <name>java核心思想</name> <author>張聖誕</author> </book> <book alias="linux"> <id>2222</id> <name>linux私房菜</name> <author>李四</author> </book> </books>
三、根據xml檔案格式推匯出dtd的編寫
1、宣告所有元素
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT books ()>
<!ELEMENT factory EMPTY>
<!ELEMENT book ()>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
2、區分複雜元素和簡單元素 複雜元素:有子元素 簡單元素:沒有子元素
<?xml version="1.0" encoding="UTF-8" ?> <!ELEMENT books (book+,factory?)+> <!ELEMENT factory EMPTY> <!ELEMENT book (id,name,author)> <!ELEMENT id (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT author (#PCDATA)>
3、給元素增加屬性
<?xml version="1.0" encoding="UTF-8" ?>
<!-- book出現一次或者多次 -->
<!ELEMENT books (book+ | factory?)+ >
<!ELEMENT factory EMPTY>
<!-- name屬性不是必須的 -->
<!ATTLIST factory
name CDATA #IMPLIED>
<!-- id、name、author必須出現一次 -->
<!ELEMENT book (id,name,author)>
<!-- alias屬性是必須的 -->
<!ATTLIST book
alias CDATA #REQUIRED>
<!-- 元素內容是被解析的字元資料 -->
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
四、在xml檔案中引用dtd 其中,xml檔案是跟dtd檔案放在一個目錄下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE books SYSTEM "mydtd.dtd">
<books>
<factory name="北京出版社" />
<book alias="java">
<id>111111</id>
<name>java核心思想</name>
<author>張聖誕</author>
</book>
<book alias="linux">
<id>2222</id>
<name>linux私房菜</name>
<author>李四</author>
</book>
</books>