为什么py:match只适用于xi:include之后直接包含?

时间:2014-10-21 02:50:39

标签: python genshi

我有一个主要的genshi模板,我试图在xsl:fo模板中应用几个覆盖:

<py:match path="fo:page-sequence[@master-reference='invoice-sequence']"> ... </py:match> <xi:include href="main.xml" />

..这很好用,但是当我提供多个py:match标签时,就像这样:

<py:match path="fo:page-sequence[@master-reference='invoice-sequence']"> ... </py:match> <py:match path="fo:block[@id='dateF']"> ... </py:match> <xi:include href="main.xml" />

只有最后一个py:匹配才有效。我可以移动xi:include around,它似乎只受到py:match直接在它上面的影响,而不是在顶部。我期望工作的是顶部的include,它启动流,然后py:匹配后修改流,但这似乎不是这样,因为py:只匹配工作如果他们被放置在xi:include

之前

有人可以向我解释如何实现我使用多个py的目标:匹配xi:include?如果有关于包含和py:匹配的理论,我也会喜欢它,这样我就能理解为什么这种行为看起来如此。

1 个答案:

答案 0 :(得分:0)

根据https://groups.google.com/forum/#!topic/genshi/VIUhr-W3Un4

“”” Hodgestar
13年8月6日 我认为这是预期的工作方式 - 匹配模板 一个接一个地应用,而XML的先前状态不是 记住(我甚至不确定如何定义这样的行为 场景)。 “”“

这促使我寻找一种重置上下文的方法。 也许使用多个xi:include,每个py:匹配一个? [这个想法可以帮助其他人解决这个问题]