xml使用xalan扩展在XSL中处理java集合
我想迭代ArrayList <String>
并将所有字符串放到输出树中,但不知道如何做
java方法:
public ArrayList<String> getErrorList(String name) {
if (errorMap.containsKey(name)) {
return errorMap.get(name);
}
return new ArrayList<>();
}
xsl文档:
<xsl:variable name="list">
<xsl:value-of select="validator:getErrorList($validator, 'model')"/>
</xsl:variable>
<tr>
<td style="color: red;">
<ul>
<li> first string from ArrayList </li>
. . .
<li> last string from ArrayList </li>
</ul>
</td>
</tr>
# 1 楼答案
必须在样式表中为Java扩展函数定义名称空间。 它应该看起来像
xmlns:yourchoice = "javapackage.classname
。 假设getErrorList方法位于ErrorListClass类中,它可能如下所示:然后在XSLT中调用它
# 2 楼答案
您的错误是初始化变量,例如
因为xslt认为,这个变量的值是
#STRING
,所以会出现错误您必须使用下一个声明,而不是上一个声明:
因此,方法
getErrorList
将返回ArrayList
对象。 下一段代码将向您展示如何使用XSL functional迭代ArrayList集合:所以,必须使用递归,因为在函数式语言(比如XSLT)中不可能使用循环。你可以读到here