Je ne reproduis pas ton problème. Voici un code complet :
classe TestXSLT (contient un constructeur avec HashMap, et main()):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public class TestXSLT {
private Map<String, String> map;
public TestXSLT(HashMap<String, String> map) {
this.map = map;
}
public String toString() {
return map.toString();
}
public static void main(String[] args) throws Exception {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(new File("transform.xslt")));
Map<String, String> map = new HashMap<String, String>();
map.put("Hello", "world");
transformer.setParameter("xslParam", map);
transformer.transform(new StreamSource(new File("empty.xml")), new StreamResult(System.out));
}
} |
fichier transform.xslt (dans le répertoire courant):
1 2 3 4 5 6 7 8 9 10 11 12
| <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:java="http://xml.apache.org/xslt/java">
<xsl:param name="xslParam"/>
<xsl:variable name="testObject" select="java:TestXSLT.new($xslParam)"/>
<xsl:template match="/">
<root><xsl:value-of select="$testObject"/></root>
</xsl:template>
</xsl:stylesheet> |
fichier empty.xml (répertoire courant, sans importance):
Et j'obtiens le résultat attendu, sans erreur :
<?xml version="1.0" encoding="UTF-8"?><root xmlns:java="http://xml.apache.org/xslt/java">{Hello=world}</root>
Partager