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”,从而给出更好的解决方案。