我是否必须将我的变量级联到每个模板

时间:2018-03-21 21:32:20

标签: xml xslt-1.0

我看到了一个非常相似的问题here,但我只需要清楚这一点。

这是我的XML数据文件的流程图:

Flowchart

以下是一些背景知识:

  • 我有一个XML数据文件,其Name内的HighlightNames值列表(以橙色标记)。
  • 在XSL脚本中,我们导入上面的XML文件并循环名称。
  • 对于每个名称,我们都会创建一个计划,并希望在使用它时突出显示该名称(以绿色标记)。

现在,我知道我可以将HighlightNames\Name分配给变量,例如:NameToCheck,然后将其作为param传递到各种模板中。但这将是很多级联。例如:

HighlightNames\Name
    MeetingWorkBook\Meeting
        TFGW
           TFGWItem
               Name - does it match?

因此,在上述情况下,我们必须将值级联下来5次。

这是对的吗?无法在NameToCheck次迭代中分配HighlightNames\Name变量,这可以在不需要级联的情况下使用吗?

感谢您的澄清。

澄清

  1. 我有 XML文件A ,其中包含要突出显示的名称。
  2. 我有 XML文件B ,其中包含当月的所有日程安排数据。
  3. 我有 XSL文件C ,主要链接到文件B
  4. 文件C 的顶部,我们导入文件A 循环名称
  5. 我以为我用流程图解释了这个概念。但我从未提到过多个XSL文件。

    此处的目标是为每个名称创建计划,并通过突出显示其名称的使用位置来对其进行个性化。

    所以:

    Import names XML as varNames
    For each name in varNames
        Set varNameToHighlight as name
        For each MeetingWorkbook\Meeting
             Param varNameToHighlight
        End for
    End for
    

    据我所知,我必须将名称级联下来。

1 个答案:

答案 0 :(得分:1)

常用两种方法。

(a)在树中处理级别5的节点时,可以使用祖先轴查找有关更高级别节点的信息。这很好,只需重新计算"变量"你实际上想要从这个级别的节点做起来并不算太多。

(b)在XSLT 2.0+中,您可以将隧道参数传递给被调用的模板。隧道参数通过多级模板调用向下传递,这似乎正是您正在寻找的。

您已经标记了XSLT 1.0这个问题,但我认为您需要了解阻碍您前进到更现代版语言的原因。