国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
schema用法
三、XML Schema數(shù)據(jù)類型







XML Schema提供了一組豐富的內(nèi)置數(shù)據(jù)類型,用于定義元素中允許的類型。下面將介紹一些完全符合C#標(biāo)準(zhǔn)的通用類型。





1、基本數(shù)據(jù)類型







基本數(shù)據(jù)類型是在XML Schema中使用的每種數(shù)據(jù)類型的最基本構(gòu)成塊??梢愿鶕?jù)這些類型構(gòu)造自定義的類型。這些類型包括:





boolean 可以是1(true)或者0(false)。

dateTime 表示時間的部分可選,格式:CCYY-MM-DDThh:mm:ss

例如:2005-3-18T14:48:12

decimal 表示任意精度的十進(jìn)制數(shù)字。

string 字符數(shù)據(jù)。

int 表示從-2,147,483,648到2,147,483,648之間一個整數(shù)。

nonNegativeInteger 表示大于或者等于0的一個整數(shù)。

nonPositiveInteger 表示小于或者等于0的一個整數(shù)。

short 表示從-32768到32767之間的一個整數(shù)。





例如:





<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>

<xsd:element name=”ContactDetails”>

<xsd:complexType>

<xsd:sequence>

<xsd:element ref=”name” />

<xsd:element name=”rate” type=”xsd:decimal” />

</xsd:sequence>

<xsd:attribute name=”lastUpdated” type=”xsd:dateTime” />

</xsd:complexType>

</xsd:element>





<xsd:element name=”name”>

<xsd:complexType>

<xsd:sequence>

<xsd:element name=”first” type=”xsd:string” />

<xsd:element name=”middle” type=”xsd:string” />

<xsd:element name=”last” type=”xsd:string” />

</xsd:sequence>

<xsd:attribute name=”local” type=”xsd:boolean” />

</xsd:complexType>

</xsd:element>

</xsd:schema>





以上文檔對應(yīng)有效的XML文檔如下:





<?xml version=”1.0”?>

<ContactDetails lastUpdated=” 2005-3-18T14:48:12”>

<name local=”true”>

<first>santld</first>

<middle/>

<last>wang</last>

</name>

<rate>10.27</rate>

</ContactDetails>





2、簡單類型







雖然從內(nèi)置數(shù)據(jù)類型中得到了許多的功能,但是在許多情況下,只有數(shù)據(jù)類型來限制數(shù)據(jù)的值是遠(yuǎn)遠(yuǎn)不夠的。這里在學(xué)習(xí)簡單類型之前,先看看關(guān)于約束。





約束方面







enumeration 用空格分開的一組指定的數(shù)值。它把數(shù)據(jù)類型約束為指定的值。

fractionDigit 指定小數(shù)點(diǎn)后的最大位數(shù)。

length 長度單位。

minExclusive 下限值,所有的值都必須大于該值。

maxExclusive 上限值,所有的值都應(yīng)該小于該值。

minLength 長度單位的最小個數(shù)。

maxLength 長度單位的最大數(shù)。

minInclusive 最小值,所有的值都應(yīng)該大于或者等于該值。

maxInclusive 最大值,所有的值都應(yīng)該小于或者等于該值。

pattern 數(shù)據(jù)類型的值必須匹配的指定模式,pattern值必須是一個正則表達(dá)式。

totalDigits 指定小數(shù)最大位數(shù)的值。

whiteSpace 其值為:preserve(值中的空格不能改變),replace(所有的制表

符、換行符和回車符都用空格代替),collapse(執(zhí)行replace,刪

除相鄰的、結(jié)尾處和開頭處的空格)。





要應(yīng)用上述的約束,就要利用元素restriction。這個元素中有2個屬性:id屬性是模式文檔中restriction元素的唯一標(biāo)識符,base屬性設(shè)置為一個內(nèi)置的XSD數(shù)據(jù)類型或者現(xiàn)有的簡單類型定義,他是一種被限制的類型。





例如:



<xsd:restriction base=”xsd:string”>

<xsd:minLength value=”4” />

<xsd:maxLength value=”10” />

</xsd:restriction>



如上,將字符串最小長度限定為4個字符,將最大長度限定為10個字符。





<xsd:restriction base=”xsd:int”>

<xsd:minInclusive value=”1” />

<xsd:maxInclusive value=”100” />

</xsd:restriction>



