在XSL模板文件中嵌入JavaScript脚本
2008-07-17 09:23
309 查看
假设一个XML文档如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<set>
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
.....
</set>
其中,feature_element 可以有很多。现在要求的是在一个table的TD中显示feature(为简化起见,xml元素从略),当鼠标移到此TD中时,提示出所有feature_element,要求的显示格式是code+空格+冒号+空格+description+逗号。当字符数超过1100时,截止显示(但截取一定要完整,即每个feature_element要么不显示,要么全显示),在末尾加上提示性语句。刚开始,想了很多办法都没实现,最后终于用嵌入JavaScript脚本的方式实现。
XSL示例如下:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:script><![CDATA[
var count = 1100; //characters number limited.
var flag = true; //flag to decide if show tail string.
//Function to return features codes and descriptions
function displayFeature(featureNode)
{
var code = featureNode.selectSingleNode("@code");
var desc = featureNode.selectSingleNode("@description");
count -= code.text.length + desc.text.length + 5; //5: 3 spaces, 1 colon, 1 comma.
if(count>=0)
{
return code.text + " " + ":" + " " + desc.text + ", ";
}
else if(flag)
{
flag = false;
return "There are more features which cannot be displayed here.";
}
else
{
return "";
}
}
]]></xsl:script>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="set">
<td class="feature" nowrap="nowrap">
<xsl:attribute name="colspan"><xsl:value-of select="@colspan" /></xsl:attribute>
<xsl:attribute name="title"
><xsl:for-each select="feature_element"
><xsl:eval>displayFeature(this)</xsl:eval></xsl:for-each
></xsl:attribute>
{...}
</td>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<set>
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
<feature_element code="AAAAB" description="Feature description 123" />
.....
</set>
其中,feature_element 可以有很多。现在要求的是在一个table的TD中显示feature(为简化起见,xml元素从略),当鼠标移到此TD中时,提示出所有feature_element,要求的显示格式是code+空格+冒号+空格+description+逗号。当字符数超过1100时,截止显示(但截取一定要完整,即每个feature_element要么不显示,要么全显示),在末尾加上提示性语句。刚开始,想了很多办法都没实现,最后终于用嵌入JavaScript脚本的方式实现。
XSL示例如下:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:script><![CDATA[
var count = 1100; //characters number limited.
var flag = true; //flag to decide if show tail string.
//Function to return features codes and descriptions
function displayFeature(featureNode)
{
var code = featureNode.selectSingleNode("@code");
var desc = featureNode.selectSingleNode("@description");
count -= code.text.length + desc.text.length + 5; //5: 3 spaces, 1 colon, 1 comma.
if(count>=0)
{
return code.text + " " + ":" + " " + desc.text + ", ";
}
else if(flag)
{
flag = false;
return "There are more features which cannot be displayed here.";
}
else
{
return "";
}
}
]]></xsl:script>
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="set">
<td class="feature" nowrap="nowrap">
<xsl:attribute name="colspan"><xsl:value-of select="@colspan" /></xsl:attribute>
<xsl:attribute name="title"
><xsl:for-each select="feature_element"
><xsl:eval>displayFeature(this)</xsl:eval></xsl:for-each
></xsl:attribute>
{...}
</td>
</xsl:template>
</xsl:stylesheet>
相关文章推荐
- ASP.NET服务器控件库中嵌入JavaScript脚本文件
- 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件 [适用于.NET 2.0]
- 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件
- 如何在ASP.NET服务器控件库中嵌入JavaScript脚本文件(转)
- HTML里嵌入JavaScript方式中的脚本类型
- ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别
- IE缓存怎么消除? 临时文件 javascript 脚本 清理
- Javascript脚本树开发详解(三)脚本样式文件
- discuz 模板文件中的插件嵌入点列表
- 在XSL文件里应用javascript
- 关于模板中的动态取值 ---反射与javascript脚本编译
- Win10系列:JavaScript 项目模板中的文件和项模板文件
- HTML中嵌入JavaScript脚本
- ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别
- 【Javascript高级程序设计】嵌入代码与外部文件
- 通过嵌入javascript脚本方式分析用户信息系统
- FlashObject之Flash的检测和嵌入Javascript脚本
- 提供一段JavaScript脚本以辅助迅雷下载页面中的所有pdf文件链接
- FlashObject详解:Flash的检测和嵌入Javascript脚本
- JavaScript 脚本文件编码导致的问题