Java 将Hashmap访问到XSL时出现问题

Java 将Hashmap访问到XSL时出现问题,java,xslt,Java,Xslt,假设我有一段代码: 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.

假设我有一段代码:

 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中吗?

必须通过附加$来访问“id”参数。下面的XSL似乎为我提供了预期的输出(Java1.6)


输出:

<?xml version="1.0" encoding="UTF-8"?>
<MappedId>1000</MappedId>

1000

您能详细说明一下吗?我不明白。我已将映射对象重命名为elementIdMap,并将其作为参数传递。仍然得到相同的错误。XSLT参数可以是字符串、数字、布尔值或节点集—在我看来,XSLT处理器将映射转换为字符串—因此它正在寻找一个带有字符串参数的
get
函数。我不熟悉XSLT的Java扩展,但我认为必须先将映射转换为节点集,然后再将其传递给XSLT。
<?xml version="1.0" encoding="UTF-8"?>
<MappedId>1000</MappedId>