Groovy:
main()
$ отличный stack.groovy:
Caught: java.lang.StackOverflowError
at stack.main(stack.groovy)
at stack.run(stack.groovy:1)
...
xsl: copy-of
- это точная копия совпадающего входного элемента xml. Никакой обработки xslt не происходит, и вывод этого элемента будет точно таким же, как ввод.
xsl: apply-templates
сообщает механизму xslt обрабатывать шаблоны, соответствующие выбранным элементам. xsl: apply-templates
- это то, что дает xslt возможность переопределения, поскольку шаблоны, которые вы создаете с сопоставлением элементов, могут иметь разные приоритеты, и будет выполнен шаблон с наивысшим приоритетом.
Вход:
<a>
<b>asdf</b>
<b title="asdf">asdf</b>
</a>
Xslt 1:
<xsl:stylesheet ... >
<xsl:template match="a">
<xsl:copy-of select="b" />
</xsl:template>
</xsl:stylesheet>
Вывод XML 1:
<b>asdf</b>
<b title="asdf">asdf</b>
Xslt 2:
<xsl:stylesheet ... >
<xsl:template match="a">
<xsl:apply-templates select="b" />
</xsl:template>
<xsl:template match="b" priority="0">
<b><xsl:value-of select="." /></b>
<c><xsl:value-of select="." /></c>
</xsl:template>
<xsl:template match="b[@title='asdf']" priority="1">
<b title="{@title}"><xsl:value-of select="@title" /></b>
</xsl:template>
</xsl:stylesheet>
Вывод XML 2:
<b>asdf</b>
<c>asdf</c>
<b title="asdf">asdf</b>
copy-of
will simply return you a dump of the XML in the supplied node-set
apply-templates
on the other hand will apply any templates applicable to the node-set passed it.