以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  排序问题,BT的XML结构,如果根据属性中的值排序?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=86871)


--  作者:zlbpolly
--  发布时间:9/17/2010 12:06:00 AM

--  排序问题,BT的XML结构,如果根据属性中的值排序?
xml格式如下,因为是引用别人的xml,所以格式自己不能改,属性op中又包含多个属性,想按照 on的值排序,比如下下边数据on的值分别是1422,485,870
不知道xsl中怎么取到属性op中on的值,再根据on的值排序?

<Subs TM='1284468025'>
<Sub id="13496" name="出版社1"  op="sc='36';on='1422';vm='8.5'"/>
<Sub id="13498" name="出版社2"  op="sc='35';on='485';vm='7.8'"/>
<Sub id="11829" name="出版社3"  op="spe='1';url='http://www.xml.org.cn/cid_11829.html&#39;;stm='1284466853';sc='40';on='870';vm='9.2'"/>
</Subs>


--  作者:zlbpolly
--  发布时间:9/17/2010 12:52:00 AM

--  
可以截取了,但是为什么substring-before,substring-after的参数中不能带引号'
现在这样截取到的是'1422',需要的是不带单引号的

<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="gb2312" indent="yes"/>
<xsl:template match="/">
 <tree>
 <xsl:for-each  select="//Sub">
  <item text="{@name}" op="{@op}" >
   <xsl:attribute name="order"><xsl:value-of select="substring-before(substring-after(@op,'on='),';')" /></xsl:attribute>
  </item>
 </xsl:for-each> 

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


--  作者:zlbpolly
--  发布时间:9/17/2010 1:07:00 AM

--  
这样可以了
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="gb2312" indent="yes"/>
<xsl:param name="key">'</xsl:param>
 <xsl:param name="from">on='</xsl:param>
  <xsl:param name="target">'</xsl:param>


<xsl:template match="/">
 <tree>
 <xsl:for-each  select="//Sub">
  <item text="{@name}" op="{@op}" >
   <xsl:attribute name="order"><xsl:value-of select="substring-before(substring-after(@op,$from),$target)" /></xsl:attribute>
  </item>
 </xsl:for-each> 

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


--  作者:Qr
--  发布时间:9/17/2010 9:12:00 PM

--  
' --> &apos;
这样就不必用变量了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms