<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Corsair

    My javaWorld
    數(shù)據(jù)加載中……
    XML精要二

    DTD和Schema簡介
    DTD和Shema用來定義將用來表示數(shù)據(jù)的元素
    DTD語法
    例子:
    <!-- address.dtd -->
    <!ELEMENT address (name, street, city, state, postal-code)>
    <!--ELEMENT 是元素定義的關(guān)鍵字,要大寫,并且注意前面不能加空格,后面要留一個(gè)空格?,元素名后也要有一個(gè)空格-->
    <!--元素后面的括號里面定義了它與其他元素的層次關(guān)系,同時(shí)也定義了子元素的實(shí)現(xiàn)順序-->
    <!ELEMENT name (title? first-name, last-name)>
    <!-- 關(guān)于定義元素意義相關(guān)的符號有以下幾種:
    ?語義符號:??????
    ????????
    ??這個(gè)元素要么有一個(gè)要么沒有。
    ????????*???這個(gè)元素要么沒有,要么有多個(gè)。(閉包)

    ??????
    ??+???這個(gè)元素要么有一個(gè)要么有多個(gè)。(正閉包)
    ?關(guān)系符號:
    ?????????|????
    豎線符號表示選擇列表 例如可以這樣寫:<!ELEMENT name ((title|first-name)?, last-name)>
    ?????????表示tiltle和first-name可以二選一個(gè)。

    -->
    <!ELEMENT title (#PCDATA)> <!-- PCDATA表示title元素的類型為字符類型-->
    <!ELEMENT first-name (#PCDATA)>
    <!ELEMENT last-name (#PCDATA)>
    <!ELEMENT street (#PCDATA)>
    <!ELEMENT city (#PCDATA)>
    <!--關(guān)于屬性-->
    <!ATTLIST city state CDATA
    #REQUIRED
    關(guān)鍵字 CDATA#REQUIRED 告訴解析器 state 屬性包含文本并且是必需的(如果它是可選的,用 CDATA #IMPLIED 即可)。
    postal_code CDATA
    (1|2|3|4|5|6) "1">
    定義了一個(gè)屬性的可選表,并且指定了一個(gè)默認(rèn)的值是1。
    Schema簡介
    使用 XML 模式,您會有更多的能力來定義什么樣的 XML 文檔是有效的。它們與 DTD 相比有幾個(gè)優(yōu)勢。
    1。XML 模式使用 XML 語法。換句話說,XML 模式是一個(gè) XML 文檔。這意味著您可以象處理任何其它文檔一樣處理模式。例如,您可以編寫一個(gè) XSLT 樣式表,該樣式表將 XML 模式轉(zhuǎn)換成具有自動生成的 JavaScript 代碼的 Web 表單,其中的 JavaScript 代碼可以驗(yàn)證您輸入的數(shù)據(jù)。
    2。XML 模式支持?jǐn)?shù)據(jù)類型。盡管 DTD 確實(shí)支持?jǐn)?shù)據(jù)類型,但很明顯這些數(shù)據(jù)類型是從發(fā)布的角度開發(fā)的。XML 模式支持 DTD 中的所有原始數(shù)據(jù)類型(諸如標(biāo)識和標(biāo)識引用之類的類型)。它們還支持整數(shù)、浮點(diǎn)數(shù)、日期、時(shí)間、字符串、URL 和其它對數(shù)據(jù)處理和驗(yàn)證有用的數(shù)據(jù)類型。
    3。XML 模式是可擴(kuò)展的。除了 XML 模式規(guī)范中定義的數(shù)據(jù)類型以外,您還可以創(chuàng)建自己的數(shù)據(jù)類型,并且可以基于其它數(shù)據(jù)類型派生出新的數(shù)據(jù)類型。
    4。XML 模式有更強(qiáng)的表達(dá)能力。例如,您可以用 XML 模式定義任何 <state> 屬性值不得超過 2 個(gè)字符,或定義任何 <postal-code> 元素的值必須與正則表達(dá)式 [0-9]{5}(-[0-9]{4})? 相匹配。您無法用 DTD 做這些事。

    通過一個(gè)簡單事例介紹Schema語法:
    下面是與原始名稱和地址 DTD 相匹配的 XML 模式。它增加了兩個(gè)約束:<state> 元素的值必須剛好是兩個(gè)字符長,<postal-code> 元素的值必須與正則表達(dá)式 [0-9]{5}(-[0-9]{4})? 相匹配。盡管這個(gè)模式比 DTD 長很多,但它更清楚地表達(dá)了有效的文檔看起來是什么樣子:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    XML 模式用 <xsd:element> 元素定義了一些 XML 元素。頭兩個(gè)定義的元素(<address><name>)由其它元素組成。<xsd:sequence> 元素定義了包含在這兩個(gè)元素中的元素的序列
    ? <xsd:element name="address">
    ??? <xsd:complexType>
    ????? <xsd:sequence>
    ??????? <xsd:element ref="name"/>
    ??????? <xsd:element ref="street"/>
    ??????? <xsd:element ref="city"/>
    ??????? <xsd:element ref="state"/>
    ??????? <xsd:element ref="postal-code"/>
    ????? </xsd:sequence>
    ??? </xsd:complexType>
    ? </xsd:element>
    與 DTD 版本一樣,XML 模式示例定義 <address> 包含一個(gè) <name>、一個(gè) <street>、一個(gè) <city>、一個(gè) <state> 和一個(gè) <postal-code> 元素,并且依照上面的次序。請注意,該模式實(shí)際上用 <xsd:complexType> 元素定義了新的數(shù)據(jù)類型
    ? <xsd:element name="name">
    ??? <xsd:complexType>
    ????? <xsd:sequence>
    ??????? <xsd:element ref="title" minOccurs="0"/>
    ??????? <xsd:element ref="first-Name"/>
    ??????? <xsd:element ref="last-Name"/>
    ????? </xsd:sequence>
    ??? </xsd:complexType>
    ? </xsd:element>
    大多數(shù)元素包含文本;定義它們很簡單。您只要聲明新的元素,然后指定它的數(shù)據(jù)類型為 xsd:string
    ? <xsd:element name="title"????? type="xsd:string"/>
    ? <xsd:element name="first-Name" type="xsd:string"/>
    ? <xsd:element name="last-Name"? type="xsd:string"/>
    ? <xsd:element name="street"???? type="xsd:string"/>
    ? <xsd:element name="city"?????? type="xsd:string"/>
    定義模式中的元素內(nèi)容
    樣本模式為兩個(gè)元素的內(nèi)容定義了約束:<state> 元素的內(nèi)容必須是兩個(gè)字符長,而 <postal-code> 元素的內(nèi)容必須與正則表達(dá)式 [0-9]{5}(-[0-9]{4})? 匹配。下面演示如何做到那一點(diǎn):

    ? <xsd:element name="state">
    ??? <xsd:simpleType>
    ????? <xsd:restriction base="xsd:string">
    ??????? <xsd:length value="2"/>
    ????? </xsd:restriction>
    ??? </xsd:simpleType>
    ? </xsd:element>
    對于 <state><postal-code> 元素,模式用約束定義了新的數(shù)據(jù)類型。第一個(gè)情況使用 <xsd:length> 元素,而第二個(gè)情況則使用 <xsd:pattern> 元素定義該元素必須匹配的正則表達(dá)式。
    ? <xsd:element name="postal-code">
    ??? <xsd:simpleType>
    ????? <xsd:restriction base="xsd:string">
    ??????? <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/>
    ????? </xsd:restriction>
    ??? </xsd:simpleType>
    ? </xsd:element>
    </xsd:schema>
    這里概要的介紹僅僅觸及 XML 模式能力的表面;有整本的書籍討論這個(gè)主題。就這篇介紹性文章而言,我們足以說明 XML 模式是描述什么樣的 XML 文檔才算有效的非常強(qiáng)大和靈活的方式。




    posted on 2006-11-01 10:21 銀河海盜 閱讀(236) 評論(0)  編輯  收藏 所屬分類: WEB

    主站蜘蛛池模板: 三年片在线观看免费大全| 在线观看人成视频免费无遮挡 | 7x7x7x免费在线观看| 久久亚洲中文字幕精品一区| 污视频网站在线免费看| 国产精品国产自线拍免费软件| 亚洲一区二区三区高清在线观看| 久久精品国产免费观看三人同眠| 亚洲福利视频网址| 无限动漫网在线观看免费| 亚洲AV无码乱码麻豆精品国产| 中国在线观看免费高清完整版| 天天爽亚洲中文字幕| 日韩中文字幕免费| 深夜福利在线视频免费| 亚洲自偷自偷图片| 久热免费在线视频| 亚洲一级毛片免费看| 国产成人精品免费直播| 一级女性全黄生活片免费看| 亚洲尹人香蕉网在线视颅| 情人伊人久久综合亚洲| 亚洲成a人片在线观看无码专区| 男女啪啪免费体验区| 国产免费小视频在线观看| 一道本不卡免费视频| 国产精品亚洲成在人线| 99久久免费精品视频| 2019亚洲午夜无码天堂| 亚洲成人一区二区| 一个人免费视频观看在线www| 亚洲第一页在线视频| 国产一级理论免费版| 日韩精品无码免费专区午夜| 亚洲国产情侣一区二区三区| 在线免费观看韩国a视频| 99精品视频在线观看免费| 亚洲一区二区三区免费在线观看| 亚洲高清成人一区二区三区| 精品熟女少妇av免费久久| 国产精品亚洲精品日韩电影|