Hi, I have an XML file (which is generated via a program that I have no control over), which contains elements as follows: <p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p> I want to typeset the `text` attribute of equation (and ignore the <img> tag). So, I tried: \startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups \startxmlsetups matlab:equation \xmlatt{#1}{text} \stopxmlsetups This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for content and not attributes). Thanks, Aditya
On 11/01/19 10:26 AM, Aditya Mahajan wrote:
Hi,
I have an XML file (which is generated via a program that I have no control over), which contains elements as follows:
<p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p>
I want to typeset the `text` attribute of equation (and ignore the <img> tag). So, I tried:
\startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups
\startxmlsetups matlab:equation \xmlatt{#1}{text} \stopxmlsetups
This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for content and not attributes).
You could write your own attribute fetcher in Lua. Probably there is a more elegant method. \startbuffer[test] <p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p> \stopbuffer \startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{p}{matlab:*} \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups \startxmlsetups matlab:p \xmlflush{#1} \stopxmlsetups \startxmlsetups matlab:equation \xmlfunction{#1}{equation} \stopxmlsetups \startluacode local a = "text" local ctxcatcodes = catcodes.numbers.ctxcatcodes function xml.functions.equation(id) local e = lxml.getid(id) if e then local at = e.at if at then local att = at[a] if att ~= "" then context.sprint(ctxcatcodes,att) end end end end \stopluacode \xmlregistersetup{matlab} \starttext \xmlprocessbuffer{test}{test}{} \stoptext
Thanks, Aditya ___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : http://contextgarden.net ___________________________________________________________________________________
On Fri, 11 Jan 2019, Henri Menke wrote:
On 11/01/19 10:26 AM, Aditya Mahajan wrote:
Hi,
I have an XML file (which is generated via a program that I have no control over), which contains elements as follows:
<p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p>
I want to typeset the `text` attribute of equation (and ignore the <img> tag). So, I tried:
\startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups
\startxmlsetups matlab:equation \xmlatt{#1}{text} \stopxmlsetups
This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for content and not attributes).
You could write your own attribute fetcher in Lua. Probably there is a more elegant method.
\startbuffer[test] <p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p> \stopbuffer
\startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{p}{matlab:*} \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups
\startxmlsetups matlab:p \xmlflush{#1} \stopxmlsetups
\startxmlsetups matlab:equation \xmlfunction{#1}{equation} \stopxmlsetups \startluacode local a = "text" local ctxcatcodes = catcodes.numbers.ctxcatcodes
function xml.functions.equation(id) local e = lxml.getid(id) if e then local at = e.at if at then local att = at[a] if att ~= "" then context.sprint(ctxcatcodes,att) end end end end \stopluacode
\xmlregistersetup{matlab}
\starttext \xmlprocessbuffer{test}{test}{} \stoptext
Thanks! Aditya
On 1/10/2019 10:26 PM, Aditya Mahajan wrote:
Hi,
I have an XML file (which is generated via a program that I have no control over), which contains elements as follows:
<p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p>
I want to typeset the `text` attribute of equation (and ignore the <img> tag). So, I tried:
\startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups
\startxmlsetups matlab:equation \xmlatt{#1}{text} \stopxmlsetups
This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for content and not attributes). Time for an "aha, I knew it" moment ...
\starttext \startbuffer[test] <p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p> \stopbuffer \startxmlsetups whatever \xmlsetsetup{#1}{p|equation}{xml:*} \stopxmlsetups \xmlregistersetup{whatever} \startxmlsetups xml:p \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:equation \cldcontext{lxml.getid("#1").at.text} \stopxmlsetups \startxmlsetups xml:equation \startformula \cldcontext{(string.gsub(lxml.getid("#1").at.text,"[$][$]",""))} \stopformula \stopxmlsetups \xmlprocessbuffer{main}{test}{} \stoptext ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On Thu, 10 Jan 2019, Hans Hagen wrote:
On 1/10/2019 10:26 PM, Aditya Mahajan wrote:
Hi,
I have an XML file (which is generated via a program that I have no control over), which contains elements as follows:
<p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p>
I want to typeset the `text` attribute of equation (and ignore the <img> tag). So, I tried:
\startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups
\startxmlsetups matlab:equation \xmlatt{#1}{text} \stopxmlsetups
This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for content and not attributes). Time for an "aha, I knew it" moment ...
:-) Thanks. Follow-up question: How do I escape entities inside the attributes. One snippet is: <p> <equation text="$$x_2(t) = \begin{cases} t, & 0 \leq t < 5 \\ -t+10, & t \geq
5\end{cases}$$">$$x_2(t) = \begin{cases} t, & 0 \leq t < 5 \\ -t+10, & t \geq 5\end{cases}$$</equation> </p> This contains ` ` which I want to convert to either newline or blank. (I have to use the text attribute. The content has the right information in this particular instance due to a bug in the conversion) Aditya
On Thu, 10 Jan 2019, Aditya Mahajan wrote:
On Thu, 10 Jan 2019, Hans Hagen wrote:
On 1/10/2019 10:26 PM, Aditya Mahajan wrote:
Hi,
I have an XML file (which is generated via a program that I have no control over), which contains elements as follows:
<p> <equation text="$$y_1(t) = 1, t \geq 0$$"> <img alt="$$y_1(t) = 1, t \geq 0$$" class="equation" height="15px" src="Lab01_eq10401623798909303081.png" width="95px"/> </equation> </p>
I want to typeset the `text` attribute of equation (and ignore the <img> tag). So, I tried:
\startxmlsetups matlab % Bunch of missing definitions \xmlsetsetup{#1}{equation}{matlab:*} \stopxmlsetups
\startxmlsetups matlab:equation \xmlatt{#1}{text} \stopxmlsetups
This literally typesets `$$y_1(t) = 1, t \geq 0$$`. How can I flush the attribute using ctxcatcodes? (There is \xmlflushcontent, but that is for content and not attributes). Time for an "aha, I knew it" moment ...
This contains ` ` which I want to convert to either newline or blank.
Some debugging showed that the entity was being translated correctly. I was typesetting the output under texcatcodes, which was causing the problem. Setting formfeedasciicode and endoflineasciicode to ignorecatcode made everything work correctly. Aditya
participants (3)
-
Aditya Mahajan
-
Hans Hagen
-
Henri Menke