在xslt中无法识别xpath函数
我正在使用xalan处理器在Oxygen中调试xslt样式表。我似乎无法得到当前时间()或时间小时()函数的工作。我收到“找不到功能”错误。我究竟做错了什么?这里是代码。在xslt中无法识别xpath函数
<xsl:variable name="isPm" select="hours-from-time(n1:TIME_REPORT) >= 12"/>
hours-from-time和current-time是XPath 2.0函数。 Xalan仅支持XPath 1.0。的支持的Xalan扩展函数
后来的版本,这将给一些这方面的功能。你正在寻找的功能都以某种形式存在。请注意,由于XPath 1.0不理解日期时间,因此您将处理字符串。不过看到,例如:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">
<xsl:template match="/">
<html>
<head>
<title>Current Date Test</title>
</head>
<body>
<h1>It's now <xsl:value-of select="date:date-time()"/>.</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
见Xalan Extension Function页,也是EXSLT Extension Function page for Dates and Times两者。
有什么办法可以在xpath 1.0中获得当前时间吗? – whyvez 2011-01-07 20:29:34
那些不是标准的XPath 1.0功能。如果您的处理器具有作为扩展实现的这些功能,那么您应该为它们添加正确的名称空间。
从http://www.w3.org/TR/xslt#section-Extension-Functions
如果在一个FunctionCall 表达FunctionName不是NCName来(即,如果 它包含一个冒号),那么它是 ,以一个扩展 函数的调用处理。 FunctionName将 扩展为使用来自评估 上下文的名称空间 声明的名称。
如果XSLT处理器不具有 实现特定名称 的延伸 功能可用,则
function-available
功能必须为 名返回false。如果这样一个扩展函数 在表达发生并且 扩展功能实际上是所谓的, XSLT处理器必须发信号通知 错误。 XSLT处理器不能 仅仅发出错误信号,因为 表达包含一个扩展 功能对于没有执行 可用。如果XSLT处理器有一个 实现特定名称 的延伸 功能可用,那么
function-available
功能必须为 名返回true。如果这样的扩展被调用,然后 XSLT处理器必须调用 实现传递函数 调用参数;通过 执行返回的结果返回为函数调用的 结果。
I am debugging an xslt stylesheet in Oxygen using the xalan processor.
我似乎无法得到 当前时间()或小时的时间() 职能工作。我得到一个“不能 查找功能”的错误。
正如@lavinio和@Alejandro所指出的,这两个函数是在Xalan 2.0中不支持的XPath 2.0中引入的。
您可以将当前时间作为参数传递给XSLT 1.0转换。
请注意,即使在XPath 2.0中,转换期间对current-time()
的多次评估返回相同的值。所以这个函数不会给你任何东西超过你通过传递当前时间作为参数。
好问题,+1。查看我的答案,了解`current-time()`函数的解释和解决方案。 – 2011-01-08 04:29:27