XPath 表达式 fn:max() 无法识别

XPath expression fn:max() not recognized

有人能告诉我为什么下面使用 fn:max 不起作用吗?

XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<a>
<b>1</b>
<b>2</b>
<b>3</b>
</a>

XSLT 样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
       <p><xsl:value-of select="count(a/b)"/></p>
       <p><xsl:value-of select="max(a/b)"/></p>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

count() returns 的调用得到了正确的结果,但是我使用的每个 XSLT 引擎(即 Firefox 和 Apache FOP)都拒绝对 max() 的调用,即使 Apache says that FOP supports it.

我做错了什么?

因为max()需要XSLT/XPath 2.0,而您的处理器只支持XSLT/XPath 1.0:

  • Firefox(和所有浏览器)仅支持 XSLT 1.0。
  • Apache FOP 不是 XSLT 处理器;它是一个 XSL-FO 处理器。你 可能通过 XSLT 1.0 或 2.0 生成 XSL-FO,但是您引用的 table 列出您可能包含在 XSL-FO 中的函数,而不是函数 您可以将其包含在 XSLT 中。

请注意,您的 XSLT 正在生成 HTML,而不是 XSL-FO。

另见

  • How to find the max attribute from an XML document using Xpath 1.0