XSLT學習筆記

          一、XSL:擴展樣式語言,主要包含:XSLT(用于轉化XML的語言),XPath(在XML歷練導航的語言),XSL-FO(將XML文檔格式化的語言)

          二、語言發展起因:XML語言是用來表示數據的自解釋性語言,它的標簽是隨意定義的,不像HTML那樣,標簽具有特定的含義,因此,是無法在瀏覽器里面顯示XML的,如果需要,則必須使用另外一種語言將XML轉化成類似HTML語言的形式,這樣就誕生了XSLT,也就是XSL Transform語言,它定義了怎么去顯示一個XML文件。

          三、語言語法簡介:
          1.<xsl:template>元素用于構建模版,
          match 屬性用于關聯 XML 元素和模板。match 屬性也可用來為整個文檔定義模板。match 屬性的值是 XPath 表達式(舉例,match="/" 定義整個文檔)。
          當XSLT處理器使用XSL式樣表轉換XML文檔時,處理器將遍歷XML文檔的樹狀結構,一次瀏覽每個節點,并將瀏覽的節點與式樣表中的每個模板規則的模式進行比較。如果處理器找到了與模板規則的模式相匹配的節點,處理器就會輸出此規則的模板。模板通常包含了一些元素指令、新的數據,或者從源XML文檔中復制的數據。詳細解釋可見:http://lavasoft.blog.51cto.com/62575/60408

          2.<xsl:apply-template>
          首先展示一個例子:
          <xsl:template match = "chapter/title">
          <h1>
          <xsl:apply-templates/>
          </h1>
          </xsl:template>

          <xsl:apply-template>是說對匹配的Node或者Element應用XSLT的內置模版(
          內置模板就是當XSLT轉換器找不到用戶為元素定義的模板時,所使用的缺省模板。
          詳細解釋可見:
          http://blog.sina.com.cn/s/blog_5920510a0100p0rd.html

          四、JavaScript解決方案
          我們是通過以下途徑完成這個工作的:向 XML 文件添加 XSL 樣式表,并通過瀏覽器完成轉換。

          即使這種方法的效果很好,在 XML 文件中包含樣式表引用也不總是令人滿意的(例如,在無法識別XSLT的瀏覽器這種方法就無法奏效)。

          更通用的方法是使用 JavaScript 來完成轉換。

          通過使用 JavaScript,我們可以:

          • 進行瀏覽器確認測試
          • 根據瀏覽器和使用者的需求來使用不同的樣式表


          以下是代碼范例:(來自:http://www.w3school.com.cn/xsl/xsl_client.asp

          <html>
          <body>

          <script type="text/javascript">

          // Load XML 
          var xml = new ActiveXObject("Microsoft.XMLDOM")
          xml.async 
          = false
          xml.load(
          "cdcatalog.xml")

          // Load XSL
          var xsl = new ActiveXObject("Microsoft.XMLDOM")
          xsl.async 
          = false
          xsl.load(
          "cdcatalog.xsl")

          // Transform
          document.write(xml.transformNode(xsl))

          </script>

          </body>
          </html>


          五、何時轉換?
          1.既可以在服務器端轉化成可以顯示的文件:
          JavaScript 解決方案無法工作于沒有 XML 解析器的瀏覽器。為了讓 XML 數據適用于任何類型的瀏覽器,我們必須在服務器上對 XML 文檔進行轉換,然后將其作為 XHMTL 發送到瀏覽器。
          這是 XSLT 的另一個優點。XSLT 的設計目標之一是使數據在服務器上從一種格式轉換到另一種格式成為可能,并向所有類型的瀏覽器返回可讀的數據。

          范例:
          <%
          'Load XML
          set xml 
          = Server.CreateObject("Microsoft.XMLDOM")
          xml.async 
          = false
          xml.load(Server.MapPath(
          "cdcatalog.xml"))

          'Load XSL
          set xsl 
          = Server.CreateObject("Microsoft.XMLDOM")
          xsl.async 
          = false
          xsl.load(Server.MapPath(
          "cdcatalog.xsl"))

          'Transform file
          Response.Write(xml.transformNode(xsl))
          %>

          2.也可以在客戶端轉化成可以顯示的文件





          posted on 2011-10-25 14:41 灰色客棧 閱讀(68) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鹰潭市| 伊通| 枣庄市| 宁安市| 蒙城县| 临洮县| 金寨县| 哈密市| 濉溪县| 邵阳市| 佛冈县| 太仓市| 武陟县| 弋阳县| 澄迈县| 水富县| 聊城市| 汽车| 武陟县| 莎车县| 墨玉县| 马龙县| 蒲江县| 龙口市| 太谷县| 哈密市| 洪雅县| 辽宁省| 巴青县| 宁海县| 栾城县| 宁南县| 调兵山市| 桂平市| 辛集市| 榆树市| 兴安县| 伊吾县| 嘉义市| 土默特左旗| 宁明县|