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

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

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

    Corsair

    My javaWorld
    數據加載中……
    XML精要二

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

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

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

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

    ? <xsd:element name="state">
    ??? <xsd:simpleType>
    ????? <xsd:restriction base="xsd:string">
    ??????? <xsd:length value="2"/>
    ????? </xsd:restriction>
    ??? </xsd:simpleType>
    ? </xsd:element>
    對于 <state><postal-code> 元素,模式用約束定義了新的數據類型。第一個情況使用 <xsd:length> 元素,而第二個情況則使用 <xsd:pattern> 元素定義該元素必須匹配的正則表達式。
    ? <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 模式能力的表面;有整本的書籍討論這個主題。就這篇介紹性文章而言,我們足以說明 XML 模式是描述什么樣的 XML 文檔才算有效的非常強大和靈活的方式。




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

    主站蜘蛛池模板: 国产成人无码综合亚洲日韩| 99精品全国免费观看视频| www.亚洲色图.com| 亚洲AV无码AV吞精久久| 女人被男人桶得好爽免费视频| 亚洲AV无码专区在线亚| 啦啦啦中文在线观看电视剧免费版 | 国产在线观a免费观看| 在线精品亚洲一区二区三区| 国产成人高清精品免费观看| 国产亚洲精品无码拍拍拍色欲| 国产成人精品日本亚洲语音| 免费a级黄色毛片| 中文字幕久无码免费久久| 亚洲真人无码永久在线| 国产情侣久久久久aⅴ免费| 久久噜噜噜久久亚洲va久| 亚洲成人免费网址| 亚洲字幕AV一区二区三区四区| 热99re久久免费视精品频软件| 国产精品亚洲专区在线播放| 亚洲男女内射在线播放| 精品国产免费一区二区三区香蕉 | 亚洲综合久久1区2区3区| 一二三四免费观看在线电影| 亚洲AV无码AV男人的天堂不卡| 国产亚洲?V无码?V男人的天堂 | 亚洲A∨午夜成人片精品网站| 精品97国产免费人成视频 | 国产jizzjizz免费视频| 免费观看在线禁片| 亚洲av乱码一区二区三区香蕉| 国产美女无遮挡免费视频网站 | 亚洲伦另类中文字幕| 最近免费中文字幕视频高清在线看| 男男gay做爽爽免费视频| 亚洲视频在线观看| 毛片基地免费视频a| 国产精品无码永久免费888 | 豆国产96在线|亚洲| 亚洲AV人人澡人人爽人人夜夜 |