Каково различие между <копия-> и <применять-шаблоны>?

Groovy:

main()

$ отличный stack.groovy:

Caught: java.lang.StackOverflowError
    at stack.main(stack.groovy)
    at stack.run(stack.groovy:1)
 ...
8
задан Micha Wiedenmann 23 November 2018 в 12:50
поделиться

2 ответа

  • 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>
13
ответ дан 5 December 2019 в 08:24
поделиться
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.

7
ответ дан 5 December 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: