CSDN博客

img slzcanyu

动态导航制作(xml+xsl)

发表于2004/9/20 12:20:00  1135人阅读

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

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

tree.xml

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

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

tree.ascx

Imports System.Xml
Imports System.Xml.Xsl
Imports System.Xml.XPath
Imports System.IO

 
Public Property Sort()Property Sort() As String
        
Get
            
Return _sort
        
End Get
        
Set(ByVal Value As String)
            _sort 
= Value
        
End Set
    
End Property

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

        
If Cache("navigation"Is Nothing Then
            
Dim xpDocument As XPathDocument = New XPathDocument(HttpRuntime.AppDomainAppPath & "/Navigation/tree.xml")
            Cache(
"navigation"= xpDocument
        
End If
        
Dim Xsl As XslTransform = New XslTransform
        Xsl.Load(HttpRuntime.AppDomainAppPath 
& "/Navigation/tree.xsl")

        
Dim xArgList As XsltArgumentList = New XsltArgumentList
        xArgList.AddParam(
"NavigationName""", Me.Sort)

        
Dim sw As StringWriter = New StringWriter
        Xsl.Transform(
CType(Cache("navigation"), XPathDocument), xArgList, sw)

        Label1.Text 
= sw.ToString
    
End Sub

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

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

效果:http://www.imagechina.net/imagechina
0 0

相关博文

我的热门文章

img
取 消
img