0

我正在尝试从平面结构创建嵌套层次结构,并且我正在使用以下键:

<xsl:key name="next-headings" 
              match="w:p[w:pPr/w:pStyle/@w:val = 'Heading3']" 
         use="generate-id((ancestor::w:sdt[1] | 
                           preceding-sibling::w:p
                                   [w:pPr/w:pStyle/@w:val = 'Heading1'] or 
                           preceding-sibling::w:p
                                   [w:pPr/w:pStyle/@w:val = 'Heading2']
                               )[last()])"/>

我收到“不是节点项”错误,但不明白为什么。非常感谢翻译此错误的任何帮助!

4

2 回答 2

3

正如@LarsH 所回答的那样,该运算符比联合运算or符具有更高的优先级,|它会导致一个布尔表达式,您无法联合到节点集。

但是,除了看起来你想替换联合的or运算符之外|,我会使用这个表达式:

generate-id((ancestor::w:sdt[1] |
             preceding-sibling::w:p
                [w:pPr/w:pStyle/@w:val[. = 'Heading1' or . = 'Heading2']]
            )[last()])

编辑:小错字...

于 2011-01-13T15:18:35.400 回答
1

我认为您需要更改or|. 您的意思是通过 union ( |) 创建一个节点集,但or运算符返回一个布尔值,它是“不是节点项”。

于 2011-01-13T15:04:37.630 回答