java创建多级xml树_月光软件站 - 编程文档 - Java - 用XSL与XML实现多级树形菜单
XSL語言功能強(qiáng)大而奇妙。從前面的例子中,我們可以初步了解到,一個(gè)xsl文檔中使用了很多類似"xsl:xxxxx"這樣的標(biāo)簽,這些標(biāo)簽就是xsl語言的部分。一個(gè)xsl文檔至少是由一個(gè)模板組成的,xsl的解析引擎會(huì)負(fù)責(zé)將xml數(shù)據(jù)按xsl的模板定義來轉(zhuǎn)換。就像上面的例子,就有兩個(gè)模板:
模板可以用來處理特定的xml數(shù)據(jù),通過match屬性來指定。match屬性里的是一個(gè)xpath的表達(dá)式(xpath在本文先不作討論),通過它可以匹配相關(guān)的xml節(jié)點(diǎn)給模板來處理。我們看到在模板中,大部分內(nèi)容都是html的內(nèi)容,只有少量的這樣的標(biāo)簽,非標(biāo)簽的內(nèi)容,在xsl引擎解析時(shí),會(huì)原文保留。當(dāng)遇到標(biāo)簽才做處理。像上面的例子中,有一個(gè)標(biāo)簽,它是將select屬性指定的greeting節(jié)點(diǎn)輸入到當(dāng)前位置。通過xml文檔我們看到greeting節(jié)點(diǎn)值是“Hello, World!”,輸出時(shí)它正好在html的H1標(biāo)簽當(dāng)中,所以它當(dāng)然以大號(hào)的黑體字來顯示了。
常用的xsl標(biāo)簽有很多,常用到的一般有:
xsl:value-of (選擇節(jié)點(diǎn)并輸出)
xsl:apply-templates (對(duì)匹配的節(jié)點(diǎn)應(yīng)用相應(yīng)的模板)
xsl:template (模板定義)
xsl:if (條件判斷)
xsl:choose (多條件分支)
xsl:for-each (循環(huán))
利用這些xsl的標(biāo)簽,我們可以實(shí)現(xiàn)一定的‘?dāng)?shù)據(jù)結(jié)構(gòu)+算法’來完成一部分工作,所以我們說,xsl是一種程序語言,關(guān)于xsl 更詳細(xì)的學(xué)習(xí),你可以看Microsoft的XML SDK文檔,它對(duì)xml, xsl甚至xpath的內(nèi)容講的非常詳細(xì)(感謝Microsoft提供這么好的文檔)。
下面回到正題,如何用xml/xsl實(shí)現(xiàn)一個(gè)多級(jí)樹形菜單。
我來看一下樹形菜單的xml文檔類型定義:
通過這個(gè)定義可以看到,我們的菜單xml結(jié)構(gòu)是由一個(gè)tree根結(jié)點(diǎn)組成。tree節(jié)點(diǎn)可以包含多個(gè)menu節(jié)點(diǎn)。而每個(gè)menu節(jié)點(diǎn)也可以包含多個(gè)menu節(jié)點(diǎn)。這樣就達(dá)到多級(jí)樹形結(jié)構(gòu)的要求。下面來看這個(gè)xml結(jié)構(gòu)的例子:
menu節(jié)點(diǎn)具有5種屬性,分別是:
text,用來作為菜單的顯示文字
icon,菜單的圖標(biāo)
url, 點(diǎn)擊菜單后的地址
target, 顯示地址的目標(biāo)框架
folded, 如果是菜單還有子菜單的話,此屬性決定菜單是否折疊。
其中,text屬性是必須的,其它的根據(jù)需要取舍。
截圖:
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的java创建多级xml树_月光软件站 - 编程文档 - Java - 用XSL与XML实现多级树形菜单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中油资本是干什么的
- 下一篇: php curl viewstate,p