<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

    最新評論

    主站蜘蛛池模板: 免费福利网站在线观看| 99ee6热久久免费精品6| 三上悠亚在线观看免费| 久久青草免费91观看| 97性无码区免费| 国产精品久久免费视频| 亚洲综合AV在线在线播放| 久久久久亚洲AV无码观看| 亚洲日本成本人观看| 一级A毛片免费观看久久精品| 玖玖在线免费视频| 91免费资源网站入口| 免费观看国产小粉嫩喷水| 国产亚洲精品岁国产微拍精品| 亚洲综合图片小说区热久久| 亚洲成aⅴ人片久青草影院按摩| 亚美影视免费在线观看 | 亚洲第一页在线视频| 亚洲女女女同性video| 国产成人精品免费大全| 亚洲成人免费网址| 日韩高清在线免费看| 精品亚洲一区二区| avtt天堂网手机版亚洲| 一区二区三区免费视频网站| 99精品一区二区免费视频| 青青青国产免费一夜七次郎| 国产亚洲成AV人片在线观黄桃| 亚洲欧洲日本在线观看| 亚美影视免费在线观看| 中文字幕av无码无卡免费| 久久夜色精品国产亚洲av| 亚洲一区二区三区深夜天堂| 人妻巨大乳hd免费看| 免费视频专区一国产盗摄| 亚洲人成人无码网www国产| 亚洲国产成人超福利久久精品| 五月天婷婷精品免费视频| 国产四虎免费精品视频| 亚洲夜夜欢A∨一区二区三区| 亚洲乱妇老熟女爽到高潮的片|