EXSLT 日期和时间函数可以在 XSLT 1.0 中使用并使用浏览器引擎进行处理吗?
我的目标:我需要使用 XSL 样式表将 XML 文档中的“出生日期”元素转换为“年龄”值并生成 XHTML 页面。我正在使用网络浏览器(例如IE/FF)直接打开XML文档。
我知道 XSLT 2.0 具有内置的日期和时间函数,但我认为目前没有浏览器支持此功能。因此,我一直尝试使用 EXSLT 函数,但没有成功。
以下是我的示例测试文件:
test.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<test>
</test>
test.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="date:date-time()"/>
</xsl:template>
</xsl:stylesheet>
IE8 上的错误:
Namespace 'http://exslt.org/dates-and-times' does not contain any functions.
FF4 上的错误:
Error during XSLT transformation: An unknown XPath extension function was called.
这是否意味着主要 Web 浏览器不支持 EXSLT?我是否必须使用像 SAXON/Xalan 这样的 XSLT 处理器?我做错了什么吗?还有其他方法吗?
My goal: I need to transform a "date of birth" element in XML document to "age" value using XSL stylesheet and generate XHTML page. I am using the web browser (e.g. IE/FF) directly to open the XML document.
I know XSLT 2.0 has built-in date and time functions, but I think no browser currently support this. So, I've been trying to use EXSLT functions instead without success.
Here are my sample test files:
test.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<test>
</test>
test.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="date:date-time()"/>
</xsl:template>
</xsl:stylesheet>
Error on IE8:
Namespace 'http://exslt.org/dates-and-times' does not contain any functions.
Error on FF4:
Error during XSLT transformation: An unknown XPath extension function was called.
Does that mean EXSLT is not supported by major web browsers? Do I have to use XSLT proccessor like SAXON/Xalan? Am I doing something wrong? Is there an alternative way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 EXSLT 支持矩阵作为参考:
Chrome、Opera 和 Safari 使用
libxslt
,但date-time()
不起作用,因为 EXSLT 被禁用:IE 使用
MSXML
,它具有以下支持:没有
ms:date-time()
函数,但有一个 MSXSL 扩展。Firefox 使用 Transformiix,它具有 自 FF6 起支持 EXSLT
date-time()
。参考资料
Use the EXSLT support matrix as a reference:
libxslt
is used by Chrome, Opera and Safari, butdate-time()
does not work since EXSLT is disabled:IE uses
MSXML
, which has the following support:There is no
ms:date-time()
function, but there is an MSXSL extension.Firefox uses Transformiix, which has support for EXSLT
date-time()
since FF6.References