我想使用EXSLT的函数math:random(),但我无法使其工作。这是我的测试,文件xslt:
<xsl:stylesheet xmlns:math="http://exslt.org/math" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" extension-element-prefixes="math">
<xsl:import href="math.xsl"/>
<xsl:template match="/">
<xsl:value-of select="(floor(math:random()*10) mod 10) + 1"/>
</xsl:template>
</xsl:stylesheet>
这是一个简单的文件xml:
<?xml-stylesheet type="text/xsl" href="stile.xslt"?>
<radice>
ciao!
</radice>
这个例子不应该打印我的"ciao!"和一个从1到10的随机数字?谢谢你的帮助。
根据EXSLT-math:random()文档,以下XSLT处理器支持该函数:4XSLT、libxslt、msxsl。您使用的XSLT处理器是什么?
根据此页面,ExistDB的默认值是Xalan,它不是列出的处理器之一。(但是,根据Xalan的文档,它确实提供math:random()
。)
如果你还没有配置不同的处理器,那将是一件很好的尝试。我个人推荐的是撒克逊人。根据其文档,它支持EXSLT math:random()
。
但是,在我看来,您的XSLT处理器可能根本没有被调用。你能告诉我们你是如何告诉ExistDB运行你的样式表的吗?你让它运行任何样式表了吗?