大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實例分析XML約束

實例分析XML約束

更新時間:2020-11-27 17:43:37 來源:動力節(jié)點 瀏覽1349次

事實上,約束在Java中是很常見的,但是我們很少去思考為什么需要用到約束呢?比如我們現(xiàn)在定義一個student.xml文件,我們想要在其中保存關于學生的信息,例如id,name,age,但是如果隨便寫入一個標簽例如<你好>,從語法的角度上雖然是符合規(guī)范的,但是這顯然與我們想要存儲的東西沒有任何關系,所以我們需要通過XML約束技術,約束XML中只能出現(xiàn)的元素。


XML約束技術分為兩大類,一種相對簡單的約束技術:DTD,一種相對復雜的約束技術:Schema。下面我們來大致說一下這兩種約束的思路。

 

一、DTD約束

1.dtd的引入方式

A:使用內(nèi)部的dtd文件,即將約束規(guī)則定義在xml文檔中

<!DOCTYPE 根元素名稱 [

<!ELEMENT person (name,age)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

]>


B:引入外部的dtd文件

<!DOCTYPE 根元素名稱 SYSTEM "dtd路徑">


C:使用外部的dtd文件(網(wǎng)絡上的dtd文件)

<!DOCTYPE 根元素 PUBLIC "DTD名稱" "DTD文檔的URL">

例如使用 struts2框架 使用配置文件 所使用 外部的dtd文件

<!DOCTYPE struts PUBLIC   "-//Apache Software Foundation//DTD

Struts Configuration 2.0//EN"    

"http://struts.apache.org/dtds/struts-2.0.dtd">

 

2.使用dtd定義元素

<!ELEMENT 元素名 約束>


A:簡單元素(沒有子元素)

ELEMENT name (#PCDATA)>

(#PCDATA): 約束name是字符串類型

EMPTY : 元素為空(沒有內(nèi)容)

- <sex></sex>

ANY:任意


B:復雜元素

<!-- 語法 -->

<!ELEMENT person (id,name,age,)>

子元素只能出現(xiàn)一次

<!ELEMENT 元素名稱 (子元素)>

<!-- 子元素出現(xiàn)次數(shù) -->

* :一次多或多次

?:零次或一次

* :零次或多次

<!-- 子元素直接使用逗號隔開 -->

表示元素出現(xiàn)的順序

<!-- 子元素直接使用 | -->

表示元素只能出現(xiàn)其中的任意一個


3.使用dtd定義屬性

<!-- 語法 -->

<!ATTLIST 元素名稱

屬性名稱 屬性類型 屬性的約束

>

 

<!-- 屬性類型 --> CDATA: 字符串

<!ATTLIST birthday

ID1 CDATA #REQUIRED

>

 

<!-- 枚舉 -->

表示只能在一定的范圍內(nèi)出現(xiàn)值,但是只能每次出現(xiàn)其中的一個,紅綠燈效果

<!ATTLIST age

ID2 (AA|BB|CC)  #REQUIRED

>

 

<!-- ID: 值只能是字母或者下劃線開頭 -->

<!ATTLIST name

ID3 ID   #REQUIRED

>

 

<!-- 屬性的約束 -->

#REQUIRED:屬性必須存在

#IMPLIED:屬性可有可無

#FIXED: 表示一個固定值 #FIXED "AAA"

屬性的值必須是設置的這個固定值

<!ATTLIST sex

ID4 CDATA #FIXED "ABC"

>

 

直接值

不寫屬性,使用直接值

寫了屬性,使用設置那個值

<!ATTLIST school

ID5 CDATA "WWW"

>

 

二、Schema約束

schema 符合XML的語法,一個xml中可以有多個 schema ,多個 schema 使用名稱空間區(qū)分DTD里面有PCDATA類型,但是在 schema 里面可以支持更多的數(shù)據(jù)類型。XML Schema也是一種用于定義和描述XML文檔結構與內(nèi)容的模式語言,其出現(xiàn)是為了克服DTD的局限性.

后綴名:xsd

 

引入:

填寫xml文檔的根元素

 

引入xsi前綴.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

表示xml文件是一個約束文件


引入xsd文件命名空間.  xsi:schemaLocation="http://www.bwh.cn/xml  student.xsd"

使用一個使用schema約束文件,直接通過這個地址引入約束文件

  通常使用一個url地址防止重名

為每一個xsd約束聲明一個前綴,作為標識  xmlns="http://www.bwh.cn/xml"

1.看xml中有多少個元素

<element>

 

2.看簡單元素和復雜元素

<element name="person">

<complexType>

<sequence>

<element name="name" type="string"></element>

<element name="age" type="int"></element>

</sequence>

</complexType>

</element>

 

3.被約束文件里面引入約束文件

<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://www.bwh.cn/20151111"

xsi:schemaLocation="http://www.bwh.cn/20151111 1.xsd">

 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-- 表示xml是一個被約束文件

xmlns="http://www.bwh.cn/20151111"

-- 是約束文檔里面 targetNamespace

xsi:schemaLocation="http://www.bwh.cn/20151111 1.xsd">

-- targetNamespace 空格  約束文檔的地址路徑

可以約束屬性

A: <sequence>:表示元素的出現(xiàn)的順序

B: <all>: 元素只能出現(xiàn)一次

C: <choice>:元素只能出現(xiàn)其中的一個

D: maxOccurs="unbounded": 表示元素的出現(xiàn)的次數(shù)

E: <any></any>:表示任意元素

 

寫在復雜元素里面

寫在?</complexType>之前

 

--

<attribute name="id1" type="int" use="required"></attribute>

- name: 屬性名稱

- type:屬性類型 int stirng

- use:屬性是否必須出現(xiàn) required

 

XML約束本質(zhì)上還是限制XML文檔中創(chuàng)建的元素及屬性,離不開它的字面意思。因為xml文檔是可以自定義元素的,這會讓使用xml文檔的應用程序無法知道xml文檔的真實結構,。通常應用程序都會要求xml文件的結構是固定的,以滿足自己的需求,這就說明,不同的應用程序要求自己的xml文檔必須符合一定的要求,也就是我們所說的XML約束。講的再多,不如實戰(zhàn),本站的Java基礎教程里面有著許多的XML文檔,小伙伴看完了本文可以去小試牛刀。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲区视频在线观看 | 精品国产高清a毛片无毒不卡 | 亚洲综合一区二区 | 国产激情视频一区二区三区 | 久久久国产精品福利免费 | 成人在线视频一区 | 色综合久 | 亚洲日韩欧美一区二区在线 | 久久伊人亚洲 | 中文字幕视频在线免费观看 | 色综合久久久久久久久五月 | 九九九九九九精品免费 | 欧美 亚洲 中文字幕 | 特级毛片免费播放 | 久久蝌蚪| 一级免费毛片 | 一区二区三区精品国产欧美 | 888午夜不卡理论久久 | 四虎在线最新地址4hu | 久久久青草 | 久久99精品久久久久久野外 | 欧美一区二区三区久久久人妖 | 国产精品久久久久尤物 | 日日操夜夜摸 | 在线观看麻豆国产精品 | 爱爱视频天天看 | 亚洲欧美日韩成人网 | 欧美a视频 | 国产成人综合久久亚洲精品 | 亚洲小视频在线观看 | 奇米影视首页 | 国产视频久久久久 | 日本高清不卡在线 | 九九精品视频在线免费观看 | 午夜成年人网站 | 成人精品一区二区久久久 | 美女被羞羞的网站 | 亚洲+自拍+色综合图区一 | 91精品国产91久久综合 | 成在线人免费视频一区二区三区 | 男人的天堂视频在线 |