XML, multiple spaces encoded as %20 get merged into one space
Hi, I have the example below that uses the three images in the attachment. For some reason multiple spaces encoded as %20 get merged into a single %20. The first image (<test two20spaces.pdf>) does not get included even though the name is correct. The second image (<test one space.pdf>) gets included. Filename is correct. The third image (<test not two space.pdf>) gets included even though the actual file name does not contain two spaces (but @xlink:href does). Any ideas what is going on here? Then, in the case of the link, the two %20 end up as a single %20. Best, Denis \setupinteraction[state=start] \startxmlsetups xml:test \xmlsetsetup{#1}{*}{-} \xmlsetsetup{#1}{document|fig}{xml:*} \stopxmlsetups \xmlregisterdocumentsetup{test}{xml:test} \startxmlsetups xml:document \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:fig \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:graphic \externalfigure[\xmlfilter{#1}{./url('xlink:href')}] \stopxmlsetups \startxmlsetups xml:link https://uv-v4.netlify.app/\#?manifest=\xmlfilter{#1}{./url('xlink:href')} \stopxmlsetups \startxmlsetups xml:fig \startplacefigure[title=Test] \startalignment[center] \goto {\xmlfilter{#1}{/graphic/command(xml:graphic)}} [url(\xmlfilter{#1}{/link/command(xml:link)})] \stopalignment \stopplacefigure \goto{test}[url(\xmlfilter{#1}{/link/command(xml:link)})] \stopxmlsetups \startbuffer[test] <?xml version="1.0" encoding="UTF-8"?> <document> <fig> <graphic xlink:href="test%20%20two%20spaces.pdf"/> <link xlink:href="https://iiif.ub.unibe.ch/presentation/v2.1/berner-inkunabeln/manifest/Inc%20IV%2076%20%20Spiegel%20vorn_Teigstempel"/> </fig> <fig> <graphic xlink:href="test%20one%20space.pdf"/> <link xlink:href="https://iiif.ub.unibe.ch/presentation/v2.1/berner-inkunabeln/manifest/Inc%20IV%2076%20%20Spiegel%20vorn_Teigstempel"/> </fig> <fig> <graphic xlink:href="test%20%20not%20two%20spaces.pdf"/> <link xlink:href="https://iiif.ub.unibe.ch/presentation/v2.1/berner-inkunabeln/manifest/Inc%20IV%2076%20%20Spiegel%20vorn_Teigstempel"/> </fig> </document> \stopbuffer \starttext \xmlprocessbuffer{test}{test}{} \stoptext
On 9/6/23 12:28, denis.maier@unibe.ch wrote:
Hi,
I have the example below that uses the three images in the attachment. For some reason multiple spaces encoded as %20 get merged into a single %20.
Hi Denis, this is standard TeX behavior (not only related to XML): \starttext \externalfigure[test two spaces.pdf] \externalfigure[test not two spaces.pdf] \stoptext I don‘t know whether this is intended or not. That being said, more than one consecutive space in a file name (I would say it) is rather an exception than the rule. Fixing this may cause more trouble that it might seem at first. Best, Pablo
On 9/6/2023 4:59 PM, Pablo Rodriguez wrote:
On 9/6/23 12:28, denis.maier@unibe.ch wrote:
Hi,
I have the example below that uses the three images in the attachment. For some reason multiple spaces encoded as %20 get merged into a single %20.
Hi Denis,
this is standard TeX behavior (not only related to XML):
\starttext \externalfigure[test two spaces.pdf] \externalfigure[test not two spaces.pdf] \stoptext
I don‘t know whether this is intended or not.
That being said, more than one consecutive space in a file name (I would say it) is rather an exception than the rule.
Fixing this may cause more trouble that it might seem at first. The problem with escaping is that there can be several round trips and it's kind of hard to predict usage and such. Also, take this:
<graphic xlink:href='test%20%20n$ot%20t\wo%20s{p}a#ces.p"df'/> Then, as i don't have these graphics, the test failed after a catch on the fact that tex didn't like the string for rendering in the 'unknown figure' drop in and after another catch the { } were not shown ... Anyway, with a little magic i can now at least make this work but it needs testing with existing documents because it's not like we can update the xml stuff every thiem we have yet another exception (ok, those using sane image names are probably okay). So, in a next update you can test some, Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (3)
-
denis.maier@unibe.ch
-
Hans Hagen
-
Pablo Rodriguez