posts - 3, comments - 15, trackbacks - 0, articles - 26
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          XLS入門

          Posted on 2007-04-09 15:01 morcble的blog 閱讀(176) 評論(0)  編輯  收藏

          . XSL入門
          1.XSL---XML
          的樣式表
          HTML
          網頁使用預先確定的標識(tags),這就是說所有的標記都有明確的含義,例如<p>是另起一行<h1>是標題字體。所有的瀏覽器都知道如何解析和顯示HTML網頁。
          然而,XML沒有固定的標識,我們可以建立我們自己需要的標識,所以瀏覽器不能自動解析它們,例如<table>可以理解為表格,也可以理解為桌子。由于XML的可擴展性,使我們沒有一個標準的辦法來顯示XML文檔。
          為了控制XML文檔的顯示,我們有必要建立一種機制,CSS就是其中的一種,但是XSL(eXtensible Stylesheet Language)是顯示XML文檔的首選樣式語言,它比CSS更適合于XML
          2.XSL ---
          不僅僅是一種樣式表
          XSL
          由兩部分組成:
          一是轉化XML文檔;二是格式化XML文檔。
          如果你不理解這個意思,可以這樣想:XSL是一種可以將XML轉化成HTML的語言,一種可以過濾和選擇XML數據的語言,一種能夠格式化XML數據的語言。(比如用紅色顯示負數。)
          3.XSL ---
          它能做什么?
          XSL
          可以被用來定義XML文檔如何顯示,可以將XML文檔轉換成能被瀏覽器識別的HTML文件,通常的,XSL是通過將每一個XML元素"翻譯"HTML元素,來實現這種轉換的。
          XSL
          能夠向輸出文件里添加新的元素,或則移動元素。XSL也能夠重新排列或者索引數據,它可以檢測并決定哪些元素被顯示,顯示多少。
          4.XSL
          IE5中的顯示
          注意:IE5.0中,并不能完全兼容W3C組織發布的最新XSL標準。因為IE5.0是在XSL標準最終確定以前發布的。微軟已經承諾在IE5.5中修正。

          .XSL的轉換

          1.XML轉換成HTML
          XSL
          是如何將XML文檔轉換成HTML文件的呢?我們來看一個例子,下面是XML文檔的一部分:

          <?xml version="1.0" encoding="ISO8859-1" ?>
          <CATALOG>
          <CD>
          <TITLE>Empire Burlesque</TITLE>
          <ARTIST>Bob Dylan</ARTIST>
          <COUNTRY>USA</COUNTRY>
          <COMPANY>Columbia</COMPANY>
          <PRICE>10.90</PRICE>
          <YEAR>1985</YEAR>
          </CD>
          ...

          然后我們將下面的XSL文件作為HTML的模板將XML數據轉換為HTML文件:

          <?xml version=''1.0''?>
          <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
          <xsl:template match="/">
          <html>
          <body>
          <table border="2" bgcolor="yellow">
          <tr>
          <th>Title</th>
          <th>Artist</th>
          </tr>
          <xsl:for-each select="CATALOG/CD">
          <tr>
          <td><xsl:value-of select="TITLE"/></td>
          <td><xsl:value-of select="ARTIST"/></td>
          </tr>
          </xsl:for-each>
          </table>
          </body>
          </html>
          </xsl:template>
          </xsl:stylesheet>

           

          在上面的代碼中, xsl:for-each元素的作用是定位XML文檔中的哪些元素需要按以下模板顯示。select屬性用來定義源文件中的元素名。指定屬性的這種語法又稱為XML
          Pattern(
          模式),類似文件子目錄的表示形式。xsl:value-of元素用來在當前層次中插入子元素的內容模板。

          因為XSL樣式表自身也是一個XML文檔,因此,XSL文件的開頭以一個XML聲明開始。 xsl:stylesheet元素用來聲明這是一個樣式表文件。<xsl:template
          match="/">
          語句表示XML的源文檔在當前目錄下。

          如果為XML文檔加上XSL樣式表,看下面代碼第2行,你的瀏覽器就可以精確的將XML 文檔轉換為HTML文件。

          <?xml version="1.0" encoding="ISO8859-1" ?>
          <?xml-stylesheet type="text/xsl" href="cd_catalog.xsl"?>
          <CATALOG>
          <CD>
          <TITLE>Empire Burlesque</TITLE>
          <ARTIST>Bob Dylan</ARTIST>
          <COUNTRY>USA</COUNTRY>
          <COMPANY>Columbia</COMPANY>
          <PRICE>10.90</PRICE>
          <YEAR>1985</YEAR>
          </CD>

          . XSL--在客戶端的實現

           

          1.JavaScript解決方案
          在上面的章節中我們已經解釋了XSL是如何將XML轉換成HTML文件。方法就是在XML文檔的頭部加入一個XSL樣式表信息,然后讓瀏覽器執行轉換過程。
          這種方法在大部分情況下都做得很好,但是在不支持XML的瀏覽器中就無法正確顯示了。
          一個更好的更全面的解決方案是使用Javascript來實現XMLHTML的轉換。但是使用JavaScript必須得到以下功能支持:
          a.
          允許Javascript代替瀏覽器進行細節檢測;
          b.
          根據不同的需要和不同的瀏覽器使用不同的樣式表。
          對于XSL來說這是完全可行的。設計XSL的目標之一就是允許將一種格式轉換成另一種格式,支持不同的瀏覽器,支持不同的用戶需求。未來的瀏覽器的重要任務就是在客戶端執行XSL的轉換工作。
          2.
          一個具體的實例
          下面是我們上面提到的一個XML文檔(cd_catalog.xml)例子的部分代碼:
          <?xml version="1.0" encoding="ISO8859-1" ?>
          <CATALOG>
          <CD>
          <TITLE>Empire Burlesque</TITLE>
          <ARTIST>Bob Dylan</ARTIST>
          <COUNTRY>USA</COUNTRY>
          <COMPANY>Columbia</COMPANY>
          <PRICE>10.90</PRICE>
          <YEAR>1985</YEAR>
          </CD>
          下面是完整的XSL文件(cd_catalog.xsl)

          <?xml version=''1.0''?>
          <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
          <xsl:template match="/">
          <html>
          <body>
          <table border="2" bgcolor="yellow">
          <tr>
          <th>Title</th>
          <th>Artist</th>
          </tr>
          <xsl:for-each select="CATALOG/CD">
          <tr>
          <td><xsl:value-of select="TITLE"/></td>
          <td><xsl:value-of select="ARTIST"/></td>
          </tr>
          </xsl:for-each>
          </table>
          </body>
          </html>
          </xsl:template>
          </xsl:stylesheet>

          注意,現在XML文件還沒有加入XSL樣式表,還沒有被轉換成HTML文件。
          下面是用JavaSript來實現最后轉換的HTML代碼:

          <html>
          <body>
          <script language="javascript">
          // Load XML
          var xml = new ActiveXObject("Microsoft.XMLDOM")
          xml.async = false
          xml.load("cd_catalog.xml")
          // Load the XSL
          var xsl = new ActiveXObject("Microsoft.XMLDOM")
          xsl.async = false
          xsl.load("cd_catalog.xsl")
          // Transform
          document.write(xml.transformNode(xsl))
          </script>
          </body>
          </html>

          上面代碼中使用了Javascript,如果你不知道如何寫JavaScript,您最好專門學習一下。
          第一段代碼建立一個Microsoft Parser(XMLDOM)解析的對象,并將XML文檔讀入內存;第二段代碼建立另外一個對象并導入XSL文檔;最后一行代碼將XML文檔用XSL文檔轉換,并將結果輸出到HTML文件中。


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


          網站導航:
           
          主站蜘蛛池模板: 永平县| 揭东县| 汶川县| 永城市| 茌平县| 仙游县| 克拉玛依市| 蓬安县| 天长市| 名山县| 吉木乃县| 大竹县| 聂拉木县| 普洱| 达拉特旗| 克什克腾旗| 芦山县| 凭祥市| 大冶市| 利辛县| 广饶县| 平陆县| 茌平县| 涟水县| 皮山县| 梓潼县| 余姚市| 油尖旺区| 沁阳市| 密山市| 财经| 梅州市| 沧源| 珠海市| 长顺县| 瓦房店市| 乐山市| 咸阳市| 甘肃省| 全南县| 新安县|