gpt4 book ai didi

xslt - XSL 模板优先级

转载 作者:行者123 更新时间:2023-12-03 11:12:03 25 4
gpt4 key购买 nike

我有 2 个模板

<template match="vehicle_details[preceding-sibling::vehicle_type = '4x4']/*">
...
</xsl:template>
<xsl:template match="vehicle_details[descendant::color = 'red']/*" >
...
</xsl:template>

我的问题是:哪个模板将优先于转换。有人可以给我一个关于 XSL 模板优先级的概述/资源吗?

提前致谢!

最佳答案

section 5.5 of the XSLT spec 中描述了完整的解析过程。 .

通常,以下规则按顺序适用(例如,由于较低的导入优先级而被排除在考虑之外的模板将被永久排除,无论其优先级如何):

  • 导入模板的优先级低于主样式表中的模板
  • 具有较高值的​​模板 priority属性具有更高的优先级
  • 没有 priority 的模板属性被分配一个默认优先级。具有更具体模式的模板优先。
  • 如果前三个步骤考虑了多个模板,这是一个错误,但 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

    关于xslt - XSL 模板优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709581/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com