动态导航制作(xml+xsl)

 Feed: 博客园
 Title: 动态导航制作(xml+xsl)
Author: 小春 
0 Comments 

不知道我这个方法算是好呢还是算坏?
不过我感觉这个方法是我目前能写到的最好的一个解决方法了,也是最灵活的一种red_smile.gif
主要采用XML+XSL

tree.xml

None.gif<?xml version="1.0" encoding="gb2312"?>
None.gif
<ct:imagechina xmlns:ct="www.imagechina.com">
None.gif  
<Navigation text="我的影像中国">
None.gif    
<Node href="1">摄影天地</Node>
None.gif    
<Node href="2">发烧友专辑</Node>
None.gif    
<Node href="3">摄友日记</Node>
None.gif  
</Navigation>
None.gif  
<Navigation text="中国摄影家">
None.gif    
<Node href="3">摄影天地</Node>
None.gif    
<Node href="3">摄影天地</Node>
None.gif  
</Navigation>
None.gif  
<Navigation text="影像中国">
None.gif    
<Node href="4">摄影天地</Node>
None.gif  
</Navigation>
None.gif
</ct:imagechina>

tree.xsl
None.gif<?xml version="1.0" encoding="gb2312"?>
None.gif
<xsl:stylesheet
None.gif    
version="1.0"
None.gif    xmlns:xsl
="http://www.w3.org/1999/XSL/Transform"
None.gif    xmlns:ct
="www.imagechina.com">
None.gif
<xsl:param name="NavigationName" select="中国摄影家"></xsl:param>
None.gif
<xsl:template match="ct:imagechina">
None.gif  
<xsl:variable name="day" select="$NavigationName"></xsl:variable>
None.gif  
<xsl:for-each select="Navigation[@text=$NavigationName]/Node">
None.gif     
<href="{@href}"><xsl:value-of select="."/></a><xsl:text disable-output-escaping="yes"><![CDATA[ &nbsp;&nbsp;&nbsp; ]]></xsl:text>
None.gif  
</xsl:for-each>
None.gif
</xsl:template>
None.gif
</xsl:stylesheet>

tree.ascx

None.gifImports System.Xml
None.gif
Imports System.Xml.Xsl
None.gif
Imports System.Xml.XPath
None.gif
Imports System.IO
None.gif
ExpandedBlockStart.gifContractedBlock.gif 
Public Property Sort()Property Sort() As String
InBlock.gif        
Get
InBlock.gif            
Return _sort
InBlock.gif        
End Get
InBlock.gif        
Set(ByVal Value As String)
InBlock.gif            _sort 
= Value
InBlock.gif        
End Set
ExpandedBlockEnd.gif    
End Property

ExpandedBlockStart.gifContractedBlock.gif    
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
InBlock.gif        
'在此处放置初始化页的用户代码
InBlock.gif
        '        Dim xpDocument As XPathDocument = New XPathDocument(HttpRuntime.AppDomainAppPath & "/Navigation/tree.xml")
InBlock.gif

InBlock.gif        
If Cache("navigation"Is Nothing Then
InBlock.gif            
Dim xpDocument As XPathDocument = New XPathDocument(HttpRuntime.AppDomainAppPath & "/Navigation/tree.xml")
InBlock.gif            Cache(
"navigation"= xpDocument
InBlock.gif        
End If
InBlock.gif        
Dim Xsl As XslTransform = New XslTransform
InBlock.gif        Xsl.Load(HttpRuntime.AppDomainAppPath 
& "/Navigation/tree.xsl")
InBlock.gif
InBlock.gif        
Dim xArgList As XsltArgumentList = New XsltArgumentList
InBlock.gif        xArgList.AddParam(
"NavigationName""", Me.Sort)
InBlock.gif
InBlock.gif        
Dim sw As StringWriter = New StringWriter
InBlock.gif        Xsl.Transform(
CType(Cache("navigation"), XPathDocument), xArgList, sw)
InBlock.gif
InBlock.gif        Label1.Text 
= sw.ToString
ExpandedBlockEnd.gif    
End Sub

None.gif
     Dim xArgList As XsltArgumentList = New XsltArgumentList
   xArgList.AddParam(
"NavigationName""", Me.Sort)
主要是传递参数到tree.xsl中,进行对该导航的查找,
None.gif <xsl:for-each select="Navigation[@text=$NavigationName]/Node">
None.gif

扩展:
可以添加字体的颜色<font color=““></<font>,大小等。反正只要是HTML的代码都可以添加进行:)

效果:http://www.imagechina.net/imagechina
menu_1.jpg44783.aspx
阅读更多
个人分类: vb.net 相关
想对作者说点什么? 我来说一句

asp.net与xml制作导航控件

2010年08月12日 24KB 下载

FLASH整站模板和图标导航

2010年05月29日 3.74MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