以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [菜鸟求救]xslt排序  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=57194)


--  作者:danielsue
--  发布时间:12/25/2007 11:49:00 PM

--  [菜鸟求救]xslt排序
有形式如下的XML文件:
===========================
<?xml version="1.0" standalone="yes"?>
<Sample>
<Customer>
 <ID>1</ID>
 <Name>Jim</Name>
 <Sex>Male</Sex>
</Customer>
<Customer>
 <ID>2</ID>
 <Name>Tom</Name>
 <Sex>Male</Sex>
</Customer>
<Customer>
 <ID>3</ID>
 <Name>Mary</Name>
 <Sex>Femle</Sex>
</Customer>

<Order>
 <ID>1</ID>
 <Mark>C</Mark>
 <Price>20</Price>
</Order>
<Order>
 <ID>2</ID>
 <Mark>B</Mark>
 <Price>30</Price>
</Order>
<Order>
 <ID>3</ID>
 <Mark>A</Mark>
 <Price>20</Price>
</Order>
</sample>
=============================
现要取出所有Customer的用户名,并按他们的Order中的Mark排序,这个Xslt该怎么写呢?
如:不排序取出结果为:Jim,Tom,Mary
按他们的Order中的Mark排序后,结果为:Mary,Tom,Jim

新手上路,请各位高手多多指教,万分感谢!


--  作者:Qr
--  发布时间:12/26/2007 8:43:00 AM

--  
没有规律的排序,用手工吧,呵呵!XSL的排序很有限的。


--  作者:enyaxp
--  发布时间:12/26/2007 8:24:00 PM

--  
转成整型数
然后从小到大排序
--  作者:danielsue
--  发布时间:12/27/2007 6:38:00 PM

--  
以下是引用enyaxp在2007-12-26 20:24:00的发言:
转成整型数
然后从小到大排序

您好,能给个示例吗,本人菜鸟,只知道针对某一个节点进行排序,这种复合的排序怎么实现


--  作者:txnnh
--  发布时间:12/29/2007 10:24:00 AM

--  
考虑做两次转换呀。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output indent="yes"/>
 <xsl:template match="Sample">
  <Sample>
   <xsl:for-each select="Customer">
   <xsl:sort select="../Order/Mark"/>
    <Customer>
     <xsl:variable name="correntID" select="ID"/>
     <xsl:copy-of select="*"/>
     <xsl:for-each select="../Order[ID=$correntID]">
      <Remark>
       <xsl:value-of select="Mark"/>
      </Remark>
     </xsl:for-each>
    </Customer>
   </xsl:for-each>
  </Sample>
 </xsl:template>
</xsl:stylesheet>

再对这个结果进行排序就行了。


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