按照XML节点顺序处理

如果我现在有个xml如下,   在xsl中我想把每个“rowset”用不同的方式显示,有没有一个函数来判断是第几个节点的啊?例如 <xsl:if   test="node()=1"> 表示第一个节点之类的函数。


<rowset>
    <row   num=1>
        <company> A </company>
        <global> 1 </global>
    </row>
    <row   num=2>
        <company> B </company>
        <global> 1 </global>
    </row>
</rowset>    
<rowset>
    <row   num=1>
        <company> C </company>
        <global> 0 </global>
    </row>
    <row   num=2> 数据挖掘工具
        <company> D </company>
        <global> 0 </global>
    </row>
</rowset>    

可以使用   position函数

在match里写表达式   /rowset/row[1],查找rowset下第一个row节点

或如上楼,用position函数

谢了,再问个问题,如下的xml,我想用list形式来显示,请帮忙。
<rowset>
      <row>
            <company> A </company>
            <site> A1 </site>
      </row>
      <row>
            <company> A </company>
            <site> A2 </site>
      </row>
      <row>
            <company> B </company>

数据挖掘实验室


            <site> B1 </site>
      </row>
      <row>
            <company> A </company>
            <site> B2 </site>
      </row>
</rowset>

我想把它显示成如下的list形式
    +A
      A1
      A2
    +B
      B1
      B2
我用了如下的方法,但是不行,好像   for-each   不能嵌套的用于类似我这样的xml结构的,请帮忙解决一下,万分感谢。
  <dl>
      <xsl:for-each   select="rowset/row/company_name[not(preceding::company_name=.)]">
      <dt> <span> <xsl:value-of   select="."/> </span> </dt> 数据挖掘交友
      <dd>
          <ul>
              <xsl:for-each   select="../">
              <xsl:if   test="company_name={company_name}">
              <li> <xsl:value-of   select="../site_name"/> </li>
              </xsl:if>
              </xsl:for-each>
          </ul>
      </dd>

test.xml

XML code
<?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <rowset> <row> <company>A</company> <site> A1 </site> </row> <row> <company>A</company> <site> A2 </site> </row> <row> <company>B</company> <site> B1 </site> </row> <row> <company>B</company> <site> B2 </site> </row> </rowset>

数据挖掘研究院




test.xsl

XML code
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:key name="company_group" match="//company" use="./text()" /> <xsl:template match="/"> <xsl:for-each select="//company[count(.|key("company_group",./text())[1])=1]"> +<xsl:value-of select="." /><br/> <xsl:call-template name="curSites"> <xsl:with-param name="c" select="."/> </xsl:call-template> </xsl:for-each> </xsl:template> <xsl:template name="curSites"> <xsl:param name="c"/> <xsl:for-each select="//row[company=$c]/site"> <xsl:value-of select="." /><br/> </xsl:for-each> </xsl:template> </xsl:stylesheet>
数据挖掘交友

太感谢了,请问有关这方面的资料有没有好书可以推荐呢?

没弄过什么这方面的书.主要是在网上找资料,和查看xml   sdk

我又遇到问题了,我在上面的xsl里想实现二级列表的显示/隐藏功能,但是一直提示我script   error,求大大帮忙。

XML code
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:key name="company_group" match="//company" use="./text()" /> <xsl:template match="/"> <html> <head></head> <body> <script> HideAll = function (obj) { var items = obj.getElementsByTagName("li"); for (var j=0; j&lt;items.length; j++) { if (items[j].style.display != "block") { items[j].style.display = "block"; } else { items[j].style.display = "none"; } } </script> <xsl:for-each select="//company[count(.|key("company_group",./text())[1])=1]"> <ul onclick="HideAll(this)"><xsl:value-of select="." /> <xsl:call-template name="curSites"> <xsl:with-param name="c" select="."/> </xsl:call-template> </ul> </xsl:for-each> </body> </html> </xsl:template> <xsl:template name="curSites"> <xsl:param name="c"/> <xsl:for-each select="//row[company=$c]/site"> <li> <xsl:value-of select="." /> </li> </xsl:for-each> </xsl:template> </xsl:stylesheet>
数据挖掘交友

XML code
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:key name="company_group" match="//company" use="./text()" /> <xsl:template match="/"> <html> <head></head> <body> <script> function HideAll(obj) { var items = obj.getElementsByTagName("li"); for (var j=0; j <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text> items.length; j++) { items[j].style.display = items[j].style.display == "" ? "none" : ""; } } </script> <xsl:for-each select="//company[count(.|key("company_group",./text())[1])=1]"> <ul onclick="HideAll(this)" style="cursor:hand"><xsl:value-of select="." /> <xsl:call-template name="curSites"> <xsl:with-param name="c" select="."/> </xsl:call-template> </ul> </xsl:for-each> </body> </html> </xsl:template> <xsl:template name="curSites"> <xsl:param name="c"/> <xsl:for-each select="//row[company=$c]/site"> <li> <xsl:value-of select="." /> </li> </xsl:for-each> </xsl:template> </xsl:stylesheet>

或者以你的   HideAll   =   function(obj)   这种写法也可以.

只不过,如果没有组织js类的话,最好以   function   函数名   (参数)   这种方式去声明.   看起来方便一些.

为什么这次我用“&lt;”代替“ <”不行呢,我有好几个函数都是这么做的啊,请大大指教

这个跟xsl和版本和stylesheet引用的名称空间有关.

XML code
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
数据挖掘研究院


使用它时,   &gt;,&lt;,之类在输出时会是原样的,
或者用cdata
<![CDATA[ <script> .....   for(var   i=0;i <10;i++) </script>

在这样的声明下,cdata里的内容   <   会被自动换为   &lt;   的,   对于js来说,是不符合它语法的.

如果你希望使用   cdata就能正常,   或者像你其它页面一样用   &lt;   那么将stylesheet声明那段写为

XML code
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
数据挖掘工具


不过,用第一种写法,在 <script> 中使用   <xsl:text   disable-output-escaping="yes"> <![CDATA[ <]]> </xsl:text>   来输出大于号小于号之类的,兼容性更强.

Create By Any-Extract(WL-AE) 数据挖掘实验室

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:急救一个关于flash接xml的问题
下一篇:有关node
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • W3C概述
  • ASP+soap调用web service的问题,高手帮忙
  • 什么是语义网?
  • RSS History
  • 求助,PHP讀取XML文件
  • xml+xsl+js实现一个有横向列的导航菜单?
  • XML基础之 DataSet加载XML数据文件
  • 如何在xml中保存图片,以二进制流的形式保存
  • XML & 数据融合
  • Final Component of the Complete Meta Dat
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • What's Still Wrong with SQL Native XML I
  • Final Component of the Complete Meta Dat
  • What's Still Wrong with SQL Native XML I
  • XML及其技术指南
  • 保存.NET应用程序设置
  • 在.NET Framework中轻松处理XML数据(4
  • 将改变我们生活的这些XML应用之一
  • XML、Web服务和.NET框架
  • flash中通过XMLSocket监控生产系统(2
  • 将改变我们生活的这些XML应用之二
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静