У меня есть вопрос относительно <xsl:apply-templates>
.XSLT: <apply-templates select = "...">
Давайте предположим, что у меня есть XML, как это (см http://www.tei-c.org/release/doc/tei-p5-doc/en/html/ref-subst.html):
<transcription>
<subst>
<del>wrong</del>
<add>right</add>
</subst>
</transcription>
Теперь я хочу, чтобы обработать эту запись транскрипции различными способами с использованием XSLT.
Если я просто хочу представить поправку к пользователю, я мог бы использовать шаблон XSLT, как это:
<xsl:template match="subst"><xsl:apply-templates select="./add"/></xsl:template>
<xsl:template match="subst/add"><xsl:apply-templates/></xsl:template>
Однако, я мог бы также написать:
<xsl:template match="subst"><xsl:apply-templates/></xsl:template>
<xsl:template match="subst/add"><xsl:apply-templates/></xsl:template>
<!-- del: ignore contents -->
<xsl:template match="subst/del"></xsl:template>
В первом случае , Я прямо адресую только add
внутри <subst>
, игнорируя <del>
.
Во втором случае я игнорирую <del>
, предоставляя шаблон, который ничего не делает с элементом, что приводит к такому же эффекту.
Если я не ошибаюсь, эти два способа эквивалентны. Какой из них предпочтительнее?
В вашем вводе нет 'subst', поэтому' 'ничего не будет делать - и это то, где я прекратил чтение. –
Вы не «игнорируете del», не имея шаблона для него. Тогда он попадет в шаблон по умолчанию. –
Извините, я забыл добавить элемент subst. Thx, Stefan, ваш комментарий был полезен! – user130685