DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML基礎 >> 用XSLT輕松實現樹形折疊導航欄
用XSLT輕松實現樹形折疊導航欄
編輯:XML基礎     

 

一般我們見到的XML文件是以元素為結點的,隨著層次的不斷加深,逐漸成了一棵樹,這種文件的好處是我們一看就很明白其中的子、父、祖宗、兄弟關系,不方便之處在於,我個人認為,如果層次很深又有很多的兄弟結點的話,那麼文件可能很大而影響處理的效率。正由於XML對描述數據結構的靈活性,所以在某些環境下采用屬性值來描述元素之間的關系。例如花園左邊的TOC(TABLE OF CONTENT),實現它的XML文件通過屬性值來說明元素的類型(NODE OR LEAF), 不過裡面仍有子結點存在, 所以用來TRANSFORM它的XSL文件很復雜,分了好幾種情況。當然今天我們不是談花園TOC的實現方法而是用一種更快速、更巧妙的方法來實現類似的TOC,當然也可以叫"樹形折疊導航欄"。 好了,廢話少說,進入正題。先來看一個很簡單的DTD。 NAVIGATOR.DTD
<!ELEMENT Navigation (Navigator*)>
<!ELEMENT Navigator EMPTY>
<!ATTLIST Navigator ID CDATA #IMPLIED AncestorID CDATA #IMPLIED Layer CDATA #IMPLIED Title CDATA #IMPLIED Childs CDATA #IMPLIED Url CDATA #IMPLIED Image CDATA #IMPLIED>

文件很簡單,可以這樣理解,頂層元素Navigation包含了多個Navigator元素定義了,Navigator不包含元素但有一系列屬性。 也許您已經發現, 屬性中有兩個叫AncestorID Childs的,對了,這兩個屬性是關鍵, 當然還有Layer, 在他們的共同作用下, Navigator元素之間的關系將被明確描述。 好了, 我們來看Navi.xml文件, 以花園TOC做為例子。

查看花園TOC例子:

NAVI.xml
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE Navi SYSTEM "navigator.dtd">
<?xml-stylesheet type="text/xsl" href="navigator.xsl" ?>
<Navigation>
<Navigator ID='1' AncestorID='1' Layer='0' Title='花園首頁' Childs='0' Url='default.asp' Image='images/dc.gif'/>
<Navigator ID='2' AncestorID='2' Layer='0' Title='我的花園' Childs='4' Url='#' Image='default'/>
<Navigator ID='3' AncestorID='2' Layer='1' Title='收藏夾' Childs='4' Url='#' Image='default'/>
<Navigator ID='21' AncestorID='3' Layer='2' Title='我管理的花壇' Childs='0' Url='mybbs.asp?cat=g' Image='images/dc-new.gif'/>
<Navigator ID='22' AncestorID='3' Layer='2' Title='我種下的種子' Childs='0' Url='mybbs.asp?cat=t' Image='images/dc-new.gif'/>
<Navigator ID='23' AncestorID='3' Layer='2' Title='我喜歡的花園' Childs='0' Url='myfavorite.asp?cat=g' Image='images/dc-new.gif'/>
<Navigator ID='24' AncestorID='3' Layer='2' Title='我收藏的文章' Childs='0' Url='myfavorite.asp?cat=t' Image='images/dc-new.gif'/>
<Navigator ID='4' AncestorID='2' Layer='1' Title='個人工具箱' Childs='2' Url='#' Image='default'/>
<Navigator ID='25' AncestorID='4' Layer='2' Title='配置和管理' Childs='0' Url='personal.asp' Image='images/dc-config.gif'/>
<Navigator ID='26' AncestorID='4' Layer='2' Title='花瓣兌換點' Childs='0' Url='apetal.asp' Image='images/dc-config.gif'/>
<Navigator ID='27' AncestorID='2' Layer='1' Title='我的日記本' Childs='0' Url='mydiary.asp' Image='images/dc-diary.gif'/>
<Navigator ID='6' AncestorID='2' Layer='1' Title='好友和短訊' Childs='0' Url='myfriend.asp' Image='images/dc-friends.gif'/>
<Navigator ID='7' AncestorID='7' Layer='0' Title='計算機技術' Childs='2' Url='#' Image='default'/>
<Navigator ID='8' AncestorID='7' Layer='1' Title='DHTML,JScript' Childs='0' Url='bbsgroup.asp?c=6&g=16' Image='images/dc.gif'/>
<Navigator ID='9' AncestorID='7' Layer='1' Title='.NET,ASP+探討' Childs='0' Url='bbsgroup.asp?c=6&g=17' Image='images/dc.gif'/>
<Navigator ID='

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved