国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
用XSLT生成網(wǎng)頁菜單(1)_1
用XSLT生成網(wǎng)頁菜單(1)
日期:2005-2-17 16:18:33   來源:網(wǎng)上轉(zhuǎn)貼   編輯:本站轉(zhuǎn)  作者:未知  發(fā)送給好友
四、 XSLT
轉(zhuǎn)換菜單的XML (menu.xsl) 的XSLT (menu.xsl) 為:
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Menu Test</TITLE>
</HEAD>
<BODY leftmargin="0" topmargin="0">
<xsl:apply-templates select="menus"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="menus">
<script>
var NoOffFirstLineMenus=<xsl:value-of select="count(child::*)"/>;
var StartTop=<xsl:value-of select="@top"/>;
var StartLeft=<xsl:value-of select="@left"/>;
var FirstLineHorizontal=<xsl:value-of select="@style"/>;
<xsl:apply-templates select="menu">
<xsl:with-param name="pr" select="‘‘"/>
</xsl:apply-templates>
</script>
<script type="text/javascript" src="menu_com.js"/>
</xsl:template>
<xsl:template match="menu">
<xsl:param name="pr"/>
Menu<xsl:value-of select=""/><xsl:value-of select="position()"/>=new Array(‘<xsl:value-of select="@caption"/>‘,‘<xsl:value-of select="@url"/>‘, ‘‘, <xsl:value-of select="count(child::*)"/>, 20, 120);
<xsl:if test="count(child::*) > 0">
<xsl:apply-templates select="menu">
<xsl:with-param name="pr" select="concat(,position(), ‘_‘)"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
這里XSLT一共有三個(gè)模板。
第一個(gè)模板 <xsl:template match="/"> 它生成簡單的HTML框架和一個(gè)空白的網(wǎng)頁,除了調(diào)用第二個(gè)模板來插入菜單外,沒有其他功能。實(shí)際應(yīng)用中可以擴(kuò)充這個(gè)模板加入網(wǎng)頁的內(nèi)容。
第二個(gè)模板 <xsl:template match="menus"> 讀取存儲(chǔ)為 menus 屬性的top, left和style控制網(wǎng)頁菜單的位置和類型(style=0為垂直菜單,style=1為水平菜單), 并且調(diào)用第三個(gè)模板繪制菜單項(xiàng)。
第三個(gè)模板 <xsl:template match="menu"> 生成了各個(gè)菜單項(xiàng),它能遞歸處理嵌套子菜單項(xiàng)的情況。這里使用了三個(gè) XSLT 函數(shù)[4]:position() 用于監(jiān)測菜單的順序號,count(child::*) 用于判別是否具有子菜單,concat(,position(), ‘_‘) 最終生成了HV menu所需要的菜單變量名。
五、 實(shí)例
我們用一段 javascript (test _menu.htm) 實(shí)現(xiàn)XSLT轉(zhuǎn)換,以及顯示轉(zhuǎn)換后的效果。
<script>
load_xml("menu.xml", "menu.xsl");
function load_xml(xmlf, xslf) {
try {
var myxml = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
myxml.async = false;
myxml.load(xmlf);
//alert(myxml.xml);
var myxsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
myxsl.async = false;
myxsl.load(xslf);
html = myxml.transformNode(myxsl);
document.write(html);
}
catch (exception) {
alert(exception.description);
}
}
</script>[page]
這段程序在 IE 瀏覽器中創(chuàng)建MSXML[5]對象,然后輸出結(jié)果 HTML。讀者可以嘗試下載本文的范例程序[8],實(shí)際體驗(yàn)網(wǎng)頁菜單的效果。
鑒于Netscape瀏覽器不支持創(chuàng)建MSXML對象,我們可以在IIS服務(wù)器端轉(zhuǎn)換后的返回 HTML[6]。本文介紹的網(wǎng)頁菜單就能在Netscape瀏覽器中顯示和運(yùn)行。
六、 結(jié)論
用XML來表達(dá)菜單結(jié)構(gòu)非常方便并且易于理解,當(dāng)通過本文介紹的XSLT把菜單XML轉(zhuǎn)換為網(wǎng)頁菜單引擎的調(diào)用接口后,為網(wǎng)頁制作菜單就十分容易了,只需要用普通的文本編輯器編輯XML文件。本文使用了 HV Menu引擎,如果使用其他的引擎,還可以編制一個(gè)類似XSLT來配合調(diào)用引擎的接口。最后,XML和XSLT是平臺(tái)無關(guān)的標(biāo)準(zhǔn),我們還可以在apache服務(wù)器[7]中和JSP服務(wù)器[8]中使用本文的方法。
【學(xué)習(xí)心得】
本文是學(xué)習(xí)XML及XSL技術(shù)的一個(gè)很好的實(shí)例。不過使用XML和XSL制作網(wǎng)頁菜單僅僅是它們的一個(gè)很小的應(yīng)用方面,XML和XSL的使用還有更多更加廣泛的應(yīng)用值得我們?nèi)W(xué)習(xí)和探討。
本文中所制作的菜單效果雖然已經(jīng)很出色,但是還是具有一定的缺點(diǎn)。例如菜單的位置控制、樣式的擴(kuò)充性,當(dāng)子菜單過長時(shí)(超過瀏覽器縱向顯示的長度)無法正確顯示不可見的子菜單項(xiàng)等等。不過本文所使用的JS腳本給我們留出了很多擴(kuò)展功能的接口函數(shù)。在長達(dá)25KB、600行的JS文件中,我們可以對菜單效果做進(jìn)一步的改動(dòng)。
另外,微軟的網(wǎng)站以及MSDN的網(wǎng)站的導(dǎo)航條也運(yùn)用了XML和XSL技術(shù),我寫的《仿XP風(fēng)格的導(dǎo)航條制作教程》一文當(dāng)中就是基于微軟網(wǎng)站的導(dǎo)航條而寫的,感興趣的朋友可以參考一下。
用XSLT生成網(wǎng)頁菜單(1)
日期:2005-2-17 16:18:33   來源:網(wǎng)上轉(zhuǎn)貼   編輯:本站轉(zhuǎn)  作者:未知  發(fā)送給好友
四、 XSLT
轉(zhuǎn)換菜單的XML (menu.xsl) 的XSLT (menu.xsl) 為:
[page]
這段程序在 IE 瀏覽器中創(chuàng)建MSXML[5]對象,然后輸出結(jié)果 HTML。讀者可以嘗試下載本文的范例程序[8],實(shí)際體驗(yàn)網(wǎng)頁菜單的效果。
鑒于Netscape瀏覽器不支持創(chuàng)建MSXML對象,我們可以在IIS服務(wù)器端轉(zhuǎn)換后的返回 HTML[6]。本文介紹的網(wǎng)頁菜單就能在Netscape瀏覽器中顯示和運(yùn)行。
六、 結(jié)論
用XML來表達(dá)菜單結(jié)構(gòu)非常方便并且易于理解,當(dāng)通過本文介紹的XSLT把菜單XML轉(zhuǎn)換為網(wǎng)頁菜單引擎的調(diào)用接口后,為網(wǎng)頁制作菜單就十分容易了,只需要用普通的文本編輯器編輯XML文件。本文使用了 HV Menu引擎,如果使用其他的引擎,還可以編制一個(gè)類似XSLT來配合調(diào)用引擎的接口。最后,XML和XSLT是平臺(tái)無關(guān)的標(biāo)準(zhǔn),我們還可以在apache服務(wù)器[7]中和JSP服務(wù)器[8]中使用本文的方法。
【學(xué)習(xí)心得】
本文是學(xué)習(xí)XML及XSL技術(shù)的一個(gè)很好的實(shí)例。不過使用XML和XSL制作網(wǎng)頁菜單僅僅是它們的一個(gè)很小的應(yīng)用方面,XML和XSL的使用還有更多更加廣泛的應(yīng)用值得我們?nèi)W(xué)習(xí)和探討。
本文中所制作的菜單效果雖然已經(jīng)很出色,但是還是具有一定的缺點(diǎn)。例如菜單的位置控制、樣式的擴(kuò)充性,當(dāng)子菜單過長時(shí)(超過瀏覽器縱向顯示的長度)無法正確顯示不可見的子菜單項(xiàng)等等。不過本文所使用的JS腳本給我們留出了很多擴(kuò)展功能的接口函數(shù)。在長達(dá)25KB、600行的JS文件中,我們可以對菜單效果做進(jìn)一步的改動(dòng)。
另外,微軟的網(wǎng)站以及MSDN的網(wǎng)站的導(dǎo)航條也運(yùn)用了XML和XSL技術(shù),我寫的《仿XP風(fēng)格的導(dǎo)航條制作教程》一文當(dāng)中就是基于微軟網(wǎng)站的導(dǎo)航條而寫的,感興趣的朋友可以參考一下。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
XSLT: Insert node in XML document | Geekality
XSLT轉(zhuǎn)換XML小結(jié)
W3C XSL 活動(dòng) | 菜鳥教程
PHP5中使用XSLT擴(kuò)展
XML認(rèn)證教程,第 4 部分: XSL樣式單
XSLT輕松入門第二章:XSLT的實(shí)例
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服