Я пытался скопировать узел элементы из одного документа XML в файл XSL, до сих пор я нашел ниже решение хорошо работает:Groovy: XmlTemplateEngine и SimpleTemplateEngine
//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>
После того, как элементы узла копируются, конечный файл 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="/">
<AAA>
*SOME CONTENT*
</AAA>
</xsl:template>
Хорошо ... извините за длинный скучный фон, вот вопрос: Я использовал SimpleTemplateEngine
выше, который произвел мне файл с содержанием так же, как ожидалось, но когда я перешла на использование XmlTemplateEngine
, линия <?xml version="1.0" encoding="UTF-8"?>
был удален из созданного файла xsl.
Хотелось бы знать, почему механизм XML работает не так, как ожидалось? и, возможно, это очень пустой вопрос, так как я очень новичок в groovy .... так будет очень благодарен, если кто-нибудь может указать мне на документ, который объясняет выше. Огромное спасибо!
Благодарим, что страница может упоминать удаление объявления xml неявно, что я заметил, что пространство имен «gsp» было удалено из этого примера с первого раза, прочитав его. Итак, какова непосредственная польза от удаления этих объявлений с помощью этого движка? –