您的位置:首页 > Web前端 > JavaScript

在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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: