-----Ursprüngliche Nachricht----- Von: Hans Hagen
Gesendet: Donnerstag, 24. August 2023 16:54 An: ntg-context@ntg.nl Betreff: [NTG-context] Re: xmldoif: checking for contents of attribute On 8/24/2023 4:11 PM, denis.maier@unibe.ch wrote:
Hi,
I'm trying to check whether an attribute contains (or, actually starts with) a given string.
\xmldoifelse{#1}{.[@class and contains(@class,'abc')]}{Yes}{No} \xmldoifelse{#1}{.[@class and find(@class,"abc")]}{Yes}{No}
Thanks for your help. I can use that, but why is this sort of double-checking necessary here? \startxmlsetups xml:test \xmlsetsetup{#1}{*}{-} \xmlsetsetup{#1}{doc|element}{xml:*} \stopxmlsetups \xmlregisterdocumentsetup{test}{xml:test} \startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:element 1 \xmldoifelse{#1}{.[@class and contains(@class,'abc')]}{Yes}{No} \par 2 \xmldoifelse{#1}{.[@class and find(@class,"abc")]}{Yes}{No} \par 3 \xmldoifelse{#1}{.[True and contains(@class,'abc')]}{Yes}{No} \par % runs, but no match 4 \xmldoifelse{#1}{.[True and find(@class,"abc")]}{Yes}{No} \par % run, but no match % 5 \xmldoifelse{#1}{.[contains(@class,'abc')]}{Yes}{No} \par % causes an error % 6 \xmldoifelse{#1}{.[find(@class,"abc")]}{Yes}{No} \par % causes an error \stopxmlsetups \startxmlsetups xml:whatever Yes \stopxmlsetups \startbuffer[test] <?xml version="1.0" encoding="UTF-8"?> <doc> <element class="abcdefg">Yes</element> <element>No</element> </doc> \stopbuffer \starttext \xmlprocessbuffer{test}{test}{} \stoptext