Groovy:XmlTemplateEngine和SimpleTemplateEngine

Groovy:XmlTemplateEngine和SimpleTemplateEngine,xml,groovy,xslt-1.0,Xml,Groovy,Xslt 1.0,我一直在尝试将节点元素从一个xml文档复制到一个xsl文件,到目前为止,我发现以下解决方案效果良好: //file path variables are mocked def rep = new XmlParser().parse(new File(*filepath1*)) def pw = new StringWriter() new XmlNodePrinter(new PrintWriter(pw)).print(rep)

我一直在尝试将节点元素从一个xml文档复制到一个xsl文件,到目前为止,我发现以下解决方案效果良好:

        //file path variables are mocked

        def rep = new XmlParser().parse(new File(*filepath1*))
        def pw = new StringWriter()
        new XmlNodePrinter(new PrintWriter(pw)).print(rep)
        rep = pw.toString()

        def engine = new groovy.text.SimpleTemplateEngine()
        def binding = [responsexml:rep]
        def template = engine.createTemplate(new File(*filepath2*)).make(binding)

        new File(*filepath3*).write(template.toString())
模板化xsl文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    ${responsexml}
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <AAA>
               *SOME CONTENT*
            </AAA>
</xsl:template>

${responsexml}
复制节点元素后,最终的xsl文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    ${responsexml}
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <AAA>
               *SOME CONTENT*
            </AAA>
</xsl:template>

*一些内容*

好的……很抱歉你的背景太长太无聊了,下面是问题: 我使用了上面的
SimpleTemplateEngine
,它生成了一个包含预期内容的文件,但当我切换到使用
XmlTemplateEngine
时,行
已从生成的xsl文件中删除

我想知道为什么XML引擎实际上没有按预期工作?这可能是一个很难回答的问题,因为我对groovy很陌生。。。。如果有人能给我指一下上面解释的医生,我将非常感谢。非常感谢

看那个


XmlTemplateEngine将删除xml声明作为处理说明的一部分。

谢谢,页面可能会隐式提到删除xml声明,我只是注意到,从第一次阅读该示例时,“gsp”名称空间已从该示例中删除。那么,使用这个引擎删除这些声明的直接好处是什么呢?