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
Here in Terminal on my Mac: 21 ~: lua Lua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio
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.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.nl mailto:ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context webpage : https://www.pragma-ade.nl https://www.pragma-ade.nl/ / http://context.aanhet.net http://context.aanhet.net/ archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.net https://contextgarden.net/ ___________________________________________________________________________________
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