CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  XML/SOAP

急:请问如何在xsl中使用变量???

楼主yyasp(大胡子)2004-08-02 22:54:03 在 Web 开发 / XML/SOAP 提问

我需要在xsl中设置一个变量,在xml每次调用xsl时不断累加,并在xsl中利用变量的值处理不同结果?请问有那位高手可以解决,请不吝赐教! 问题点数:0、回复次数:7Top

1 楼saucer(思归)回复于 2004-08-03 05:25:22 得分 0

cannot,   xsl:variable   is   immutable,   if   you   are   using   MSXML,   you   can   look   into   msxsl:script   to   keep   the   value   or   if   you   can   call   a   recursive   template   to   pass   values   around  
   
  show   your   xml   and   tell   us   what   you   wantTop

2 楼net_lover(【孟子E章】)回复于 2004-08-03 07:12:30 得分 0

http://dotnet.aspx.cc/ShowDetail.aspx?id=4052DA03-51E0-464B-8418-3C1354920F8FTop

3 楼qhyan23(yan)回复于 2004-08-03 07:30:18 得分 0

回答问题的都是5   个星的呀!真是厉害呀!Top

4 楼tttk(网络芝麻)回复于 2004-08-03 08:43:48 得分 0

xslt中的变量是只读变量,无法象其它编程语言中一样进行赋值处理。但是可以采用一些变通的方法,那就是利用xslt中的递归。孟子e章提供的就是这个思路。  
   
  另外,xslt中的变量是无状态变量,无法保存上一次调用的内容,每次在刷新时,结果将重新初始化。Top

5 楼zzzz76(伽菲猫)回复于 2004-08-03 09:38:06 得分 0

恩,以前写xsl的时候,发现变量实际上是常量似的,无法更改,用递归可以实现。  
   
  或者你自己写个扩展函数吧,嘻嘻Top

6 楼yyasp(大胡子)回复于 2004-08-03 12:02:55 得分 0

