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

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

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

    【永恒的瞬間】
    ?Give me hapy ?

    1. DTD 簡介

    DTD(Document Type Definition) 定義了 XML 文檔的合法構造塊,他用一系列合法的元素定義文檔結構
    DTD
    可以在 XML 文檔的內部聲明,也可以外部引用

    為什么要用 DTD 呢?
    使用 DTD ,我們每個 XML 文件都可以有自己的格式描述
    使用 DTD ,獨立的組織間可以用公用的 DTD 交換數據
    在你的應用中可以用 DTD 檢驗你從外界得到的數據是否有效

    內部 DOCTYPE 聲明
    語法: <!DOCTYPE root-element [element-declarations]>

    看個例子:
    ?
    <?xml version="1.0"?>
    <!DOCTYPE note [
    ? <!ELEMENT note (to,from,heading,body)>
    ? <!ELEMENT to????? (#PCDATA)>
    ? <!ELEMENT from??? (#PCDATA)>
    ? <!ELEMENT heading (#PCDATA)>
    ? <!ELEMENT body??? (#PCDATA)>
    ]>
    <note>
    ? <to>Tove</to>
    ? <from>Jani</from>
    ? <heading>Reminder</heading>
    ? <body>Don't forget me this weekend</body>
    </note>
    ?

    !DOCTYPE note 定義了這是一個 note 類型的文檔
    !ELEMENT note
    定義 note 4 個子元素 to,from,heading,body
    !ELEMENT to
    定義 to 這個元素是 #PCDATA 類型的
    其他類似

    外部 DOCTYPE 聲明
    語法: <!DOCTYPE root-element SYSTEM "filename">

    例子:
    ?
    <?xml version="1.0"?>
    <!DOCTYPE note SYSTEM "note.dtd">
    <note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>

    note.dtd:
    <!ELEMENT note (to,from,heading,body)>
    <!ELEMENT to (#PCDATA)>
    <!ELEMENT from (#PCDATA)>
    <!ELEMENT heading (#PCDATA)>
    <!ELEMENT body (#PCDATA)>
    ?

    我們已經定義了 DTD ,也按照定義寫了 XML 文檔,那如何驗證呢?下面就用 javascript 驗證一下
    先寫個錯誤的 XML ,然后用 javascript 檢驗
    ?
    note_dtd_error.xml:
    <?xml version="1.0"?>
    <!DOCTYPE note [
    ? <!ELEMENT note??? (to,from,heading,body)>
    ? <!ELEMENT to????? (#PCDATA)>
    ? <!ELEMENT from??? (#PCDATA)>
    ? <!ELEMENT heading (#PCDATA)>
    ? <!ELEMENT body??? (#PCDATA)>
    ]>
    <note>
    <to>Tove</to>
    <fromm>Jani</fromm>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
    </note>

    validate.html:
    <html>
    <body>
    <h3>
    This demonstrates a parser error:
    </h3>

    <script type="text/javascript">
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
    xmlDoc.async="false"
    xmlDoc.validateOnParse="true"
    xmlDoc.load("note_dtd_error.xml")

    document.write("<br />Error Code: ")
    document.write(xmlDoc.parseError.errorCode)
    document.write("<br />Error Reason: ")
    document.write(xmlDoc.parseError.reason)
    document.write("<br />Error Line: ")
    document.write(xmlDoc.parseError.line)
    </script>

    </body>
    </html>
    ?

    運行 validate.html 可以看到以下信息:
    ?
    This demonstrates a parser error:

    Error Code: -1072898028
    Error Reason:
    根據 DTD/Schema ,元素內容無效。預期 : from 。
    Error Line: 12
    ?

    DTD 的概貌和如何驗證已經看過了,接下來看一下 DTD 的具體語法

    2. DTD-XML 構造塊

    DTD 看來, XML 文檔都是由以下簡單的改造塊構成的:
    Elements
    Attributes
    Entities
    PCDATA
    CDATA

    Elements
    Elements
    是主要的構造塊,可以包含文本,其他元素,或者為空,如
    ?<message>some message in between</message>?

    Attributes
    Attributes
    Elements 提供額外信息,他總是在 Elements 的起始標簽中,總是以 name/value 出現

    Entities
    Entities
    是用語定義通用文本的變量, Entities XML 文檔被解析時被展開,下面的是 XML 預定義的實體:

    &lt;????????? <?
    &gt;???????? >?
    &amp;????? &?
    &quot;????? "?
    &apos;???? '?


    PCDATA
    PCDATA
    是字符數據,是會被解析的文本,文本中的 tags 會被當作標記處理, entities 會被展開

    CDATA
    CDATA
    也是字符數據,但他是不會被解析的文本,文本中的 tags 不會被當作標記處理, entities 也不會被展開

    3. Elements

    (1) 聲明一個 Element ,語法:
    ?
    <!ELEMENT element-name category>
    or
    <!ELEMENT element-name (element-content)>
    ?

    (2)Empty elements, 用關鍵字 EMPTY 來聲明
    ?
    <!ELEMENT element-name EMPTY>

    example:
    <!ELEMENT br EMPTY>

    XML example:
    <br />
    ?

    (3)Elements 只包含字符數據時,用 #PCDATA? 來聲明
    ?
    <!ELEMENT element-name (#PCDATA)>

    example:
    <!ELEMENT from (#PCDATA)>
    ?

    (4)Elements with any contents, ANY 聲明時,元素可包含任何可以被解析的數據
    ?
    <!ELEMENT element-name ANY>
    example:
    <!ELEMENT note ANY>
    ?

    (5)Elements with children (sequences)
    ?
    <!ELEMENT element-name
    ?(child-element-name)>
    or
    <!ELEMENT element-name
    ?(child-element-name,child-element-name,.....)>
    ?
    ?example:
    ?<!ELEMENT note (to,from,heading,body)>
    ?

    子元素出現的順序必須和聲明時的一致,子元素也可以有子元素

    (6) 聲明相同元素只出現一次
    ?
    <!ELEMENT element-name (child-name)>

    example:
    <!ELEMENT note (message)>
    說明 message note 中只能出現一次
    ?

    (7) 聲明相同元素至少出現一次
    ?
    <!ELEMENT element-name (child-name+)>

    example:
    <!ELEMENT note (message+)>
    "+"
    說明 message note 中至少出現一次
    ?

    (7) 聲明相同元素出現 0 次或多次
    ?
    <!ELEMENT element-name (child-name*)>

    example:
    <!ELEMENT note (message*)>
    "*"
    說明 message note 中的出現是隨意的
    ?

    (8) 聲明相同元素出現 0 次或一次
    ?
    <!ELEMENT element-name (child-name?)>

    example:
    <!ELEMENT note (message?)>
    "?"
    說明 message note 中可不出現,或者出現一次
    ?

    (9) 聲明 either/or 內容
    ?
    example:
    <!ELEMENT note (to,from,header,(message|body))>
    note
    必須包含一個 to, 一個 from, 一個 header, message body 其中之一
    ?

    (10) 聲明混合內容
    ?
    example:
    <!ELEMENT note (#PCDATA|to|from|header|message)*>
    note
    可以包含 可被解析的字符, to, from, header, message, 并且可以出現任意次
    ?

    4. Attributes

    (1) 聲明 Attributes ,語法:
    ?
    <!ATTLIST element-name attribute-name
    ?attribute-type default-value>
    ?
    ?example:
    ?DTD example:
    <!ATTLIST payment type CDATA "check">

    XML example:
    <payment type="check" />
    ?

    attribute-type 有下列值:
    CDATA???
    字符數據
    (en1|en2|..)???
    值必須是枚舉列表中的一個
    ID??? unique id
    IDREF???
    其他元素的 id
    IDREFS???
    其他 id 列表
    NMTOKEN???
    一個有效的 XML 名字
    NMTOKENS???
    有效的 XML 名列表
    ENTITY????
    一個實體
    ENTITIES???
    一個實體列表
    NOTATION???
    一個符號名
    xml:???
    一個預定義的 XML

    default-value 有下列值:
    value???
    默認值
    #REQUIRED???
    這個屬性必須出現
    #IMPLIED???
    這個屬性不是必須的
    #FIXED value???
    這個屬性的只是固定的


    (2)
    指定一個默認值屬性
    ?
    DTD:
    <!ELEMENT square EMPTY>
    <!ATTLIST square width CDATA "0">

    Valid XML:
    <square width="100" />

    square 被定義為一個空元素,他有一個 CDATA 類型的屬性 width ,如果 width 沒被指定值,那他就是 0
    ?

    (3) #IMPLIED
    語法:
    ?
    <!ATTLIST element-name attribute-name
    attribute-type #IMPLIED>

    example:
    DTD:
    <!ATTLIST contact fax CDATA #IMPLIED>

    Valid XML:
    <contact fax="555-667788" />
    Valid XML:
    <contact />
    ?

    (4) #REQUIRED
    語法:
    ?
    <!ATTLIST element-name attribute_name
    attribute-type #REQUIRED>

    Example
    DTD:
    <!ATTLIST person number CDATA #REQUIRED>

    Valid XML:
    <person number="5677" />

    Invalid XML:
    <person />
    ?

    (5) #FIXED
    語法:
    ?
    <!ATTLIST element-name attribute-name
    attribute-type #FIXED "value">

    Example
    DTD:
    <!ATTLIST sender company CDATA #FIXED "Microsoft">

    Valid XML:
    <sender company="Microsoft" /

    Invalid XML:
    <sender company="W3Schools" />
    ?

    (6) Enumerated attribute values
    ?
    <!ATTLIST element-name
    ?attribute-name (en1|en2|..) default-value>
    ?
    ?DTD example:
    <!ATTLIST payment type (check|cash) "cash">

    XML example:
    <payment type="check" />
    or
    <payment type="cash" />
    ?

    5. Entities
    Entities
    是用來為普通文本定義捷徑
    有兩種聲明方式:
    (1)
    內部聲明
    ?
    Syntax:
    <!ENTITY entity-name "entity-value">

    DTD Example:

    <!ENTITY writer "Donald Duck.">
    <!ENTITY copyright "Copyright W3Schools.">

    XML example:

    <author>&writer;&copyright;</author>
    ?

    (2) 外部聲明
    ?

    posted on 2007-01-12 19:00 ???MengChuChen 閱讀(416) 評論(0)  編輯  收藏 所屬分類: flex2.0
    主站蜘蛛池模板: 国产在亚洲线视频观看| 在线亚洲午夜理论AV大片| 亚洲毛片一级带毛片基地| 国产精品免费久久久久电影网| 国产精品va无码免费麻豆| 亚洲爆乳无码专区www| 四虎影视免费在线| 国产成人久久精品亚洲小说| 波多野结衣一区二区免费视频| 日韩在线观看免费完整版视频| 亚洲成A人片在线观看无码3D| 一级人做人爰a全过程免费视频| 国产亚洲精品福利在线无卡一| 97国免费在线视频| 亚洲精品天天影视综合网| 国色精品卡一卡2卡3卡4卡免费| 亚洲人成高清在线播放| 免费看香港一级毛片| 曰批全过程免费视频免费看| 曰韩亚洲av人人夜夜澡人人爽| 免费视频成人手机在线观看网址| 亚洲AV日韩精品久久久久| 色se01短视频永久免费| 久久亚洲AV成人无码国产电影| 国产国拍亚洲精品福利 | 亚洲精品黄色视频在线观看免费资源| 亚洲午夜无码AV毛片久久| 日本免费中文视频| 亚洲高清中文字幕免费| 亚洲精品国产精品乱码不卞| 99re6在线视频精品免费| 亚洲第一成年人网站| 大胆亚洲人体视频| 午夜网站在线观看免费完整高清观看| 亚洲免费观看网站| 亚洲精品无码专区久久同性男| 99久久国产免费-99久久国产免费| 亚洲人成网站色7799| 亚洲色欲一区二区三区在线观看| 精品香蕉在线观看免费| 无遮挡国产高潮视频免费观看|