Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT错误“;“不是节点项”;_Xslt_Xpath_Xslt 1.0 - Fatal编程技术网

XSLT错误“;“不是节点项”;

XSLT错误“;“不是节点项”;,xslt,xpath,xslt-1.0,Xslt,Xpath,Xslt 1.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

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

<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()])"/>


我收到“非节点项”错误,但不明白原因。非常感谢您在翻译此错误时提供的任何帮助

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

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

正如@LarsH所回答的那样,
运算符的优先级高于
联合运算符,并且它会产生一个无法与节点集合并的布尔表达式

但是,除此之外,您似乎希望替换
|
联合的
运算符,我将使用以下表达式:

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

编辑:有点输入错误…

正如@LarsH所回答的那样,
运算符的优先级高于
联合运算符,它会导致布尔表达式无法联合到节点集

但是,除此之外,您似乎希望替换
|
联合的
运算符,我将使用以下表达式:

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

编辑:小错误…

@Jacqueline:除了@LarsH right answer,请检查我的表达式是否更好。@Jacqueline:除了@LarsH right answer,请检查我的表达式是否更好。感谢您的清晰解释和优秀示例。非常有帮助。+1用于解决错误并理解她为什么使用“或”,从而提供更好的解决方案。感谢您的清晰解释和优秀示例。非常有帮助。+1有助于解决错误并理解她为什么使用“or”,从而给出更好的解决方案。