1. 程式人生 > >xml基於DTD的XML文件有效性驗證

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 預定義實體

字元

實體引用

&It;

&gt;

&

&amp;

 '

&apos;

&quot;




<?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檔案的有效性問題