我现在得到一段XML数据,我需要根据这个数据生成一个横向展示的菜单程序  
  menu.asp:  
  <% dim   sXml,sXsl,XmlDoc,XslDoc  
  sXml   =   "front\public\menu\menustest.xml"  
  sXsl   =   "front\public\menu\menustest.xsl"  
  set   XmlDoc   =   Server.CreateObject("MICROSOFT.XMLDOM")  
  set   XslDoc   =   Server.CreateObject("MICROSOFT.XMLDOM")  
  XmlDoc.async   =   false  
  XslDoc.async   =   false  
   
  if   session("FMenu")=""   then   Response.Redirect     GPathtoTop   &   "default.asp"  
  session("FMenu")=session("FMenu")  
  XmlDoc.loadXML(session("FMenu"))  
  XmlDoc.load(Server.MapPath(GPathtoTop   &   sXml))  
   
  XmlDoc.documentElement.setAttribute   "ROOT"   ,GPathtoTop  
  XmlDoc.documentElement.setAttribute   "ImgPath"   ,GPathtoTop   &   "front/images/menu/"  
   
  XslDoc.load(Server.MapPath(GPathtoTop   &   sXsl))  
  %>  
   
  <script   language="javascript">  
  //....一些脚本的函数,展示菜单  
  //需要形成下面一段,关键是三级菜单的时候msub的编号必须从一开始有次序递增  
  /*  
  mpmenu5=new   mMenu('教育论文','/Lunwen/','self','','','','');  
  mpmenu5.addItem(new   mMenuItem('   学科教学','/Lunwen/Index.Asp?CateID=1','self',false,'学科教学',null,'','','',''));  
  mpmenu5.addItem(new   mMenuItem('   教学管理','/Lunwen/Index.Asp?CateID=2','self',false,'教学管理',null,'','','',''));  
  mpmenu5.addItem(new   mMenuItem('   探索研究','/Lunwen/Index.Asp?CateID=3','self',false,'探索研究',null,'','','',''));  
  mpmenu5.addItem(new   mMenuItem('   名校名师','/Lunwen/Index.Asp?CateID=4','self',false,'名校名师',null,'','','',''));  
  mpmenu5.addItem(new   mMenuItem(null,null,null,true));  
  mpmenu5.addItem(new   mMenuItem('   阅读排行','/Lunwen/Index.asp?order=hits&updown=desc','self',false,'文章阅读排行榜',null,'','','',''));  
  mpmenu6=new   mMenu('精彩论坛','/bbs/','self','','','','');  
  msub1=new   mMenuItem('   ≡日常事务≡','','self',false,'','1','','','','');  
  msub1.addsubItem(new   mMenuItem('   站务论坛','/bbs/list.asp?boardid=1','self',false,'关于本站的日常或其他事务的讨论区',null,'','','',''));  
  msub1.addsubItem(new   mMenuItem('   FTP和会员服务区','/bbs/list.asp?boardid=2','self',false,'本站FTP的使用以及会员们讨论论坛建设的好地方',null,'','','',''));  
  msub1.addsubItem(new   mMenuItem('   需求与补档','/bbs/list.asp?boardid=17','self',false,'大家需要什么都在这里发贴,其他版面不允许发布此类帖子,违者删贴。',null,'','','',''));  
  mpmenu6.addItem(msub1);  
  mpmenu6.addItem(new   mMenuItem(null,null,null,true));  
  msub2=new   mMenuItem('   ≡软件交流≡','','self',false,'','1','','','','');  
  msub2.addsubItem(new   mMenuItem('   软件讨论中心','/bbs/list.asp?boardid=3','self',false,'这里是软件交流天地,我要最新的软件,我要最好的注册...',null,'','','',''));  
  msub2.addsubItem(new   mMenuItem('   操作系统论坛','/bbs/list.asp?boardid=4','self',false,'各种操作系统的最新消息、使用心得体会交流。',null,'','','',''));  
  msub2.addsubItem(new   mMenuItem('   影音无极限','/bbs/list.asp?boardid=5','self',false,'这里提供最新最清晰的DivX   这里发布最劲最High的音乐   想把握最新的娱乐动态?尽在动感!',null,'','','',''));  
  msub2.addsubItem(new   mMenuItem('   游民家园','/bbs/list.asp?boardid=6','self',false,'游民家园',null,'','','',''));  
  mpmenu6.addItem(msub2);  
  mpmenu6.addItem(new   mMenuItem(null,null,null,true));  
  msub3=new   mMenuItem('   ≡技术交流≡','','self',false,'','1','','','','');  
  msub3.addsubItem(new   mMenuItem('   菜鸟天堂','/bbs/list.asp?boardid=7','self',false,'讨论网络技术,关注网络安全。网络的加油站。',null,'','','',''));  
  msub3.addsubItem(new   mMenuItem('   网络技术和安全','/bbs/list.asp?boardid=8','self',false,'讨论网络技术,关注网络安全。网络的加油站。',null,'','','',''));  
  msub3.addsubItem(new   mMenuItem('   编程爱好者论坛','/bbs/list.asp?boardid=9','self',false,'各种编程语言、多媒体知识的交流园地',null,'','','',''));  
  msub3.addsubItem(new   mMenuItem('   硬件讨论区','/bbs/list.asp?boardid=10','self',false,'讨论有关计算机硬件的论坛。',null,'','','',''));  
  msub3.addsubItem(new   mMenuItem('   新硬件大看台','/bbs/list.asp?boardid=15','self',false,',新,精——只介绍讨论最新最酷的硬件产品',null,'','','',''));  
  mpmenu6.addItem(msub3);  
  mpmenu6.addItem(new   mMenuItem(null,null,null,true));  
  ...  
  */  
   
  <%Response.Write(XmlDoc.transformNode(XslDoc))%>    
   
  </script>  
   
  Top

7 楼yyasp(大胡子)回复于 2004-08-03 12:03:07 得分 0

