Ich habe eine Java-Methode, die eine Zuordnung zu xslt zurückgibt.xslt 2.0: mit HashMap
XSLT Methodenaufruf -
<xsl:variable name="mapValue" select="class:returnMap()">
Java-Methode -
public Map<String,List<String>> returnMap(){
Map<String,List<String>> map = new HashMap<String,List<String>>();
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
map.put("a",list);
map.put("b",list);
return map
}
Wie hole ich die Liste Wert der Karte in XSLT 2.0? Ich habe versucht, die Werte einer Variablen zugewiesen, die unter Verwendung des Formats
<xsl:variable name="valueOfA" select="$mapValue/entry[@key='a']"/>
<xsl:variable name="valueOfB" select="$mapValue/entry[@key='b']"/>
aber, ich erhielt die unten Ausnahme.
XPTY0019: Required item type of first operand of '/' is node(); supplied value has item type java:java.util.LinkedHashMap
Wenn ich versuche, den Wert von $ mapValue anzuzeigen, druckt es einwandfrei.
Welchen XSLT 2.0-Prozessor verwenden Sie, welche Version, welche Edition? Haben Sie seine Dokumentation wie z. https://www.saxona.com/html/documentation9.7/extensibility/ oder http://manual.altova.com/RaptorXML/raptorxmlserver/index.html?fxmisc_java.htm –
Beachten Sie auch, wenn Sie Saxon dann mit 9.8 verwenden (alle Editionen) können Sie XSLT 3 mit XPath 3.1 Karten verwenden, wo Sie einfach Ihre Java 'Map' in eine XPath 3.1' map' konvertieren können, indem Sie https://www.saxonica.com/html/documentation/javadoc/net/sf verwenden /saxon/s9api/XdmMap.html#makeMap-java.util.Map- auf der Java-Seite des Codes und zurück zu XSLT/XPath, wo Sie dann die Funktionen wie 'map: keys' von https: // www .w3.org/TR/xpath-functions/# func-map-schlüssel. Für Saxon HE müssten Sie Ihre Funktion als integrierte Erweiterungsfunktion implementieren und registrieren. –