Hi, I need to process URLs in XML documents differently depending on the target. Thanks to Hans and Thomas I can now deal with the attributes. Now I need to prefix certain kind of targets with a certain URL (a web viewer for IIIF images in this particular case). The prefix contains a #, which, as a special character seems to cause an error. Adding a double hash seems to work, but those ## will end up in the link URL. How can I properly escape a single #? I've already tried using \Ux{23}, but that won't work either. Best, Denis \setupinteraction[state=start] \startxmlsetups xml:test \xmlsetsetup{#1}{*}{-} \xmlsetsetup{#1}{doc|element}{xml:*} \stopxmlsetups \xmlregisterdocumentsetup{test}{xml:test} \startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups \startluacode function xml.finalizers.tex.url(e,a) local u = #e > 0 and e[1].at[a] local s = u and lpeg.match(lpeg.patterns.urlunescaper,u) context(s) end \stopluacode \startxmlsetups xml:element \xmldoifelse{#1}{.[@href and contains(@href,'https://iiif.ub.unibe.ch')]} {\goto{\xmlflush{#1}}[url(https://uv-v4.netlify.app/##?manifest=\xmlatt{#1}{href})]} % gives me two hashes in the Link %{\goto{\xmlflush{#1}}[url(https://uv-v4.netlify.app/#?manifest=\xmlatt{#1}{xlink:href})]} \par % does not work {\goto{\xmlflush{#1}}[url(\xmlatt{#1}{href})]} \stopxmlsetups \startbuffer[test] IIIF-Link Other Link \stopbuffer \starttext \xmlprocessbuffer{test}{test}{} \stoptext