xml基於DTD的XML文件有效性驗證
實驗工具:xmlspy2013、firefox;
實驗問題:
1.分析下列XML例項,編寫DTD文件,並進行驗證。 <?xml version=”1.0” encoding=”GB2312”> <學生名冊> <學生 學號="A"> <姓名>張三</姓名> <性別>男</性別> <年齡>20</年齡> </學生> <學生 學號="A2"> <姓名>李四</姓名> <性別>女</性別> <年齡>19</年齡> </學生> <學生 學號="A3"> <姓名>王二</姓名> <性別>男</性別> <年齡>21</年齡> </學生> </學生名冊> 2.分析下列DTD文件,上機編寫有效的XML文件,並進行驗證。 <!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 "Vrevet Logic Times"> <!ENTITY PUBLISHRE "Vervet Logic Press"> <!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]> |
1.理解XML文件有效性的涵義; DTD是一種保證XML文件格式正確的有效方法,可以通過比較XML文件來檢視文件是否符合規範,元素和標籤的使用是否正確。 2.熟悉DTD元素與屬性宣告的基本語法; a) !ELEMENT表示開始元素設定 b) element-name指明設定此元素的名稱 c) element-definition:指明對此元素進行怎樣的定義 1、ANY元素型別 <!ELEMENT 元素名 ANY>:將根元素設為ANY型別後,元素出現的次序和順序將不受限制。 2、EMPTY元素型別 <!ELEMENT 元素名 EMPTY>:使用空元素標記,既不能有內容,也不能有子元素 3、#PCDATA型別的元素(純文字元素) <!ELEMENT 元素名(#PCDATA)>:PCDATA代表字元資料,為防止與關鍵字混淆,加#字首。 4、父元素型別 只包含子元素,並且除了這些子元素外沒有文字。這類元素中可以包含子元素,在DTD中通過正則表示式規定子元素出現的順序和次數。 5、混合元素型別 <!ELEMENT 元素名(#PCDATA|子元素名1|子元素名2|……|子元素名n)*>:指包含子元素和文字資料的混合體。 3.理解DTD實體宣告的基本語法; <!DOCTYPE 檔名[ <!ELEMENT 實體名 “實體內容”> ]> 4.掌握XML的五種常用實體的用法; 表1-1 預定義實體
|
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE 學生名冊 [
<!ELEMENT 學生名冊 (學生+)>
<!ELEMENT 學生 (姓名, 性別, 年齡)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 性別 (#PCDATA)>
<!ELEMENT 年齡 (#PCDATA)>
<!ATTLIST 學生 學號 (A | A2 | A3) #REQUIRED>
]>
<學生名冊>
<學生 學號="A">
<姓名>張三</姓名>
<性別>男</性別>
<年齡>20</年齡>
</學生>
<學生 學號="A2">
<姓名>李四</姓名>
<性別>女</性別>
<年齡>19</年齡>
</學生>
<學生 學號="A3">
<姓名>王二</姓名>
<性別>男</性別>
<年齡>21</年齡>
</學生>
</學生名冊>
<?xml version="1.0" encoding="GB2312"?>
<!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 "Vrevet Logic Times">
<!ENTITY PUBLISHRE "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">
]>
<NEWSPAPER>
<ARTICLE AUTHOR="必須寫" EDITOR="可有可無" DATE="可有可無" EDITION="可有可無">
<HEADLINE>123</HEADLINE>
<BYLINE>123</BYLINE>
<LEAD>123</LEAD>
<BODY>123</BODY>
<NOTES>©RIGHT;</NOTES>
</ARTICLE>
<ARTICLE AUTHOR="pshd1" EDITOR="可有可無" DATE="2017-10-11" EDITION="1.0">
<HEADLINE>xml實驗四</HEADLINE>
<BYLINE>123</BYLINE>
<LEAD>前言1</LEAD>
<BODY>hello</BODY>
<NOTES>&PUBLISHRE;</NOTES>
</ARTICLE>
<ARTICLE AUTHOR="pshd2" EDITOR="可有可無" DATE="2017-10-12" EDITION="1.0">
<HEADLINE>world</HEADLINE>
<BYLINE>123</BYLINE>
<LEAD>123</LEAD>
<BODY>123</BODY>
<NOTES>&NEWSPAPER;</NOTES>
</ARTICLE>
</NEWSPAPER>
注意問題:
xml檔案--->DTD/schema檔案的自動轉換問題
DTD/schema檔案-->xml檔案的自動轉換問題
xml檔案和DTD內定義和外部引入問題
實體自定義和xml檔案聯絡DTD檔案的有效性問題