XSL支援在檔案中插入script元素,從而允許程式開發人員運用既有的功能;而且,它的用法也非常簡單,只是在調用時需要xsl:eval元素的輔助.
使用eval有以下兩點用法:
1.在XSL中使用script
在XSL中,可以建立一個xsl:script元素,並在元素插入入script指令碼.同時,可以通過xsl:script元素的屬性language來指定指令碼語言,不指定預設為javascript.
下面的xsl檔案利用javascript實現顯示一個隨機數的功能:
<xsl:script language="javascript">
function GetNumber()
{
var number;
number=Math.round(Math.random()*9);
return number;
}
</xsl:script>
<span>
<xsl:eval language="javascript">GetNumber();</xsl:eval>
</span>
2.使用XSL運行時方法
可以在xsl:eval中使用運行時方法.
absoluteChildNumber(node) 返回節點在所有兄弟節點中的位置,從1開始
ancestorChildNumber(nodeName,node) 返回最接近node祖先節點的子節點nodeName的位置
childNumber(node) 返回節點在具有相同名稱的節點中的位置,如果沒有節點和該節點具有相同的名稱,則返回位置1
depth(startNode) 返回節點在樹狀結構中的深度
formatDate(date,format,locale) 使用特定的格式來顯示日期
<!-- 日期格式 --
m - 月份(1-12)
mm - 月份(01-12)
mmm - 月份(Jan-Dec)
mmmm - 月份(January-December)
mmmmm - 月份(取第一個字母)
d - 日期(1-31)
dd - 日期(01-31)
ddd - 星期日期(Sunday-Saturday)
yy - 年份(00-99)
yyyy - 年份(1900-9999)
-- 預設的順序是月-日-年 --
-->
formatIndex(number,format) 使用特定的格式顯示提供的索引
<!-- 下面是索引的格式 --
1 - 標準的數值系統
01 - 首碼為0的數值系統
A - 大寫字母順序A到Z,然後從AA到ZZ
a - 小寫字母順序A到Z,然後從aa到zz
I - 大寫羅馬數字,I,II..
i - 小寫羅馬數字
-->
formatNumber(number,format) 使用特定的格式顯示提供的數值
<!-- 下面是顯示格式 --
# - 只顯示有效數字,並將無效數字省略
0 - 如果數值的數字數目比格式的數字數目少,就顯示無意義的0
? - 為小數點的兩側加上無意義的0,好讓使用固定大小的字形時,數字能夠排成一列
. - 指定小數點的位置
, - 用作千分隔字元或乘上1000將數字放大
% - 以百分比型式顯示數值
E或e - 以特定格式顯示數值
E-或e- - 將指數變成負號來放置負值符號
E+或e+ - 將指數變成負號來放置負值符號,並將指數變成正號來放置正值符號
-->
formatTime(time,format,locale) 使用特定的格式顯示提供的時間
<!-- 顯示時間的格式 --
h - 時(0-23)
hh - 時(00-23)
m - 分(0-59)
mm - 分(00-59)
s - 秒(0-59)
ss - 秒(00-59)
AM/PM - 加入AM或PM並以12時間制顯示
am/pm - 加入am或pm並以12時間制顯示
A/P - 加入A或P並以12時間制顯示
a/p - 加入a或p並以12時間制顯示
[h]:mm - 利用小時來顯示過去的時間
[mm]:ss - 利用分鐘來顯示過去的時間
[ss] - 利用秒來顯示過去的時間
ss.00 - 顯示秒的數值,場所將決定正確的分隔字元
-->
uniqueID(node) 返回節點的唯一ID
上面這些函數可以直接在xsl:eval中使用,調用任何數值來進行計算和顯示.