2016-10-14 2 views
0

У меня есть вопрос относительно <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>, предоставляя шаблон, который ничего не делает с элементом, что приводит к такому же эффекту.

Если я не ошибаюсь, эти два способа эквивалентны. Какой из них предпочтительнее?

+0

В вашем вводе нет 'subst', поэтому' 'ничего не будет делать - и это то, где я прекратил чтение. –

+1

Вы не «игнорируете del», не имея шаблона для него. Тогда он попадет в шаблон по умолчанию. –

+0

Извините, я забыл добавить элемент subst. Thx, Stefan, ваш комментарий был полезен! – user130685

ответ

1

IMHO, а не обрабатывающие узлы вообще предпочтительнее обрабатывать их пустым шаблоном. Но иногда альтернатива более удобна, например. по соображениям удобочитаемости кода.

+0

Для первого случая (выражение для выбора) см .: http://stackoverflow.com/questions/33049741/what-does-it-mean-apply-templates-select – user130685

+0

@ user130685 Что я буду там искать? –

+0

"выберите всех дочерних элементов и примените соответствующие им шаблоны." Таким образом, элементы, которые не соответствуют выражению, не обрабатываются вообще. Как насчет комментария: «В этом случае он попадет в шаблон по умолчанию»? – user130685

Смежные вопросы