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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    [導入]xslt有什么用

    Posted on 2006-03-05 00:02 canonical 閱讀(867) 評論(0)  編輯  收藏 所屬分類: 設計理論

         adun今天問我xslt到底有什么用。相對于其他技術,它有什么存在的必要性。
        xslt的主要作用是對xml結構的轉換,即它是一種描述結構變換規則的語言。不過也可以將它與我們更熟悉的用于生成html(結構)的模板語言作一個對比。
    1. 兩者都能直接生成xml格式的文本(結構)
    2. 兩者都有循環和判斷等邏輯處理語句。
    3. 模板語言可以通過EL表達式等語言取得源數據, xslt通過xpath語法取得源數據.
    4. 模板語言通過自定義tag等機制實現分解和組合, xslt通過xsl:call-template等語法實現分解與組合.

         tpl等模板語言直接操縱java中的對象, 體現的是圖(Graph)模型, 并通過對象函數封裝了部分動態性. 一般訪問的時候是通過短程關系逐級訪問,例如x.y.funcA().b。利用apache項目組的jxpath包,我們也可以使用類似于xpath的語 法在對象圖上進行全局訪問。
        xslt使用嚴格定義的xpath語法訪問Tree結構,具有很強的數據操縱能力,例如我們可以通過//mynode等語法輕易的實現節點的聚合,構造出 新的結構。在一般xslt包的實現中,都提供了javascript擴展,可以使用javascript構造出的數據節點。

         在tpl這樣的模板語言中java中的數據對象結構與tpl中的模板結構(處理規則的結構)是兩分的,而在xslt中輸入數據結構與xslt自身處理規則 的機構卻是統一的。實際上tpl這樣的模板語言主要是基于過程語義,即先做。。。,用到。。。,然后。。。, 而xslt對于輸入數據的結構具有明確的全局性假設,主要是一種轉換語義,即不論在什么情況下,只要遇到。。。,就做。。。。 在xslt中可以通過xpath語法指定處理規則針對數據(輸入結構)的的觸發條件, 而在tpl中只能通過<c:decorator>為tpl標簽指定轉換器,而無法針對數據指定處理規則。

         在數據訪問模型這一方面,原則上說xslt與模板語言各有優勢。實際在用于html生成的過程中,xpath的全局訪問和匹配能力一般難以得到發揮,而 xml格式的限制又在一定程度上阻礙了使用靈活的數據供體,這方面模板語言有一定的優勢。但是xslt的約束更強也有本質性的好處,它使用xml數據并輸 出xml數據,維護了結構的同質性,便于管道操作。因為假設更明確,xslt對于xml格式的數據的操縱和封裝能力也要強于模板語言。例如它可以使用來為 節點追加屬性。

         xslt在用于xhtml生成時的一個主要劣勢在于它是對變換規則的分解之后的描述,而我們所希望得到的是最終的結果,即這些規則綜合應用所生成的結果。 雖然xslt的語法是xml語言,與xhtml在語法格式上保持了一致性。但是在xslt中,xslt的標簽破壞了xhtml語義上的結構,使得目前無法 做到所見即所得。我們不得不在頭腦中運行xslt規則來想象最終的結果,這無疑是痛苦的。模板語言在這方面要輕松許多。

         xslt的另一個問題是有時xml語法顯得過于冗長了。在操縱一些局部結構的時候,xml節點并不一定是合適的表達。例如

    <xsl:value-of select="$x"/> 對比 ${x},


    <xsl:call-template name="subrule">
        <xsl:with-param name="argA"><xsl:value-of select="substring-after($path,'.')"/></xsl:with-param>
    </xsl:call-template>
    對比
    <my:subrule argA="${path.substringAfter('.')}" />

    在調用子模板方面,顯然xslt封裝的抽象層次也要弱于tpl模板語言。


         xslt作為一種xml格式的結構變換語言,維護了xml世界的概念完整性,其意義無疑是重大的。但并不是所有時候xml都是最適的描述模型。我們最好還 是將它與其他技術結合使用。目前在witrx平臺中,我們對于xslt的使用主要是對tpl模板進行布局和過濾處理,即xslt用于對處理規則進行變換, 而將根據數據生成html這個最細致的工作留給過程處理能力和封裝能力更強的tpl模板語言。

    主站蜘蛛池模板: 免费人成大片在线观看播放| 免费高清A级毛片在线播放| 成人av片无码免费天天看| 日韩一级在线播放免费观看| 亚洲国产区男人本色在线观看| 中文字幕在线免费观看| 日韩一区二区在线免费观看| 亚洲中文久久精品无码1| 国内精自视频品线六区免费| 亚洲一区二区三区久久久久| 国产日本一线在线观看免费| 亚洲一区二区三区在线观看蜜桃| 日本免费人成在线网站| jiz zz在亚洲| 日韩一级免费视频| 无码免费又爽又高潮喷水的视频 | 亚洲AV无码乱码精品国产| 亚洲无码在线播放| 手机看片国产免费永久| 亚洲第一极品精品无码久久| 免费不卡在线观看AV| 亚洲无砖砖区免费| 日本免费一二区在线电影| 人人公开免费超级碰碰碰视频| 亚洲中文字幕在线第六区| 日韩精品久久久久久免费| 亚洲av专区无码观看精品天堂| 永久免费毛片手机版在线看| 亚洲AV色香蕉一区二区| 精品无码人妻一区二区免费蜜桃| 亚洲一级毛片免费看| 国产成人免费一区二区三区| 黄色网址免费在线观看| 亚洲美女视频一区| 国产老女人精品免费视频| 你是我的城池营垒免费观看完整版| 久久亚洲私人国产精品vA | 青柠影视在线观看免费| 久久精品国产亚洲AV嫖农村妇女| 久久久久国产精品免费免费搜索 | 亚洲国产精品福利片在线观看|