Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT调用嵌入XML的java_Java_Xml_Xslt_Tags - Fatal编程技术网

XSLT调用嵌入XML的java

XSLT调用嵌入XML的java,java,xml,xslt,tags,Java,Xml,Xslt,Tags,我有一个xsl片段: <GOGO> <xsl:variable name="test"> <xsl:copy-of select="response"/> </xsl:variable> <xsl:copy-of select="javamap:echo($test)"/> </GOGO> 我做错了什么?如何让java方法输出预期的xml片段 编辑: 回答帮助我的人提出的问题:

我有一个xsl片段:

<GOGO>
     <xsl:variable name="test">
        <xsl:copy-of select="response"/>
     </xsl:variable>
     <xsl:copy-of select="javamap:echo($test)"/>
</GOGO>
我做错了什么?如何让java方法输出预期的xml片段

编辑: 回答帮助我的人提出的问题: 我用的是萨克森9。 另一个线程中的某个人向我展示了value of和disable output escaping=“yes”的用法,这允许我打印输出中的xxx元素标记。然而,在输入端,我仍然感到困惑,我希望我的java类能够完全了解传递给它的完整xml片段

foo和bar标记是我想要传递到java函数中的xml。在java函数中,我想进一步将xml包装在xxx标记中

编辑2: 下面的提示使我能够得出以下解决方案: 公共静态字符串回显(节点a)引发异常{

    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做得更好。

很好。我可以猜到一个原因,您传递的是节点集,但将其读取为字符串!当函数将其作为参数读取为字符串时,只有值(文本)已加载!请尝试将节点集定义为节点集而不是字符串!然后将其转换为字符串(希望innerHTML将节点集转换为XML)…不知道它是否有效,但值得一试!如果上面的评论确实解决了这一问题,请让我们知道,以便其作者可以将其作为答案发布。如果它不起作用,那么提供一个答案可能会帮助您获得这一问题的答案。我个人觉得您的问题有点令人困惑,例如,因为您的函数写的是
xxx
,但您的输出是
foo
。您的提示给了我一个方向,我正在编辑中发布解决方案
<GOGO>
<xsl:copy-of select="response"/>
</GOGO>
<foo>val1</foo>
<bar>val2</bar>
val1
val2
    StringWriter writer = new StringWriter();
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.transform(new DOMSource(a), new StreamResult(writer));
    String xml = writer.toString();
    return xml;
}