我有一个xsl片段:
<GOGO>
<xsl:variable name="test">
<xsl:copy-of select="response"/>
</xsl:variable>
<xsl:copy-of select="javamap:echo($test)"/>
</GOGO>
这段代码调用了一个Java方法:
public static String echo(String a) {
System.out.println("HERE I AM:"+a+":");
return "<xxx>" + a + "</xxx>";
}
如果我只有以下代码片段:
<GOGO>
<xsl:copy-of select="response"/>
</GOGO>
结果转换将类似于:
<foo>val1</foo>
<bar>val2</bar>
然而,当调用Java方法时,系统输出令人意外,只打印出:
val1
val2
我做错了什么,如何使java方法输出预期的xml片段?
编辑: 回答询问我的问题: 我正在使用Saxon9。 在另一个线程中,有人向我展示了value-of和disable-output-escaping="yes"的用法,这使我能够在输出中打印出xxx元素标记。但是,在输入端,我仍然在想如何让我的Java类完全意识到我传递给它的完整xml片段。
foo和bar标签是我要传递到Java函数中的xml。在Java函数内部,我希望进一步将xml封装在xxx标记中。
编辑2: 下面的提示使我得出了以下解决方案: public static String echo(Node a) throws Exception {
StringWriter writer = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(a), new StreamResult(writer));
String xml = writer.toString();
return xml;
}
xxx
,但输出是foo
和bar
。 - MvG