4

假设,我有一段代码:

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

4

1 回答 1

0

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

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

输出:

<?xml version="1.0" encoding="UTF-8"?>
<MappedId>1000</MappedId>
于 2013-10-08T13:19:26.750 回答