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>