如上,將一個整數(shù)的取值范圍設(shè)置為1到100之間。





<xsd:restriction base=”xsd:string”>

<xsd:enumeration value=”FistValue” />

<xsd:enumeration value=”SecondValue” />

<xsd:enumeration value=”ThirdValue” />

</xsd:restriction>



如上,字符串只能為枚舉出的三種值。





簡單類型







簡單類型是對一個節(jié)點(diǎn)的可能值進(jìn)一步限制的自定義數(shù)據(jù)類型。創(chuàng)建簡單類型需要利用simpleType元素,其定義如下:





<simpleType id=”ID” name=”NCName” final=”(#all|(list|union|restriction))” />





id屬性應(yīng)唯一的標(biāo)明文檔內(nèi)的simpleType元素,name不能使用冒號字符。simpleType不能包含元素,也不能有屬性,根據(jù)在simpleType中定義的規(guī)則,它基本上是一個值,或者是一個值的集合。





例如:



<xsd:simpleType name=”personsName”>

<xsd:restriction base=”xsd:string”>

<xsd:minLength value=”4” />

<xsd:maxLength value=”8” />

</xsd:restriction>

</xsd:simpleType>





<xsd:element name=”first” type=”personsName” />





以上文檔對應(yīng)有效的XML文檔如下:

<first>Santld</first>





以下就是無效的XML文檔:

<first>SS</first> 或者 <first>Santld wang</first>





再舉個例子:





<xsd:simpleType name=”personsTitle”>

<xsd:restriction base=”xsd:string”>

<xsd:enumeration value=”Mr.” />

<xsd:enumeration value=”Mrs.” />

<xsd:enumeration value=”Miss.” />

</xsd:restriction>

</xsd:simpleType>





<xsd:element name=”title” type=”personsTitle” />





上面定義的類型personsTitle是一個字符串類型,但它的值只能是Mr.、Mrs.或者M(jìn)iss.其中的一個。





復(fù)雜類型







復(fù)雜類型的定義必須使用complexType元素,在這里可以包含屬性和元素。在復(fù)雜類型的使用中,主要是complexType和simpleType配合使用。格式如下:





<xsd:complexType name=”name” />





例如:





<xsd:element name="name" type="FullName" />





<xsd:complexType name="FullName">

<xsd:sequence>

<xsd:element name="first" type="PersonsFirstname" minOccurs="0" maxOccurs="1"

default="John" />

<xsd:element name="middle" type="xsd:string" minOccurs="0"

maxOccurs="unbounded" nillable="true" />

<xsd:element name="last" type="xsd:string" minOccurs="1" maxOccurs="1"

default="Doe" />

</xsd:sequence>

<xsd:attribute name="title" type="PersonsTitle" default="Mr." />

</xsd:complexType>





<xsd:simpleType name="PersonsFirstname">

<xsd:restriction base="xsd:string">

<xsd:minLength value="4" />

<xsd:maxLength value="10" />

</xsd:restriction>

</xsd:simpleType>





<xsd:simpleType name="PersonsTitle">

<xsd:restriction base="xsd:string">

<xsd:enumeration value="Mr." />

<xsd:enumeration value="Mrs." />

<xsd:enumeration value="Miss." />

</xsd:restriction>

</xsd:simpleType>





如上就實(shí)現(xiàn)了一個復(fù)雜類型,該例子實(shí)現(xiàn)了一個復(fù)雜類型FullName,其中包含了兩個簡單類型PersonsFirstname和PersonsTitle。





分組和屬性







在為定義XML文檔而創(chuàng)建的一些更為復(fù)雜的定義中,會有一些元素集、屬性集的組合,這是我們就使用了分組的概念。分組定義中使用的是group元素。





例如:





<xsd:group name=”CityChoice”>

<xsd:choice>

<xsd:element name=”Beijing” type=”xsd:string” />

<xsd:element name=”Shanghai” type=”xsd:string” />

<xsd:element name=”Xian” type=”xsd:string” />

</xsd:choice>

</xsd:group>





<xsd:element name=”City”>

<xsd”group ref=”CityChoice” minOccurs=”1” maxOccurs=”1” />

</xsd:element>





對屬性的分組,應(yīng)該使用attributeGroup元素,例如:





<xsd:attributeGroup name=”contactAttribs”>

<xsd:attribute name=”city” type=”xsd:string” />

<xsd:attribute name=”country” type=”xsd:string” />

<xsd:attribute name=”age” type=”xsd:string” />

</xsd:attributeGroup>





<xsd:element name=”contact”>

<xsd:complexType>

<xsd:attributeGroup ref=”contactAttribs” />

</xsd:complexType>

</xsd:element>





以上文檔對應(yīng)有效的XML文檔如下:





<contact city=”Beijing” country=”China” age=”25” />





內(nèi)容模型







內(nèi)容模型可以對在XML文檔內(nèi)使用的元素、屬性和類型進(jìn)行限制,確定用戶可以在XML實(shí)例的哪些等級添加自己的元素和屬性。





any







當(dāng)在XML中聲明元素時any是默認(rèn)的內(nèi)容模型,該模型可以包含文本、元素和空格。如果允許添加元素的內(nèi)容,且無需屋里修改模式文件,就可以使用該模型。





例如:





<xsd:xchema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

<xsd:element name=”name”>

<xsd:complexType>

<xsd:sequence>

<xsd:element name=”first” type=”xsd:string” />

<xsd:element name=”middle” type=”OtherNames” />

<xsd:element name=”last” type=”xsd:string” />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:complexType name=”OtherNames”>

<xsd:sequence>

<xsd:any namespace=”##any” processContents=”lax” minOccurs=”0”

maxOccurs=”unbounded” />

</xsd:sequence>

</xsd:complexType>

</xsd:schema>





例子中的xsd:any元素說明該類型允許添加內(nèi)容。namespace屬性允許的值為:





##any(元素可以來自任何命名空間)

##other(元素可以來自除了該元素的父元素所在的目標(biāo)命名空間之外的命名空間)

##local(元素不受命名空間的限制)

##targetNamespace(元素來自父元素的目標(biāo)命名空間)





processContents屬性說明對這里所創(chuàng)建的元素進(jìn)行驗(yàn)證時所執(zhí)行的操作,取值有如下3種:

strict(標(biāo)明XML處理器必須獲得和那些命名空間相關(guān)聯(lián)的模式,并驗(yàn)證元素和屬性)

lax(與strict相似,只是如果處理器找不到模式文檔,也不會出現(xiàn)錯誤)

skip(不利用模式文檔驗(yàn)證XML文檔)





上述模式的一個有效實(shí)例如下:





<?xml version=”1.0”?>

<name>

<first>santld</first>

<middle>

<nameInChina>San</nameInChina>

</middle>

<last>wang</last>

</name>





empty







empty元素禁止把文本或者元素作為一個聲明為空的元素的子元素,如果要保證該元素不包括子元素、文本甚至空格,就可以使用它。在XSD中時利用xsd:anyType類型來限定它的,這樣就意味元素只能包含屬性,例如:





<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

<xsd:element name=”contact”>

<xsd:complexType>

<xsd:complexContent>

<xsd:restriction base=”xsd:anyType”>

<xsd:attribute name=”age” type=”xsd:integer” />

</xsd:restriction>

</xsd:complexContent>

</xsd:complexType>

</xsd:element>

</xsd:schema>





以上就是一個復(fù)雜類型,只允許有一個age屬性。在例子里complexContent元素可以表示complexType的內(nèi)容要進(jìn)行擴(kuò)充或者限制,在這里,我們對其內(nèi)容進(jìn)行限制,因此使用了restriction元素,如果擴(kuò)成則使用exension元素。





element(前邊已經(jīng)了解過了)







mixed







最后一個內(nèi)容模型就是mixed,它包含文本、內(nèi)容和屬性。在complexType元素上把mixed屬性的值設(shè)為true,就一個聲明一個mixed內(nèi)容模型了。例如:






<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”>

<xsd:element name=”contact”>

<xsd:complexType mixed=”true”>

<xsd:sequence>

<xsd:element name=”first” type=”xsd:string” />

</xsd:sequence>

<xsd:complexType>

</xsd:element>

</xsd:schema>





上述模式的一個有效實(shí)例如下:





<?xml version=”1.0”?>

<contact>My first name is<first>Santld</first>.</contact>





在例子中contact元素就包含了文本和元素first。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
xsd schema 語法
XML開發(fā)筆記 — 總結(jié)
XML Schema 與 XML DTD的技術(shù)比較與分析
使用W3C XML Schema
Java程序員從笨鳥到菜鳥之(二十五)XML之Schema驗(yàn)證
XMLSchema全接觸
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服