У меня ниже XML полезная нагрузка
<Info>
<Details>
<Name>Sherlock Holmes</Name>
<Address>221b Baker St</Address>
<City>London</City>
</Details>
</Info>
Java POJO, как показано ниже:
package java:com.sample.domain;
public class AResponse {
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
В методе отдельного класса у меня есть ArrayList, заполненный объектом AResponse с кодами
ArrayList: 'aList' передается с объектами со значениями кода, такими как K1, J4, B3
Я хочу создать нижнюю полезную нагрузку, повторяя тег элемента aList и construct
<Info>
<Results>
<Code>K1</Code>
<Code>J4</Code>
<Code>B3</Code>
</Results>
<Details>
<Name>Sherlock Holmes</Name>
<Address>221b Baker St</Address>
<City>London</City>
</Details>
</Info>
Я попробовал приведенный ниже XSLT, но при запуске получаю сообщение об ошибке: XsltErrorListener: Неустранимая ошибка при разборе файла XSLT: Не удается найти функцию с 1 аргументом с именем Q {java: com.sample.domain. AResponse} Получить код (). Вызов внешних функций отключен;
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="http://www.openuri.org/mySchema" xmlns:list="java.util.List"
xmlns:a="java:com.sample.domain.AResponse">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" />
<xsl:strip-space elements="*" />
<xsl:template match="/|@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:param name="aList" />
<xsl:template match="Info">
<xsl:element namespace="http://www.openuri.org/mySchema" name="Results">
<xsl:for-each select="$aList">
<xsl:variable name="aResp" select="." />
<xsl:element namespace="http://www.openuri.org/mySchema" name="Code">
<xsl:value-of select="a:getCode($aResp)" />
</xsl:element>
</xsl:for-each>
</xsl:element>
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
Заранее спасибо!