xslt 调用java_XSLT调用java嵌入XML

博主在尝试使用XSLT时遇到问题,他们在Java扩展函数中调用了一个方法,该方法应该接收XML片段并返回包含额外XML结构的字符串。然而,实际输出并不符合预期,只打印了传递的参数。解决方案涉及到使用`DOMSource`和`Transformer`将XML片段转换为字符串。他们最终成功实现了这一目标,但发现XSLT扩展函数可能不适合处理XML节点,因为它们通常返回字符串而非节点。
摘要由CSDN通过智能技术生成

我有一个xsl片段:

这段代码调用java方法:

public static String echo(String a) {

System.out.println("HERE I AM:"+a+":");

return "" + a + "";

}

如果我只有以下代码段:

结果转换将如下:

val1

val2

但是,当调用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)抛出Exception {

StringWriter writer = new StringWriter();

Transformer transformer = TransformerFactory.newInstance().newTransformer();

transformer.transform(new DOMSource(a), new StreamResult(writer));

String xml = writer.toString();

return xml;

}

最佳答案 扩展函数的语义取决于您使用的处理器,您没有告诉我们,但我认为任何处理器都不太可能以您期望的方式工作 – 也就是说,处理函数返回的字符串作为要解析并转换为节点的词法XML.如果要返回节点,则必须在返回节点之前构造节点.节点的类型(例如,它是DOM节点,它属于哪个文档等)将取决于系统;总的来说,我建议不要在扩展函数中操作节点 – XSLT可以更好地完成工作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值