[NTG-context] redefining xmlsetups inside a XML document
mf
massifr at fastwebnet.it
Tue Mar 22 17:07:24 CET 2022
I've added a <script type="text/x-lua"> in the <head> element (BTW,
"text/x-lua" is the mimetype proposed by freedesktop.org for lua scripts.
That element is managed by this code:
------------------------------
if mimetype and mimetype == "text/x-lua" then
local code = xml.text(s)
context( "\\startluacode " .. code .. " \\stopluacode" )
end
------------------------------
s is the table representing the script element.
That works, but it has a problem with one-line comments:
------------------------------
<script type="text/x-lua">
-- comment
context.setuppapersize{ "A7" }
</script>
------------------------------
The code above is considered a long comment as if it were written as
------------------------------
<script type="text/x-lua">
-- comment context.setuppapersize{ "A7" }
</script>
------------------------------
so the context.setuppapersize function call is ignored.
The workaround is:
------------------------------
<script type="text/x-lua">
--[[ comment --]]
context.setuppapersize{ "A7" }
</script>
------------------------------
A lua analogous of \xmlcontext (line-wise) would be great.
* * *
Here's another problem related to space in <script> elements.
This code:
------------------------------
<script type="text/vnd.context">
% default setup for paragraphs
\startxmlsetups myHtml:p
\dontleavehmode\red\xmlflush{#1}\par
\stopxmlsetups
% default setup for italic inlines
\startxmlsetups myHtml:i
{\it\blue\xmlflush{#1}}% <-- problem here
\stopxmlsetups
</script>
------------------------------
adds a space after an <i> element.
A solution could be this:
------------------------------
\startxmlsetups myHtml:i
{\it\blue\xmlflush{#1}}\stopxmlsetups
------------------------------
I prefer this one:
------------------------------
\startxmlsetups myHtml:i
{\it\blue\xmlflush{#1}}\relax
\stopxmlsetups
------------------------------
You need to end the line with a macro eating up all the trailing spaces
(newlines included).
Massi
Il 22/03/22 15:23, mf via ntg-context ha scritto:
> I found the solution I was looking for. The command to run is still
>
> context --environment=nested-xmlsetup.tex --forcexml nested-xmlsetup.xhtml
>
> In the <script> element there's some tex code, which redefines the
> xmlsetups for <p> and <i> elements, coloring the first ones in red and
> the second ones in blue.
>
> The key command is
>
> \xmlsetsetup{\xmldocument}{p|i}{myHtml:*}
>
> where \xmldocument instead of #1 applies the myHtml:* setups to the
> whole XHTML document and not only to the <script> element identified by #1.
>
> I tried also this, to prevent redefining the setups of <html>, <head>,
> <script> elements:
>
> \xmlsetsetup{\xmlfirst{\xmldocument}{body}}{p|i}{myHtml:*}
>
> but it doesn't work, since \xmldocument seems to be the actual document
> instead of an id pointing to its root element.
>
> Massi
>
> Il 10/03/22 17:52, Hans Hagen ha scritto:
>> On 3/10/2022 4:59 PM, mf via ntg-context wrote:
>>> Hello,
>>> I'm trying to add new templates (xmlsetups) from the XML document
>>> itself.
>>>
>>> See the attached MWE.
>>>
>>> - the XML document is a simple XHTML file
>>>
>>> - in the "head" element there's a "script" element with the "type"
>>> attribute set to "text/vnd.context", whose contents are then passed
>>> to \xmlcontext
>>>
>>> - the "body" element has a "data-xmlsetups" attribute whose value
>>> should tell which xmlsetups is to be applied on the body contents
>>> (it's defined in the "script" element above)
>>>
>>> If it worked, the resulting PDF should show the body element,
>>> followed by a "Hello world!" paragraph written in red.
>>> But it does not work, because there's something I'm missing in the
>>> redefinition and application of xmlsetups.
>>>
>>> To try the MWE, type:
>>>
>>> context --environment=nested-xmlsetup.tex --forcexml
>>> nested-xmlsetup.xhtml
>> <script type="text/vnd.context">
>> \startxmlsetups myHtml
>> \xmlsetsetup{#1}{p}{myHtml:p}
>> % you're missing this
>> \xmlsetup{#1}{xml:process}
>> % which is
>> % \xmlregistereddocumentsetups{#1}{#1}
>> % \xmlmain{#1}
>> \stopxmlsetups
>>
>> \startxmlsetups myHtml:p
>> \dontleavehmode\red\xmlflush{#1}\par
>> \stopxmlsetups
>> </script>
>>
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
>
> maillist : ntg-context at 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
> ___________________________________________________________________________________
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nested-xmlsetup.xhtml
Type: application/xhtml+xml
Size: 714 bytes
Desc: not available
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20220322/a0f04c49/attachment.xhtml>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nested-xmlsetup.tex
Type: text/x-tex
Size: 1007 bytes
Desc: not available
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20220322/a0f04c49/attachment.tex>
More information about the ntg-context
mailing list