Другой вариант, вместо использования вложения всего в xsl: выберите , это использовать сопоставление с шаблоном, чтобы получить нужный случай.Попробуйте этот XSLT в качестве примера
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Person[address/AddressType='Personal']" priority="3">
Match Personal
</xsl:template>
<xsl:template match="Person[address/AddressType='Second']" priority="2">
Match Second
</xsl:template>
<xsl:template match="Person[address/AddressType='Office']" priority="1">
Match Office
</xsl:template>
<xsl:template match="Person">
Match None
</xsl:template>
</xsl:stylesheet>
Обратите внимание, что шаблоны с более конкретными шаблонами имеют приоритет над шаблонами без шаблона (именно поэтому последний шаблон "Person" не будет вызываться, если только один из другихшаблоны не совпадают. Для других шаблонов атрибут приоритета с более высоким приоритетом будет иметь приоритет, если все три шаблона совпадают. Таким образом, «Персональный» будет всегда выбираться, даже если присутствуют другие атрибуты.
(Если нетшаблонов имеет атрибут priority , в этом случае будет выбран последний соответствующий).