Replacing %20 with spaces in xml attributes

Hi, I'm typesetting an XML document where the links to the images contain spaces which are encoded as %20 <graphic xlink:href="a%20filename%20with%20spaces.jpg"/> Using this works in cases without spaces: \startxmlsetups xml:fig:graphic \externalfigure[\xmlatt{#1}{xlink:href}] \stopxmlsetups This also works for normal spaces, but is there a way to decode/expand the %20s to regular spaces? I've tried with some Lua, but I don't really know how to pass data around. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \startluacode function replaceSpaces(s) result = string.gsub(s, "%%20", " ") context(result) end \stopluacode \define[1]\replaceSpaces{\ctxlua{replaceSpaces("#1")}} \startxmlsetups xml:fig:graphic \externalfigure[\replaceSpaces{\xmlatt{#1}{xlink:href}}] \stopxmlsetups %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Any hints, why this does not work?` Also, maybe there's a simpler way for this kind of scenario? Best, Denis

Thanks, but I'm still getting the same error. I'm thinking that it has something to do with the percent characters...
This here works just fine:
\startluacode
function test(s)
result = string.gsub(s, 'x20', 'MATCH')
context(result)
end
\stopluacode
\define[1]\test{\ctxlua{test("#1")}}
\starttext
\test{asdfx20} % -> asdfMATCH
\stoptext
But this here won't:
\startluacode
function test(s)
result = string.gsub(s, '%%20', 'MATCH')
context(result)
end
\stopluacode
\define[1]\test{\ctxlua{test("#1")}}
\starttext
\test{asdf%20} % -> does not work
\stoptext
Any ideas?
Best,
Denis
Von: Hans van der Meer via ntg-context
string.gsub('a%20b', '%%20', ' ')
a b 1
(string.gsub('a%20b', '%%20', ' '))
a b
^D
21 ~: The first call returns the 1 giving the match, the extra ()'s get rid of that second return value. yours sincerely dr. Hans van der Meer On 21 Jul 2023, at 12:37, denis.maier@unibe.chmailto:denis.maier@unibe.ch wrote: Hi, I'm typesetting an XML document where the links to the images contain spaces which are encoded as %20 <graphic xlink:href="a%20filename%20with%20spaces.jpg"/> Using this works in cases without spaces: \startxmlsetups xml:fig:graphic \externalfigure[\xmlatt{#1}{xlink:href}] \stopxmlsetups This also works for normal spaces, but is there a way to decode/expand the %20s to regular spaces? I've tried with some Lua, but I don't really know how to pass data around. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \startluacode function replaceSpaces(s) result = string.gsub(s, "%%20", " ") context(result) end \stopluacode \define[1]\replaceSpaces{\ctxlua{replaceSpaces("#1")}} \startxmlsetups xml:fig:graphic \externalfigure[\replaceSpaces{\xmlatt{#1}{xlink:href}}] \stopxmlsetups %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Any hints, why this does not work?` Also, maybe there's a simpler way for this kind of scenario? Best, Denis ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nlmailto:ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context webpage : https://www.pragma-ade.nlhttps://www.pragma-ade.nl/ / http://context.aanhet.nethttp://context.aanhet.net/ archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.nethttps://contextgarden.net/ ___________________________________________________________________________________
participants (2)
-
denis.maier@unibe.ch
-
Hans van der Meer