XSL模板优先级

| 我有2个模板
<template match=\"vehicle_details[preceding-sibling::vehicle_type = \'4x4\']/*\">
    ...
</xsl:template>
<xsl:template match=\"vehicle_details[descendant::color = \'red\']/*\" >
    ...
</xsl:template>
我的问题是:哪个模板将优先于转换。有人可以给我有关XSL模板优先级的概述/资源吗? 提前致谢!
已邀请:
XSLT规范的第5.5节介绍了完整分辨率的过程。 通常,以下规则按顺序应用(例如,由于优先级较低而被取消考虑的模板将被永久删除,而不考虑其优先级): 导入的模板的优先级低于主样式表中的模板
priority
属性中值较高的模板具有较高的优先级 没有“ 1”属性的模板被分配了默认优先级。具有更具体模式的模板优先。 如果前三个步骤考虑了多个模板,这是一个错误,但是XSLT处理器可以通过默认为文件中的最后一个来恢复。 在您的特定情况下,两个模板具有相同的优先级,因此适用以上#4。展示:
<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">
    <xsl:template match=
             \"vehicle_details[preceding-sibling::vehicle_type = \'4x4\']/*\">
        template1
    </xsl:template>
    <xsl:template match=\"vehicle_details[descendant::color = \'red\']/*\">
        template2
    </xsl:template>
</xsl:stylesheet>
应用于此输入(两个模板都匹配):
<root>
    <vehicle_type>4x4</vehicle_type>
    <vehicle_details>
        <color>red</color>
    </vehicle_details>
</root>
输出:
template2
但是,如果我们交换模板的顺序:
<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">
    <xsl:template match=\"vehicle_details[descendant::color = \'red\']/*\">
        template2
    </xsl:template>
    <xsl:template match=
             \"vehicle_details[preceding-sibling::vehicle_type = \'4x4\']/*\">
        template1
    </xsl:template>
</xsl:stylesheet>
然后输出是:
template1

要回复问题请先登录注册