关于xsl(附源码)文件检索xml时,检索结果表格中如何形成自动增量以及统计? (100分)

  • 主题发起人 主题发起人 大毛
  • 开始时间 开始时间

大毛

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是一个完整的用于检索XML文档的xsl文件(为了便于浏览,适当作了精简)。
检索结果以表格形式显示。我想在表格的第一列显示序号,就是从1开始增量;
另外,能够将检索结果的行数统计出来(显示在“检索结果”处)。
<xsl:value-of select=""/>这里不知如何写。
不知用嵌入script的方式能不能实现?

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:variable name="name"></xsl:variable>
<xsl:variable name="alias"></xsl:variable>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="目录"/>
</body>
</html>
</xsl:template>
<xsl:template match="目录">
<H4 align="center">检索结果</H4>共有<xsl:.......>--此处进行统计。
<table>
<TH>序号</TH>
<TH>名称</TH>
<TH>别名</TH>
<xsl:apply-templates select="类别"/>
</table>
</xsl:template>
<xsl:template match="类别">
<xsl:apply-templates select="子类别"/>
</xsl:template>
<xsl:template match="子类别">
<xsl:apply-templates select="产品"/>
</xsl:template>

<xsl:template match="产品">
<xsl:if test="contains(名称,$name) and contains(别名,$alias)">
<TR>
<TD>
<xsl:value-of select=""/>-----此处如何写??
</TD>
<TD>
<xsl:value-of select="名称"/>
</TD>

<TD>
<xsl:value-of select="别名"/>
</TD>
</TR>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
********************************************************************
dfwlogo.gif
 
以下是 CSDN上的朋友帮忙解决的,我把结果贴在这里,或许其他人也有用。
帖子斑竹帮忙结一下,谢谢!
×××××××××××××××××××××××××××××××××××××
这是xml:
<?xml version="1.0" encoding="UTF-8"?>
<目录>
<类别>
<子类别>
<产品>
<名称>产品1</名称>
<别名>产品1</别名>
</产品>
<产品>
<名称>产品2</名称>
<别名>产品2</别名>
</产品>
</子类别>
</类别>
</目录>
这是xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt" xmlns:usr="http://extensionnamespace" >
<ms:script language="javascript" implements-prefix="usr">
&amp;lt;![CDATA[
function CMap(sKey, sValue)
{
this.key = sKey;
this.value = sValue;
}
function CMapSet()
{
var aMapSet = new Array();
this.add = add;
this.item = item;
this.exist = exist;
this.add = add;
this.itemnum = itemnum;
function add(oMap)
{
if(exist(oMap)<0) aMapSet.push(oMap);
}
function exist(oMap)
{
var bFlag = false;
for(var i=0;
i<aMapSet.length;
i++)
{
if(aMapSet.key == oMap.key)
{
bFlag = true;
break;
}
}
if(!bFlag) i=-1;
return i;
}
function item(sKey)
{
var iIndex = exist(sName);
return aMapSet[iIndex];
}
function itemnum(iIndex)
{
return aMapSet[iIndex];
}
}
var oMapSet = new CMapSet;
function GetIndex(sKey)
{
var oMap = new CMap(sKey, 1);
var iIndex = oMapSet.exist(oMap);
if(iIndex>=0) return (++oMapSet.itemnum(iIndex).value); //如要更改步进值,更改这一行
else
{
oMapSet.add(oMap);
return oMap.value;
}
}
function GetIndexbyNodes(oNodes)
{
return oNodes;
return GetIndex(oNodes[0].text);
}
]]&amp;gt;
</ms:script>
<xsl:variable name="name">产品</xsl:variable>
<xsl:variable name="alias">产品</xsl:variable>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="目录"></xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="目录">
<H4 align="center">检索结果</H4>共有
<table>
<tr>
<TH>序号</TH>
<TH>名称</TH>
<TH>别名</TH>
</tr>
<xsl:apply-templates select="类别"></xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="类别">
<xsl:apply-templates select="子类别"></xsl:apply-templates>
</xsl:template>
<xsl:template match="子类别">
<xsl:apply-templates select="产品"></xsl:apply-templates>
</xsl:template>
<xsl:template match="产品">
<xsl:if test="contains(名称,$name) and contains(别名,$alias)">
<TR>
<TD>
<xsl:value-of select="usr:GetIndex(string($name))"></xsl:value-of>
</TD>
<TD>
<xsl:value-of select="名称"></xsl:value-of>
</TD>
<TD>
<xsl:value-of select="别名"></xsl:value-of>
</TD>
</TR>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
 
<xsl:value-of select=""/>-----此处如何写??
-----><number:level="any",select=xpath,match=xpath></number>
 
后退
顶部