我有一个 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;
}