用幾個例項學習XSL

2021-04-01 15:39:03 字數 2139 閱讀 7134

乙個具體的xslt樣式單文件:

<?xml version="1.0" encoding="gb2312" ?>

學生花名冊

姓名

籍貫

年齡

**

接著介紹xslt常用的幾條語句。

xmlns:xsl指示了xsl的命名空間,在xslt標準中,定義了xslt的命名空間為 http://.w3./1999/xsl/transform,然而在ie5中不支援這個名字空間,需要用到微軟自己的名字空間http://.w3./tr/wd-xsl。

xsl:template元素有乙個mode屬性,可以根據需要去匹配不同模式的模板。若將前例作如下修改:

...學生花名冊

.title

......

學生花名冊

.title

此外,模板總是與節點相對應的,乙個節點可能對應於不同的模板,那麼如何確定各模板匹配的先後次序呢?xslt中可為xsl:template設定優先順序,寫法是:

//n為優先級數

xsl:sort排序處理

按大小寫排序

以id為關鍵字按大寫優先排序

以id為關鍵字按小寫優先排序

按字母順序排序

以id為關鍵字按字母公升序排序

以id為關鍵字按字母降序排序

按資料型別排序

以id為關鍵字按文字型別排序,如對於一組id資料101,2,44,305 來說,排序結果是101,2,305,44

以id為關鍵字按資料型別排序,上面一組資料的排序結果是2,44,101,305

另外,還有一種指定排序的方法,就是在前面學生花名冊例中所使用的order-by: 也可使得輸出學生時按名字排序。

元素與屬性建立

建立元素

xsl:element

學生花名冊

學生花名冊

建立屬性

xsl: attribute

color:blue 學生花名冊

學生花名冊

建立文字

xsl:text (可以保護文字中的空白字元)

這是學生花名冊

這是學生花名冊

建立處理指令

xsl:processing-instruction

href="book.css" type="text/css"

<?xml-stylesheet href="book.css" type="text/css"?>

建立注釋

xsl:comment

以下是學生花名冊,請勿刪改!

節點拷貝

在對xml文件進行處理時,xslt還可以通過拷貝的方式複製節點,方法是利用 xsl:copy和xsl:copy-of。其中xsl:copy只拷貝當前節點,不包括子節點和屬性;而xsl:copy-of的拷貝內容則包括當前節點、子節點和屬性。例如對於:

ais a char

樣式單:

copy-of :

copy :

**:

copy-of : ais a char

copy :

輸出格式與編碼問題

xslt是乙個轉換語言,它的目的是將xml源文件轉換為另一種格式文件,它的輸出結果可以是html文件,也可以是帶css的xml文件。具體的輸出格式由xsl:output 指定。如果要輸出為html文件,則寫為:

同樣,要輸出xml文件寫為:

如果文件中不出現xsl:output,將預設輸出為xml文件,但如果在匹配模板時使用了 標記,則輸出為html文件。輸出為html文件時系統都會自動加上下面語句:

此外,還可以利用xsl:output指定編碼方式,如utf-8,utf-16,gb2312等。例如: 它指定了該xslt的輸出結果是html格式,編碼方式為中文。

-------------以上參考自ibm關於xml認證教程

用xml和xsl做網頁例項

用xml和xsl做網頁。直接大家儲存兩個檔案執行即可。cdcatalog.xml 相當於html cdcatalog.xsl 相當於css cdcatalog.xml empire burlesque bob dylan usacolumbia 10.90 1985 empire burlesqu2...

用XSL進行日期格式轉換

xsl做日期格式轉換的函式,廢話不多說,源 如下 version 1.0 2005.03.26 01 58 於重慶南坪 7 yyyy.mm.dd 7 yyyy年mm月dd日 4 日期轉換 日期原格式 新格式轉換結果 測試檔案 2005.12.01 2005.01.01 2005.12.31 2005...

用js向xsl 加入變數

操作方式就是用js向xsl 加入變數 然後在xsl檔案中使用該變數引數 eg 1 在js中如下 xmldoc new activexobject msxml2.domdocument.3.0 xmldoc.async false xmldoc.load xml context.xml 要宣告為自由格...