以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助] 让 sort 的参数使用变量的 方法  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=87243)


--  作者:jason0324
--  发布时间:10/19/2010 10:20:00 PM

--  [求助] 让 sort 的参数使用变量的 方法
小弟是XML初学者!! , 主要的问题是xsl:sort 里的select="变量" date-type="变量" ,
我的测试文件如下, 但是我一直无法让变量传入sort 内, 但是一直找不到哪里卡住, 请各位大大帮帮忙, 谢谢!!
test.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">


<xsl:template match="/">
        <xsl:call-template name="test">
                <xsl:with-param name="aaa" select="price"></xsl:with-param>
                </xsl:call-template>
        </xsl:template>

        <xsl:template name="test">
                <xsl:param name="aaa"></xsl:param>
                        <xsl:apply-templates select="//book">

                                <xsl:sort select="$aaa" data-type="number" order="descending"></xsl:sort>
                        </xsl:apply-templates>

        </xsl:template>

        <xsl:template match="book">
                <xsl:for-each select="./*">
                        <xsl:value-of select="name(.)"></xsl:value-of> --
                        <xsl:value-of select="."></xsl:value-of><br/>
                </xsl:for-each>

        </xsl:template>
</xsl:stylesheet>

test.xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<booklist>
        <book>
                        <title>A_book</title>
                        <author>A_editer</author>
                        <price>100</price>
                        </book>
                        <book>
                        <title>C_book</title>
                        <author>C_editer</author>
                        <price>300</price>
                        </book>
                        <book>
                        <title>B_book</title>
                        <author>B_editer</author>
                        <price>200</price>
                        </book>
                        <sellbook>
                        <book>
                        <title>E_book</title>
                        <author>E_editer</author>
                        <price>500</price>
                        </book>
                        <book>
                        <title>D_book</title>
                        <author>D_editer</author>
                        <price>400</price>
                        </book>
                        </sellbook>
        
</booklist>


--  作者:Qr
--  发布时间:10/20/2010 1:48:00 PM

--  
没细看,就参数而言,应改为:
<xsl:with-param name="aaa" select="booklist/book/price"></xsl:with-param>

这样,<xsl:template name="test">中就可以输出aaa对就的price值了.


--  作者:jason0324
--  发布时间:10/20/2010 11:04:00 PM

--  
感谢Qr 的回覆 ,
但是我主要是要做排序,而param 的值传不到sort 里的select
我想问一下我查MSND 的资料, with-param 里select 属性是Expression
而 sort 里select 属性是 string-expression
不知到是不是因为属性的关系

突然找到原因, 因為傳入不是字串所以有問題,設定參數的時候加個單引號就可以了   :D


[此贴子已经被作者于2010-10-21 0:38:32编辑过]

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