<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

    主站蜘蛛池模板: g0g0人体全免费高清大胆视频| 亚洲欧洲另类春色校园网站| 色婷婷精品免费视频| 最近2019中文字幕mv免费看 | h视频免费高清在线观看| 国产乱子伦精品免费女| 亚洲av无码偷拍在线观看| 在线观看免费精品国产| 精品国产_亚洲人成在线| 四虎精品亚洲一区二区三区| 日韩在线观看视频免费| 亚洲自偷自偷在线制服| 久久伊人免费视频| 亚洲一区二区三区免费在线观看 | 国产免费久久精品| 一级毛片免费观看不收费| 国产亚洲成人久久| 久久国产乱子伦精品免费一| 久久久久亚洲精品日久生情 | 亚洲视频中文字幕在线| 免费阿v网站在线观看g| 亚洲自偷自偷在线成人网站传媒| 色播在线永久免费视频| 九九免费久久这里有精品23| 精品亚洲综合在线第一区| 思思re热免费精品视频66| 在线精品自拍亚洲第一区| 国产L精品国产亚洲区久久| 91成人在线免费观看| 亚洲中文字幕无码mv| 亚洲色偷偷综合亚洲AV伊人| 日韩午夜理论免费TV影院| 亚洲砖码砖专无区2023| 亚洲欧洲日产国码av系列天堂 | 黄床大片30分钟免费看| 日韩亚洲欧洲在线com91tv| 欧亚精品一区三区免费| 国产伦精品一区二区免费| 亚洲国产精品自在线一区二区 | 亚洲AV无码乱码国产麻豆| 最近2019中文字幕免费看最新|