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

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

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

    1 . XML DTD —— XML 入門知識

    1.1 為什么要學習xml

    XML 發展的非常迅速,這實在令人感到驚奇,有很多的軟件開發商都采用了 XML 標準。我們相信,在未來的 Web 開發中, XML 將和 HTML 一樣受到重視,他們都是 Web 技術的基礎。就連無線標記語言 (WML The Wireless Markup Language ), [ 用于標識運行于手持設備上(比如:手機)的 Internet 程序 ] WML 都采用了 XML 的標準。 XML 將成為最普遍的數據操縱和數據傳輸的工具。

    1.2 什么是XML

    XML EXtensible Markup Language 的縮寫。

    XML 使用文檔類型定義( DTD )或者模式( Schema )來描述數據

    XML 使用 DTD 或者 Schema 后就是自描述的語言

    1.3 XML HTML的主要區別

    XML 是被設計用來描述數據的,重點是:什么是數據,如何存放數據。
    HTML
    是被設計用來顯示數據的,重點是:顯示數據以及如何顯示數據更好上面。

    他們在格式上也存在巨大區別,相對講 xml 格式要求嚴格:

    a. 所有的 XML 文檔必須有一個結束標記

    開始標簽和結束標簽必須配套,也就是必須寫成 <p></p> 或者 <high></ high >

    b. 空元素必須關閉

    不允許出現單標簽,但標簽必須關閉,關閉使用 <p/> 或者 <high/>

    c. 所有標簽都區分大小寫

    d. 所有標簽都必須合理嵌套

    層次合理比如 <p><high></high></p> 這樣就合理。

    e. 所有標簽的屬性值必須使用雙引號 (””) 或者但引號括起來

    f.  xml 只能有一個根元素

    1.4 XML 文檔組成

    xml 文檔在邏輯上主要有以下 5 個部分組成:

    1.xml 聲明

    xml 文檔總是以一個 xml 聲明開始,其中指明所用的 xml 版本、文檔的編碼、文檔的獨立性信息。格式為:

    <?xml version=”1.0” encoding=”gb2312” standalone=”yes”?>

    其中需要注意的是在問號左右兩邊不能有空格。

    還有其默認編碼是 utf8

    yes 表示文檔是獨立文檔,即不依賴于外部文檔。

    2. 文檔類型聲明

    我們可以用 DTD Document Type Definition 文檔類型定義)來規范 xml 文檔中元素和屬性的規則及相互關系。

    XML SGML Standard Generalized Markup Language,SGML 標準通用標記語言)繼承了用于定義語法規則的 DTD 機制。幾乎所有的 xml 應用都是使用 DTD 來定義的。 DTD 文件也是一個文本文件,通常用 ”.dtd” 作為其擴展名。

    通過文檔類型聲明,指出 xml 文檔所用的 DTD 。文檔類型聲明有兩種形式,一種是聲明 DTD 在一個外部文件中,例如:

    <!DOCTYPE greeting SYSTEM “hello.dtd”>

    1 種是直接在 xml 給出 dtd ,例如:

    <!DOCTYPE greeting [

    <!ELEMENT greeting  (#PCDATA)>

    ]>

    3. 元素

    XML 元素命名必須遵守下面的規則:

    元素的名字可以包含子母,數字和其他字符。

    元素的名字不能以數字或者標點符號開頭。

    元素的名字不能以 XML( 或者 xml Xml,xMl...) 開頭。

    元素的名字不能包含空格。

    盡量不用冒號,冒號在名稱空間中用于分隔名稱空間前綴和本地部分。

     

    2 個細節:

    1.  CDATA

    CDATA 段中包含的都是純字符數據,在字符數據可以出現的任何地方都可以使用 CDATA 段。 CDATA 段主要用于需要將整個文本解釋為字符數據而不是標記的情況下。

    CDATA 段以字符串 ”<![CDATA[  開始, ”]]>” 結束。

    2.  字符引用和預定義實體引用

    xml 5 個特殊字符,小于 < 、大于 > 、雙引號 、單引號 、和號 & 。在數據中需要使用這幾個字符時候可以用通用字符引用和預定義引用:

    請參考:表 1-1 特殊字符的字符引用和預定義實體引用

    字符

    字符引用 10 進制

    字符引用 16 進制

    預定義實體引用

    < 

    <

    &#x3c;

    &lt;

    > 

    >

    >

    &gt;

    "

    "

    &quot;

    '

    '

    &apos;

    &

    &

    &

    &amp;

    4. 注釋

    XML 中注釋的語法基本上和 HTML 中的一樣。 <!-- 這是一個注釋 --> 。注釋不要出現在標記中。

    5. 處理指令

    處理指令允許文檔中包含由應用程序來處理的指令。處理指令的語法和 xml 聲明類似,以 < ?開始,以 ?> 結束。一個常見的樣式表單的處理指令如下所示:

    <?xml–stylesheet href=”hello.css” type=”text/css”?>

    1.5 關于DTD

    符合語法的 XML 文檔稱為結構良好的 XML 文檔。

    通過 DTD 驗證的 XML 文檔稱為有效的 XML 文檔。

    XML Schema(XML 模式 ) 是基于 XML DTD 的替代品。

    通過 DTD ,你的每一個 XML 文件都自身攜帶有關它自身格式的說明。

    通過 DTD ,不同群體的人們可以對使用普通的 DTD 來交換數據的方法達成一致。

     

    含有 DTD 的實例 XML 文件:

    #PCDATA 指明必須是字符數據。

     1 <?xml version="1.0"?>
     2 <!DOCTYPE note [
     3   <!ELEMENT note (to,from,heading,body)>
     4   <!ELEMENT to      (#PCDATA)>
     5   <!ELEMENT from    (#PCDATA)>
     6   <!ELEMENT heading (#PCDATA)>
     7   <!ELEMENT body    (#PCDATA)>
     8 ]>
     9 <note>
    10   <to>Tove</to>
    11   <from>Jani</from>
    12   <heading>Reminder</heading>
    13   <body>Don't forget me this weekend</body>
    14 </note>
    15 

    如果 DTD 對于你的 XML 文件是外部而言,那么它會在含有以下句法構造的 DOCTYPE 聲明中預先包裝進去。如:

    1 <?xml version="1.0"?>
    2 <!DOCTYPE note SYSTEM "note.dtd">
    3 <note>
    4 <to>Tove</to>
    5 <from>Jani</from>
    6 <heading>Reminder</heading>
    7 <body>Don't forget me this weekend!</body>
    8 </note>

    下面是一份包含了 DTD "note.dtd" 文件副本:

    1 <! ELEMENT note (to,from,heading,body) >
    2 <! ELEMENT to (#PCDATA) >
    3 <! ELEMENT from (#PCDATA) >
    4 <! ELEMENT heading (#PCDATA) >
    5 <! ELEMENT body (#PCDATA) >  

    1.6 XSL

    XSL (全稱是:可擴展的樣式單語言,the eXtensible Stylesheet Language)CSS樣式單功能要強大的多。XSL的一個主要的用途就是將XML文檔轉換成HTML格式的文件,然后再交付給瀏覽器,由瀏覽器顯示轉換的結果。XML的可擴展樣式單語言。

    1.7 XML 數據島

    HTML 頁面中嵌入 XML 數據

    使用非官方標準的 <xml> 標記可以將 XML 數據嵌入到 HTML 頁面中。

    XML 數據可以象下面的例子那樣嵌入 HTML 頁面 :

    1 <xml id="note">
    2 <note>
    3 <to>Tove</to>
    4 <from>Jani</from>
    5 <heading>Reminder</heading>
    6 <body>Don't forget me this weekend!</body>
    7 </note>
    8 </xml>

    或者象下面這樣嵌入外部單獨的 XML 文件 :

    <xml id="note" src="note.xml">

    </xml>

    注意那個 <xml> 標記是一個 HTML 元素,而不是一個 XML 元素。

     

    數據綁定

     

    XML 數據島可以綁定到 HTML 元素上(比如表格)。

    在下面的例子中,一個 XML 數據島( ID=cdcat )被從外部 XML 文檔載入。一個 HTML 的表格綁定到此數據島上。 HTML 表格內部的 span 元素使用 datafld 屬性和 XML 文檔相應的 XML 元素相互綁定。

     1 <html>
     2 <body>
     3 <xml id="cdcat" src="cd_catalog.xml"></xml>
     4 <table border="1" datasrc="#cdcat">
     5 <tr>
     6 <td><span datafld="ARTIST"></span></td>
     7 <td><span datafld="TITLE"></span></td>
     8 </tr>
     9 </table>
    10 </body>
    11 </html>
    12 

     

    寫到這里想起原來看 js 的一個應用實例,以數據島實現了無刷新分頁程序。

    代碼如下:

      1 
      2 
      3  <xml id="users">
      4 
      5 <userGroup>
      6 
      7   <user>
      8 
      9     <userid>user hcm</userid>
     10 
     11     <name>name hechangmin</name>
     12 
     13   </user>
     14 
     15   <user>
     16 
     17     <userid>user 2</userid>
     18 
     19     <name>name 2</name>
     20 
     21   </user>
     22 
     23   <user>
     24 
     25     <userid>user 3</userid>
     26 
     27     <name>name 3</name>
     28 
     29   </user>
     30 
     31   <user>
     32 
     33     <userid>user 4</userid>
     34 
     35     <name>name 4</name>
     36 
     37   </user>
     38 
     39   <user>
     40 
     41     <userid>user 5</userid>
     42 
     43     <name>name 5</name>
     44 
     45   </user>
     46 
     47   <user>
     48 
     49     <userid>user 6</userid>
     50 
     51     <name>name 6</name>
     52 
     53   </user>
     54 
     55   <user>
     56 
     57     <userid>user 7</userid>
     58 
     59     <name>name 7</name>
     60 
     61   </user>
     62 
     63   <user>
     64 
     65     <userid>user 8</userid>
     66 
     67     <name>name 8</name>
     68 
     69   </user>
     70 
     71   <user>
     72 
     73     <userid>user 9</userid>
     74 
     75     <name>name 9</name>
     76 
     77   </user>
     78 
     79 </userGroup>
     80 
     81 </xml>
     82 
     83 <table id="datatable" datasrc="#users" temp_src="#users" DATAPAGESIZE="3" width="400" border="1">
     84 
     85 <tr>
     86 
     87     <td><span datafld="userid"></span></td>
     88 
     89     <td><span datafld="name"></span></td>
     90 
     91 </tr>
     92 
     93 </table>
     94 
     95 <script>
     96 
     97 var rs=document.all.users.recordset;
     98 
     99 // 記錄條數
    100 
    101 var itemcount = rs.RecordCount;
    102 
    103 alert (itemcount );
    104 
    105 //
    106 
    107 rs.PageSize=3;  // 設定 recordset 對象的 PageSize 屬性與顯示的頁大小相同
    108 
    109 var pageCount=rs.PageCount; // 獲得總頁數
    110 
    111 var nowpage=1;
    112 
    113 function first()
    114 
    115 {
    116 
    117        document.all.datatable.firstPage();
    118 
    119        nowpage=1;
    120 
    121        document.all.page.value = "";
    122 
    123        testnum.innerText=nowpage;
    124 
    125 }
    126 
    127 function up()
    128 
    129 {    
    130 
    131        if(nowpage==1)
    132 
    133        {
    134 
    135               document.all.page.value ="";
    136 
    137               testnum.innerText=nowpage;
    138 
    139        }
    140 
    141        else
    142 
    143        {     document.all.datatable.previousPage();
    144 
    145               nowpage=nowpage-1;
    146 
    147               document.all.page.value ="";
    148 
    149               testnum.innerText=nowpage;
    150 
    151        }    
    152 
    153 }
    154 
    155 function down()
    156 
    157 {
    158 
    159       
    160 
    161        if(nowpage==pageCount)
    162 
    163        {
    164 
    165               document.all.page.value ="";
    166 
    167               testnum.innerText=nowpage;
    168 
    169        }
    170 
    171        else
    172 
    173        {
    174 
    175               document.all.datatable.nextPage();
    176 
    177               nowpage=nowpage+1;      
    178 
    179               document.all.page.value = "";           
    180 
    181               testnum.innerText=nowpage;
    182 
    183        }
    184 
    185 }
    186 
    187 function last()
    188 
    189 {
    190 
    191        document.all.datatable.lastPage();
    192 
    193        nowpage=pageCount;
    194 
    195        document.all.page.value = "";
    196 
    197        testnum.innerText=nowpage;
    198 
    199 }
    200 
    201 function chang(num)
    202 
    203 {
    204 
    205  
    206 
    207        if(num<=pageCount&&num>=1)
    208 
    209        {
    210 
    211               first();
    212 
    213               if(num==1)
    214 
    215               {
    216 
    217                      nowpage=num;
    218 
    219                      document.all.page.value = "";                  
    220 
    221                      testnum.innerText=num;
    222 
    223                      return ;
    224 
    225               }
    226 
    227               for(var i=1;i<num;i++)
    228 
    229               {
    230 
    231                      down();
    232 
    233               }
    234 
    235               nowpage=num;
    236 
    237               document.all.page.value = "";           
    238 
    239               testnum.innerText=nowpage;
    240 
    241        }
    242 
    243 }
    244 
    245 function count()
    246 
    247 {
    248 
    249        document.write(pageCount);
    250 
    251  
    252 
    253 }
    254 
    255 function check(str)
    256 
    257 {
    258 
    259        if(str<=pageCount&&str>=1)
    260 
    261        {
    262 
    263               document.all.changbutton.disabled=false;
    264 
    265        }
    266 
    267 }
    268 
    269 </script>
    270 
    271 共 <script>count();</script> 頁
    272 
    273 當前第 <span id=testnum>1</span> 頁
    274 
    275 <input type="button" onClick="chang(document.getElementById('page').value)" id="changbutton" name="changbutton"  value=" 轉到 " disabled="true">
    276 
    277 第 <input name="page" type="text" id="page" value="" size="4" onpropertychange="check(document.getElementById('page').value);" > 頁
    278 
    279 <br>
    280 
    281 <button onclick="first()"> 首頁 </button>
    282 
    283 <button onclick="up()"> 上一頁 </button>
    284 
    285 <button onclick="down()"> 下一頁 </button>
    286 
    287 <button onclick="last()"> 最后一頁 </button>

     

     

    從這個程序里受到了很大啟發的。感覺 xml 的應用也會更加多。

    posted on 2007-02-15 13:16 -274°C 閱讀(1068) 評論(2)  編輯  收藏 所屬分類: XML


    FeedBack:
    # re: xml學習總結之一
    2007-02-15 13:42 | BeanSoft
    WAP 2.0 使用 XHTML, 不再是基于 XML 的 WML 了. 現在手機上的瀏覽器看普通網頁除了腳本不行, 大部分內容都無問題. 我的多普達手機基本上就是 IE 手機版.  回復  更多評論
      
    # re: xml學習總結之一
    2007-02-15 13:48 | αβγ
    謝謝,糾正。  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914354
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 久久久久国色AV免费观看| 一级毛片试看60分钟免费播放| 2019中文字幕在线电影免费| 亚洲av综合av一区| 99热这里只有精品免费播放| 亚洲一二成人精品区| 亚洲毛片在线免费观看| 亚洲AV色吊丝无码| 日韩免费无码一区二区视频| 美女黄色毛片免费看| 国产亚洲精品成人a v小说| ww在线观视频免费观看w| 亚洲区小说区图片区QVOD| 久久国产乱子精品免费女 | 中文字幕亚洲免费无线观看日本| 亚洲精品国精品久久99热| 青青草国产免费国产是公开| 国产成人亚洲综合| 久久久免费的精品| 亚洲一区二区三区播放在线 | 四虎永久成人免费影院域名| 成人免费夜片在线观看| 亚洲第一视频网站| 成人免费无毒在线观看网站| 免费高清A级毛片在线播放| 亚洲成AV人片在线播放无码| 青青青国产在线观看免费| 久久精品国产亚洲av天美18| 青青草原亚洲视频| 免费精品国偷自产在线在线| 亚洲第一se情网站| 亚洲国产高清视频| 日韩电影免费在线观看视频| 人妻在线日韩免费视频| 亚洲国产精品网站久久| 亚洲av无码成人精品区在线播放 | 四虎影视无码永久免费| 亚洲人成未满十八禁网站| 亚洲伊人色欲综合网| 日韩电影免费在线观看中文字幕 | 久久精品国产亚洲AV嫖农村妇女|