测试xml:  
  <?xml   version="1.0"   encoding="gb2312"?>  
  <?xml:stylesheet   type="text/xsl"   ?>  
   
   
  <Treeroot   ROOT="../../"   ImgPath="../../front/images/menu/">  
  <Tree   PID="1"   ID="38"   Title="个人事务"   RunWin="1"   HelpFile="public/help/notepad/personindex.asp"   URL="">  
  <Tree   PID="2"   ID="39"   Title="通讯录"   RunWin="1"   HelpFile="public/help/addressBook/index.asp"   URL="Front/addressBook/index.asp"/><Tree   PID="2"   ID="40"   Title="个人记事本"   RunWin="1"   HelpFile="public/help/notepad/index.asp"   URL="Front/NotePad/NotePad.asp"/>  
  <Tree   PID="2"   ID="41"   Title="邮件中心"   RunWin="1"   HelpFile=""   URL="Front/mailcenter/mail.asp"/>  
  </Tree>  
  <UMroot><UM   UMTitle="工作总结"   UMURL="Front/Routine/default.asp?pageflag=4"   UMRunWin="1"/></UMroot>  
  </Treeroot>  
   
  xsl:  
  原来生成纵向菜单的程序  
  <?xml   version="1.0"   encoding="gb2312"?>  
  <xsl:stylesheet   language="VBScript"   xmlns:xsl="http://www.w3.org/TR/WD-xsl">  
   
  <xsl:script   language="VBScript">  
          Function   getURL(root)  
          getURL   =   root.getAttribute("HTTPURL")    
          End   Function  
  </xsl:script>  
                   
  <xsl:template   match="/">  
   
          <xsl:apply-templates   />  
  </xsl:template>  
   
  <xsl:template   match="/Treeroot">  
                  <xsl:apply-templates/>          
  </xsl:template>  
   
  <xsl:template   match="Tree[Tree]">  
  <tr><td     style="cursor:'hand';"     colspan="2"   onClick="clickMenu(this)">  
  <xsl:attribute   name="PID"><xsl:value-of   select="@PID"   /></xsl:attribute>  
  <xsl:choose>  
  <xsl:when   test="@PID[.='1']">  
  <xsl:attribute   name="bgcolor">#CCCCCC</xsl:attribute>  
  <xsl:attribute   name="onMouseOver">mOvr(this,'#ffff66')</xsl:attribute>  
  <xsl:attribute   name="onMouseOut">mOut(this,'#cccccc')</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@PID[.='2']">  
  <xsl:attribute   name="bgcolor">#F0F0E1</xsl:attribute>  
  <xsl:attribute   name="onMouseOver">mOvr(this,'#ffff66')</xsl:attribute>  
  <xsl:attribute   name="onMouseOut">mOut(this,'#F0F0E1')</xsl:attribute>  
  </xsl:when>  
  <xsl:otherwise>  
           
  </xsl:otherwise>      
  </xsl:choose>  
  <img   id="imgopen"   hspace="2"   vspace="0">  
  <xsl:attribute   name="src"><xsl:value-of   select="//Treeroot/@ImgPath"   />close.gif</xsl:attribute>  
  </img>  
                  <A>  
  <xsl:if     test="@URL[.!='']">  
  <xsl:attribute   name="HREF"><xsl:value-of   select="//Treeroot/@ROOT"   /><xsl:value-of   select="@URL"   /></xsl:attribute>  
  </xsl:if>  
   
  <xsl:choose>  
  <xsl:when   test="@RunWin[.='0']">  
  <xsl:attribute   name="target">main</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@RunWin[.='1']">  
  <xsl:attribute   name="target">_top</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@RunWin[.='2']">  
  <xsl:attribute   name="target">new</xsl:attribute>  
  </xsl:when>  
  </xsl:choose>  
  <xsl:value-of   select="@Title"   />  
                  </A>  
  </td></tr>  
   
  <tr><td   open="1"   style="Display:none"   colspan="2">    
  <xsl:attribute   name="PDID"><xsl:value-of   select="@PID"   /></xsl:attribute>  
          <table   width="80"   border="0"   cellspacing="0"   cellpadding="0"   align="center">  
          <xsl:apply-templates   />  
          </table>  
  </td></tr>  
   
  </xsl:template>  
   
  <xsl:template   match="Tree[not(Tree)]">  
  <tr><td   id="item1"   style="cursor:'hand';"     colspan="2">  
  <xsl:choose>  
  <xsl:when   test="@PID[.='1']">  
  <xsl:attribute   name="bgcolor">#CCCCCC</xsl:attribute>  
  <xsl:attribute   name="onMouseOver">mOvr(this,'#ffff66')</xsl:attribute>  
  <xsl:attribute   name="onMouseOut">mOut(this,'#cccccc')</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@PID[.='2']">  
  <xsl:attribute   name="bgcolor">#F0F0E1</xsl:attribute>  
  <xsl:attribute   name="onMouseOver">mOvr(this,'#ffff66')</xsl:attribute>  
  <xsl:attribute   name="onMouseOut">mOut(this,'#F0F0E1')</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@PID[.='3']">  
  <xsl:attribute   name="bgcolor">#ffffff</xsl:attribute>  
  <xsl:attribute   name="onMouseOver">mOvr(this,'#ccffcc')</xsl:attribute>  
  <xsl:attribute   name="onMouseOut">mOut(this,'#ffffff')</xsl:attribute>  
  </xsl:when>  
  <xsl:otherwise>  
           
  </xsl:otherwise>      
  </xsl:choose>  
  <img   id="img1"   hspace="1">  
  <xsl:attribute   name="src"><xsl:value-of   select="//Treeroot/@ImgPath"   />item.gif</xsl:attribute>  
  </img>  
   
                  <A>  
  <xsl:choose>  
  <xsl:when   test="@HTTPURL[.!='']">  
  <xsl:attribute   name="HREF"><xsl:eval>getURL(me)</xsl:eval></xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@URL[.!='']">  
  <xsl:attribute   name="HREF"><xsl:value-of   select="//Treeroot/@ROOT"   /><xsl:value-of   select="@URL"   /></xsl:attribute>  
  </xsl:when>  
  <xsl:otherwise>  
   
  </xsl:otherwise>      
  </xsl:choose>  
   
  <xsl:choose>  
  <xsl:when   test="@RunWin[.='0']">  
  <xsl:attribute   name="target">main</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@RunWin[.='1']">  
  <xsl:attribute   name="target">_top</xsl:attribute>  
  </xsl:when>  
  <xsl:when   test="@RunWin[.='2']">  
  <xsl:attribute   name="target">new</xsl:attribute>  
  </xsl:when>  
  </xsl:choose>  
  <xsl:value-of   select="@Title"   />  
                  </A>      
  </td></tr>  
  <xsl:if     test="@PID[.='1']">  
  <tr><td   colspan="2"></td></tr>  
  </xsl:if>  
  </xsl:template>  
   
  <xsl:template   match="/Tree">  
          <xsl:apply-templates   />  
  </xsl:template>  
   
  </xsl:stylesheet>  
   
  我现在修改的XSL用  
  xmlns:xsl="http://www.w3.org/TR/WD-xsl"声明的话,不支持   <xsl:variable,等一些属性,三级菜单不能实现,我如果用xmlns:xsl="http://www.w3.org/1999/XSL/Transform声明,用   MSXML写SCRIPT函数不报错,但是ASP程序中打出来的代码确只有一行:  
  <?xml   version="1.0"   encoding="utf-16"?>  
   
  Top

相关问题

  • 在xsl中使用变量的问题
  • 使用变量出现问题?急救!
  • 急问:关于VARIANT变量的使用
  • public 变量使用
  • Cookie变量使用?
  • 在 xsl 中如何在select中使用变量?
  • java 变量的变量使用
  • ====紧急紧急!!!!======“静态变量与宏定义的使用“。。。。。。
  • 急!!!!!!!!!MFC 中如何定义及使用全局变量?
  • SQL语句中怎样使用变量?紧急!

关键词

  • xsl
  • xml
  • f0
  • 变量
  • e1
  • movr
  • mout
  • ffff66
  • cccccc
  • geturl

得分解答快速导航

  • 帖主:yyasp

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo