以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  关于XSL传参  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=20789)


--  作者:tina
--  发布时间:7/31/2005 12:49:00 AM

--  关于XSL传参
各位大虾,帮帮忙,小妹谢了先!
关于XSL传参,有以下的一个问题:

复制所有的<cd @price='10'>的结点,可以用模式1实现:
模式1:
<xsl:for-each select="cd">
       <xsl:if test="@price='10'">
  <xsl:copy-of select=".">
  </xsl:copy-of>       
 </xsl:if>
</xsl:for-each>

现在,关于test="@price='10'"中的表达式,想通过传参的方式,有模式2和模式3以下两种方式:
模式2:
<xsl:for-each select="cd">
       <xsl:if test="@price=$para">
  <xsl:copy-of select=".">
  </xsl:copy-of>       
 </xsl:if>
</xsl:for-each>

在模式2中,String s = "10",然后s赋给para,解释后等同于模式1

模式3:
<xsl:for-each select="cd">
       <xsl:if test="$para">
  <xsl:copy-of select=".">
  </xsl:copy-of>       
 </xsl:if>
</xsl:for-each>
在模式3中,String s = "@price='10'" ,然后s赋给para,解释后并不等同于模式1,而是把@price='10'看成
了一个固定的字符串,所以这个表达式始终为真,请问:
要等同于模式1,s应该如何赋值?


--  作者:菜籽
--  发布时间:7/31/2005 9:24:00 AM

--  
String s = "@price='10'"  这个能定义成String么?

--  作者:孤独
--  发布时间:7/31/2005 10:34:00 AM

--  
模式3:无法解析.
String s="xxx"?
感觉像C#?怎么跑到XSL了?
--  作者:pearma
--  发布时间:10/15/2005 6:57:00 AM

--  
第3种方式肯定是不行的.
xslt 无法区分你参数的意思.
因为传入的参数有可能是个逻辑比较,也有可能是程序员故意传入的字符串.
我看了看xpath 提供的函数里面,也没有可以替你处理类似比较的功能.
所以,应该是不行的.
--  作者:wglcqupt
--  发布时间:10/15/2005 10:09:00 PM

--  


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
6,261.719ms