Определение совпавшего дизъюнкта в совпадении xsl:template

Предположим, у меня есть такой XML:

<xsl:template match="assessment | section ">
             .
             .
             .
</xsl:template>

Я делаю это, потому что в основном хочу обрабатывать узлы assessment и section одинаково. Тем не менее, я хочу относиться к ним немного по-другому. Как узнать, было ли совпадение для assessment или для section?


person Paul Reiners    schedule 21.06.2010    source источник
comment
Я вижу, что вы сами отвечаете на свои вопросы. Нет ничего плохого в том, что предоставлено для служения сообществу. Но многие из них очень просты, больше характерны для любого учебника XSLT. Например, последнее, что вы только что сделали, плохо сформулировано. В чем смысл обрабатывать узлы оценки и раздела одинаково, но обрабатывать их немного по-разному?   -  person    schedule 22.06.2010


Ответы (2)


Сделайте что-то вроде этого:

<xsl:if test="name()='section'">
</xsl:if>
person Paul Reiners    schedule 21.06.2010

Вы можете проверить:

self::assessment

что немного эффективнее, чем использование функции name().

Однако в подобных случаях я помещаю общий код в другой шаблон (либо именованный, либо в именованном режиме) и реализую общую обработку следующим образом:

<xsl:apply-templates select="." mode="common"/>
person Dimitre Novatchev    schedule 21.06.2010