Пример кода, который вы показали, должен работать, но только если нет пробелов (например, новой строки) между p
и add
(потому что текст также считается узлами)
Если вымежду ними может быть пробел, который вы хотите игнорировать. Одно из решений состоит в удалении пробелов только узлов из XML, используя strip-space
в вашем XSLT
<xsl:strip-space elements="*" />
В качестве альтернативы, вы можете изменить свой шаблонсопоставить с учетом узлов пробелов
<xsl:template match="tei:add[preceding-sibling::node()[self::* or normalize-space()][1][local-name()='p']]"/>
Вы могли бы изменить его на это, если бы между ними никогда не было узла без пробелов
<xsl:template match="tei:add[preceding-sibling::*[1][local-name()='p']]"/>