全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)常見(jiàn)問(wèn)題正文

Schema約束是什么?【JavaWeb概述】

更新時(shí)間:2023-01-03 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  XML Schema也是一種用于定義和描述XML文檔結(jié)構(gòu)與內(nèi)容的模式語(yǔ)言,它的出現(xiàn)克服了DTD的局限性。下面通過(guò)對(duì)XML Schema與DTD進(jìn)行比較,給出XML Schema所具有的一些顯著優(yōu)點(diǎn)。

  1.DTD采用非XML語(yǔ)法格式,缺乏對(duì)文檔結(jié)構(gòu)、元素、數(shù)據(jù)類(lèi)型等的全面描述。而XML Schema采用XML語(yǔ)法格式,而且它本身也是一種XML文檔,因此,XML Schema的語(yǔ)法格式比DTD更容易理解。

  2.XML具有非常嚴(yán)格的合法性要求,雖然DTD和XML Schema都用于對(duì)XML文檔進(jìn)行描述,且都被作為驗(yàn)證XML合法性的基礎(chǔ),但是DTD自身合法性的驗(yàn)證必須采用另外一套機(jī)制,而XML Schema則采用與XML文檔相同的合法性驗(yàn)證機(jī)制。

  3.XML Schema對(duì)名稱(chēng)空間的支持度非常高,而DTD幾乎不支持名稱(chēng)空間。

  4.DTD支持的數(shù)據(jù)類(lèi)型非常有限。例如,DTD可以指定元素中必須包含字符文本(PCDATA),但無(wú)法指定元素中必須包含非負(fù)整數(shù)(nonNegativeInteger),而XML Schema比XML DTD支持更多的數(shù)據(jù)類(lèi)型,包括用戶(hù)自定義的數(shù)據(jù)類(lèi)型。

  5.DTD定義約束的能力非常有限,無(wú)法對(duì)XML實(shí)例文檔做出更細(xì)致的語(yǔ)義限制,例如,其無(wú)法很好地指定一個(gè)元素中的某個(gè)子元素必須出現(xiàn)7~12次;而XML Schema定義約束的能力非常強(qiáng)大,可以對(duì)XML實(shí)例文檔做出細(xì)致的語(yǔ)義限制。

  通過(guò)上面的比較可以發(fā)現(xiàn),XML Schema的功能比DTD強(qiáng)大很多,但相應(yīng)的語(yǔ)法也比DTD復(fù)雜很多,一個(gè)簡(jiǎn)單的Schema文檔如文件8-5所示。

  文件8-5 Simple.xsd

<? xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="root" type="xs:string"/>
</xs:schema>

  在文件8-5中,第1行是文檔聲明,第2行中以xs.schema作為根元素,表示模式定義的開(kāi)始。由于根元素xs:schema的屬性都在http://www.w3.org/2001/XMLSchema名稱(chēng)空間中,因此,在根元素上必須聲明該名稱(chēng)空間。

1590032240449_視頻資源獲取.jpg

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!