Как ответил @LarsH, оператор or
имеет больший приоритет, чем оператор объединения |
, и это приводит к логическому выражению, которое нельзя объединить с набором узлов.
Но,Кроме того, похоже, что вы хотите заменить оператор or
на объединение |
, я бы использовал это выражение:
generate-id((ancestor::w:sdt[1] |
preceding-sibling::w:p
[w:pPr/w:pStyle/@w:val[. = 'Heading1' or . = 'Heading2']]
)[last()])
Edit : маленькая опечатка ...