編程之道

          無論是批評的,贊揚的,指著的都請EMAIL給我,你的建議將是我前進的動力! 聯(lián)系我

          XML回憶錄-學不可以已

                   考試終于考好了,休息了一天然后繼續(xù)以前未完成的struts框架學習。其實我知道怎么用config.xml。就是沒搞懂為什么config.xml能夠把MVC給聯(lián)系起來,于是決定復習一下XML。
                   XML 可用于各種不同的應用程序,但其實質(zhì)是:XML 是一種表示數(shù)據(jù)的方式。

                   1。文檔定義類型和命名空間
          1.1   XML的強大之處在于它可以自己定義標記,但是需要一個文檔來定義標記的含義,這樣解析器才能核查數(shù)據(jù)是否正確。這個文檔定義類型被成為(Document Type Definition)DTD.
          比方說一個XML文件
          <peson name="john" sex="male"/>
          里有個sex屬性,那性別的話除了男就是女了,解析器本來是不知道sex是性別的意思,那屬性值怎么填都不會錯的。如果想讓解析器知道sex值只能是男或女,那就要定義DTD
          <!DOCTYPE 根元素 [
                   <!ELEMENT peson EMPTY>
                   <!ATTLIST peson
                      name CDDATA #REQUIRED
                      sex (MALE | FEMALE) #REQUIRED   
                   >
          ]>
             我其實并不喜歡DTD,DTD和XML怎么看都很不舒服。

          1.2   命名空間   主要目的是為了避免(元素名相同,內(nèi)容不同)。不過前面翻閱IBM資料庫的時候一篇文章里寫命名空間可能要被W3C取消掉了。

              
                      2。用CSS和XSL顯示XML文檔
           2.1      由于XML主要是用來描述數(shù)據(jù)的,所以在顯示數(shù)據(jù)方面沒有HTML那么直接,想要達到HTML那樣的效果,就需要CSS和XSL樣式表。
          寫2個例子一看就明白了:
          <?xml version="1.0" encoding="UTF-8"?>
          <!--引用一個外部CSS樣式表-->
          <?xml:stylesheet  type="text/css" href="test.css"?>
          <!--引用一個xsl樣式表-->
          <?xml:stylesheet  type="text/xsl" href="test.xsl"?>
          <Resume>
          <ID id="1">
           
          <Name>John</Name>
           
          <Sex>male</Sex>
           
          <Age>22</Age>
           
          <Skill>IT</Skill>
           
          </ID>
           
          <ID id="2">
           
          <Name>Tom</Name>
           
          <Sex>male</Sex>
           
          <Age>25</Age>
           
          <Skill>Worker</Skill>
           
          </ID>
          </Resume>

          <!--test.css-->
          Resume
          {display: block;}
          id
          {display: block;}
          Name
          {display: block; font-size:120%;}
          Sex
          {display:red; text-indent:2em}
          Skill
          { display:red; text-indent:2em}
          Age
          { display:red; text-indent:2em}
          <?xml version="1.0" encoding="UTF-8"?>
          <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
              
          <xsl:template match="Resume">
              
          <html>
                  
          <head>
                      
          <title>簡歷</title>
                  
          </head>
                  
          <body>
                      
          <xsl:for-each select="ID">
                      
          <font color="red"><xsl:value-of select="Name"/></font><br></br>                
                      
          <xsl:value-of select="Sex"/><br></br>                
                      
          <xsl:value-of select="Age"/><br></br>                
                      
          <xsl:value-of select="Skill"/><br></br>        
                      
          <p></p>
                      
          </xsl:for-each>
                  
          </body>
              
          </html>
              
          </xsl:template>
          </xsl:stylesheet>

          XSL語法還是比較簡單的,可以說一看就明白。兩者比較一下,還是XSL直觀,靈活一點,不過還是不方便,這也是為什么HTML還如此鼎盛的原因。
          2.2   簡單介紹下XSL的語法
           2.21     XSL中最重要的概念就是模板,它是由一個一個模板組成。
          //定義模板
           <xsl:template match="/">
          ....
           <xsl:apply-templates select="Resume" />//調(diào)用該模板,有點象調(diào)用方法();
          .....
           </xsl:template>
          //(方法定義)
           <xsl:template match="Resume">
          ......
           </xsl:template>

           2.22   判斷語法
             循環(huán)語句
          <xsl:for-each select="元素名稱"></xsl:for-each>
             條件語句
          <xsl:if test=""></xsl:if>



           

                       3。文檔對象模型DOM和SAX

          3.1  DOM把文檔作為一個對象,通過編程的方式來查詢或改變文檔。
          DOM是XML在內(nèi)存中的樹狀結(jié)構(gòu),當XML文件被載人解析器中解析后,在內(nèi)存中就建立了一顆相應的樹。
          3.2   什么是XML解析器?
                解析就是讀取文檔并將文檔分解為能夠進行分析的元素的過程。XML解析器是WEB應用程序最基本勾踐塊。它是有2個基本API組成:DOM 和SAX。
          3.3   DOM的優(yōu)點在于可以進行隨機重復訪問;缺點就是由于DOM是將XML文檔全部載入內(nèi)存中,所以對內(nèi)存消耗很大,不適合比較大的XML文檔。
               
          3.4   SAX是可擴展標記語言的簡單應用程序編程接口。由于SAX解析時不創(chuàng)建顯示數(shù)據(jù)結(jié)構(gòu),因此它比DOM的效率更好。
          不過它的缺點就是只能讀只前進。
             DOM和SAX的例子以后會添加進來,所以這里就不寫了。

          將所學到的知道用一張表聯(lián)系起來,情看:

          學習筆記只是簡單地敘述了下XML基本內(nèi)容有哪些技術(shù),至于想更深刻的理解XML。無它,多動手。

          posted on 2005-08-22 20:33 瘋流成性 閱讀(484) 評論(0)  編輯  收藏 所屬分類: XML


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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 余干县| 临潭县| 防城港市| 齐河县| 栖霞市| 朝阳区| 舞阳县| 凤庆县| 景东| 滕州市| 余干县| 县级市| 晴隆县| 正定县| 顺义区| 宁武县| 大厂| 青河县| 巴青县| 中方县| 敖汉旗| 中超| 澄迈县| 三明市| 禄劝| 武宣县| 舞钢市| 津南区| 苍梧县| 壶关县| 四会市| 保亭| 商水县| 张家口市| 崇阳县| 丹巴县| 南木林县| 唐海县| 肇东市| 宿松县| 玉山县|