【发布时间】:2012-04-24 18:26:44
【问题描述】:
假设,我有一个 sn-p 的代码:
Map mappingId = new HashMap();
mappingId.put("1", "1000");
transformer.setParameter("mappingId", mappingId);
transformer.transform(...);
我有一个简单的 XSLT 尝试从中获取密钥
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:map="xalan://java.util.Map"
extension-element-prefixes="map">
<xsl:param name="mappingId" />
<xsl:template match="/">
<xsl:variable name="id" select="map:get($mappingId, '1')" />
<MappedId><xsl:value-of select="id"/></MappedId>
</xsl:template>
</xsl:stylesheet>
我收到以下错误:
错误:'找不到方法 java.util.Map.get([ExpressionContext,] #STRING, #STRING) 致命错误:“无法编译样式表”。
有人可以帮我解决如何将 java 映射访问到 XSL 吗?
【问题讨论】:
-
您能详细说明一下吗?我不明白。我已将我的 Map 对象重命名为 elementIdMap. 并将其作为参数传递。仍然出现同样的错误。
-
XSLT 参数可以是字符串、数字、布尔值或节点集 - 在我看来,在您的情况下,XSLT 处理器将映射转换为字符串 - 因此它正在寻找一个
get函数字符串参数。我不熟悉 XSLT 的 Java 扩展,但我认为您必须先将映射转换为节点集,然后再将其传递给 XSLT。