我有一个
的XML文件<chapter template="A" id='1'/>
<chapter template="B"/>
<chapter template="B"/>
<chapter template="A" id='2'/>
<chapter template="B"/>
<chapter template="B"/>
<chapter template="B"/>
<chapter template="B"/>
<chapter template="C"/>
我有一个XSLFO来处理这些章节。模板“A”的最后一章需要一些特殊的处理。 id属性不是我可以过滤的东西(只是为了说明而添加它)。
我有一个template match="chapter"
来处理所有章节的一般处理。在该代码块中的某个部分是仅适用于使用模板A的最后一章的部分。仅为该章执行此代码块,我已经进行了此测试:
if test="following-sibling::chapter[not(@template = 'B')]/@template = 'C'"
所以我试图找到第一个不是模板B的兄弟,并检查这个兄弟是否有模板C.(它已被设置为模板C始终是最后一章)。 当处理章节id = 1和id = 2时,上面的XPath返回'true',因此它太宽泛了。当章节与模板C有任何后续兄弟时,这是真的。 所以我在想:我会限制测试只看下面的第一个不是模板B的兄弟:
if test="following-sibling::chapter[not(@template = 'B')][1]/@template = 'C'"
但是这对所有章节都返回false。我哪里错了?
答案 0 :(得分:1)
//chapter[@template='A'][last()]
之类的内容怎么办?