I've found a better solution: \startxmlsetups xml:p \doif{\xmlattribute{#1}{reverse-sibling::p[1]}{class}}{incipit}{\noindent}% \xmlflush{#1}\par \stopxmlsetups Still I did not manage to put that rule in a xmlsetsetup. Tried this: \xmlsetsetup{#1}{p[reverse-sibling::p[1]/attribute('class') == 'incipit']}{xml:p:noindent} but it does not work.
Hello list, I need a lpath expression to intercept the first p (HTML paragraph) after a p of class "incipit". Here's a (not) working example:
\startbuffer[test] <text> <p class="incipit">Dear list,</p> <p>this paragraph should not be indented, because it follows the “incipit” of the letter.</p> <p>This one and the following ones should be indented.</p> <p>You may question whether “Dear list,” should be a paragraph of his own, but my text is already formatted like that and I can’t do anything about it.</p> </text> \stopbuffer
\startxmlsetups xml:somesetups \xmlsetsetup{#1}{text}{xml:text} \xmlsetsetup{#1}{p}{xml:p} \xmlsetsetup{#1}{p[@class='incipit']}{xml:p:noindent} % the following lpath expression does not work \xmlsetsetup{#1}{p[./preceding-sibling::[-1][@class = 'incipit']]}{xml:p:noindent} \stopxmlsetups
\xmlregistersetup{xml:somesetups}
\startxmlsetups xml:text \indenting[{yes,first,12pt}] \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:p \xmlflush{#1}\par \stopxmlsetups
\startxmlsetups xml:p:noindent \noindent\xmlflush{#1}\par \stopxmlsetups
\starttext \xmlprocessbuffer{main}{test}{} \stoptext
Thanks for any help.