日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML DTD Schema 学习-Schema 介绍

發布時間:2023/12/8 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML DTD Schema 学习-Schema 介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Schema 介紹:
有人會問,DTDSchema都是對XML文檔的一種約束,為什么不就選其中之一,而又有Sche
ma
呢。因為DTD安全度太低了,也就是說它的約束定義能力不足,無法對XML實例文檔做出

更細致的語義限制。其實細心的人會發現,在DTD中,只有一個數據類型,就是PCDATA(用
在元素中)和CDATA(用在屬性中),在里面寫日期也行,數字還行,字符更是沒問題。而
Schema
正是針對這些DTD的缺點而設計的,Schema是完全使用XML作為描述手段,具有很強
的描述能力,擴展能力和處理維護能力等。下面讓我們看一個簡單的例子吧:
hello.xml
-------------------
<?xml version="1.0"?>
Hello World!!

說明:
一個根元素:greeting;且這個元素不含屬性,無子元素,內容是字符串。

hello.xsd
----------

<?xml version="1.0"?>
http://www.w3.org/2001/XMLSchema">


說明:
XML Schema
文檔后綴名是.xsd,完全符合XML語法,根元素是schema,命名空間xmlns:xsd
="
http://www.w3.org/2001/XMLSchema
,用元素定義實例文檔中的元素,如gre
eting
xsd:string就是定義的數據類型了,其中的數據類型有很多,比如:
int,double,
dateTime,Boolean,long,integer,float,
等,總之Java等語言里有的數據類型它都有,但

要以“xsd:”開頭。
讓我們再看一個里面有子無素的例子:
customer.xml
-----------

teiki

No.237, Road Waitan, Shanghai

則可以寫出以下的XML Schema文檔:
customer.xsd
----------------
1: <?xml version="1.0"?>
2: http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10:
11:

說明:
實例文檔customer.xml中,元素含有兩個子元素,在Schema中凡是有兩個以上
的子元素,就認為是復雜類型的,所以我們在Schema文檔中采用ComplexType來定義該元素
。表示有多個XML子元素。
sequence
表示子元素依次出現的順序。
如果有多層子元素怎么辦呢,同樣的道理,有幾層寫幾層,一直往下嵌就OK了,這里我要
說的是另一種方法,結構看上去會清晰一些。
address.xml
---------------

Teiki

<!-- address追加一個地址子元素 --&gt
Zhejiang
Hangzhou
Xilu Road, No.121, 7F


下面就是采用ref元素來編寫的這個Schema文檔:

address2.xsd
----------------------
1: <?xm l version="1.0"?>
2: http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

說明:
如果按正常的寫法,應該把1321行的內容替換到每8行去,但這里使用ref元素可以直接
將其指向另一個模塊,使文檔更加具有可讀性。
如果元素中包含屬性怎么辦呢?一樣簡單,只要在定義完子元素的后面再著定義屬性就行
了。定義屬性用“attribute”,還是舉個例子吧
customer2.xml
---------------

Teiki
No.237, Road Waitan, Shanghai

這個例子和上面的一個例子差不多,只是在元素customer中設了一個屬性id
customer2.xsd
------------------
1: <?xml version="1.0"?>
2: http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10: <!--
增加屬性定義 --&gt
11:
12:
13:
14:
15:
說明:

需要注意的一點是,屬性和元素不是一家的,所以要把它放在sequence外面寫,但它們都
customer的孩子,所以要寫在complexType的里面。
下面再看一個例子:
order4-1.xsd
----------------------
1:<?xml version="1.0"?>
2:http://www.w3.org/2001/XMLSchema">
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:

上面的例子中,maxOccurs代表:相同元素最多出現的次數,與些相反的是minOccurs代表:
出現的最少次數。默認情況下兩個都為“1”,如果把minOccurs設為“0”,表示該元素可
有可無。choice代表:可選的元素,也就是在這里面寫的元素只能選其中之一,不能全寫
simpleType代表自定義數據類型,也就是name里的并不是真正的數據類型,而是根據自
己的意愿定制的。restriction代表對某一數據類型做約束,也就是只能取其中范圍之內符
合要求的,比如第2529行中,里面又有個元素enumeration代表枚舉,也就是只能在枚舉
的那幾個中選一個,而下在的3636行,里面又有一對元素minInclusivemaxInclusive
代表類型的取值范圍,也就是只能取大于等于minInclusive并且小于等于maxInclusive

數。
把這個Schema用在XML中是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSc
hemaLocation="D:\ProgramCode\Year2\XML\practice\temp.xsd">

7-5005-6450-3
3


xyb
3

<!--
注意下面這個是錯的,因為超出了規定的范圍 --&gt

7-5005-6450-3
13

從上面的注釋到此,是錯誤的
--&gt

說明:

紅色的部分是導入Schema的命令,綠色的是Schema文件的路徑,如果用XMLSPY寫時,會自
動加上。
對屬性的設置,基本上和元素的差不多。比如:












這里我們講id屬性類型作為一種自定義數據類型idType。它的格式就是上面用到的也就是
類似于“7-5005-6450-3”樣的。
而且,用attribute元素的use屬性來定義是否是必須的屬性。
required
是必須值,optional是可選值,prohibited是無屬性值。default屬性是默認值。

?

?

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/12476590/viewspace-504261/,如需轉載,請注明出處,否則將追究法律責任。

轉載于:http://blog.itpub.net/12476590/viewspace-504261/

總結

以上是生活随笔為你收集整理的XML DTD Schema 学习-Schema 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。