On 14 Apr 2016, at 10:45, Hans Hagen mailto:pragma@wxs.nl> wrote:
On 4/13/2016 4:21 PM, Meer, Hans van der wrote:
I would like to process several input sources as one xml tree. Like this:
<?xml version="1.0" encoding="UTF-8"?>
<takenotes>
<include buffer="notes-example"/>
<include file="notes-example.xml"/>
</takenotes>
with the sources having the structure
<notes>
<note>...</note>
...
</notes>
and the code for <takenotes> containing:
read from all sources given on <include>-notes
afterwards process all content at once
Thus the content of the various source should be read into one tree to
be processed, but I cannot get this done.
How to amalgam this separate sources into one?
a clue: \xmlinclude
By the way: hoe laad ik de inhoud van een buffer net als van een file, is er een buffer equivalent van \xmlinclude?
Hans, het spijt me zeer, maar ik begrijp er geen hout meer van want er volgt een crash met een lua-error.
Ik lees voor \xmlinclude dat \xmlinclude{NODE}{LPATH}{ATTRIBUTE} de file in het attribuut laadt.
Ik heb wat in de code rondgeneusd.
Uit lxml > tex > including file 'notes-example.xml'
in de log blijkt dat in function lxml.include(id,pattern,attribute,options)
moet zijn uitgevoerd
if trace_loading then
report_lxml("including file %a",filename)
end
noffiles, nofconverted = noffiles + 1, nofconverted + 1
return resolvers.loadtexfile(filename) or ""
Met resolvers tracking komt hier nog tussen:
lxml > tex > including file 'notes-example.xml'
resolvers > methods > resolving, method 'finders', how 'uri', handler 'file', argument 'notes-example.xml'
resolvers > resolving > remembering file 'notes-example.xml' using hash 'xml::notes-example.xml'
resolvers > files > file finder: 'notes-example.xml' found
resolvers > methods > resolving, method 'loaders', how 'uri', handler 'file', argument 'notes-example.xml'
resolvers > files > file loader: 'notes-example.xml' loaded
het lijkt erop dat de gezochte file wel geladen is en dat pas daarna ConTeXt het opgeeft met de error.
De log geeft me hier:
HVDM-NOTE-DEBUG > enter notes:include
HVDM-NOTE-DEBUG > ..looking for file notes-example.xml
lxml > tex > including file 'notes-example.xml'
lua error > lua error on line 14 in file /Users/hansm/Documents/TeX/texmf/publications/takenotes/take notes.tex:
...-35/tex/texmf-context/tex/context/base/mkiv/lxml-aux.lua:428: attempt to index field 'settings' (a nil value)
stack traceback:
...-35/tex/texmf-context/tex/context/base/mkiv/lxml-aux.lua:428: in function 'include'
...-35/tex/texmf-context/tex/context/base/mkiv/lxml-tex.lua:579: in function <...-35/tex/texmf-context/tex/context/base/mkiv/lxml-tex.lua:567>
(...tail calls...)
De navolgende code is toch niet fout?
De main input is
<?xml version="1.0" encoding="UTF-8"?>
<takenotes>
<!-- <include buffer="notes-example"/> -->
<include file="notes-example.xml"/>
</takenotes>
De file notes-example.xml bevat slechts
<note> subnodes </note> etc
omsluiten met <root>...</root> doet niets anders.
Ik doe het volgende (met loading tracker enabled
\startxmlsetups notes:takenotes
% Include files and buffers.
\xmlfilter{#1}{/include/command(notes:include)}
\stopxmlsetups
\startxmlsetups notes:include
% Include from file.
\doifnot{\xmlatt{#1}{file}}{\empty}
{\writestatus{HVDM-NOTE-DEBUG}{..looking for file \xmlatt{#1}{file}}
\xmlinclude{#1}{}{file}}
\stopxmlsetups
Zelfde crash in de volgende gevallen
\xmlinclude{#1}{}{file}
\xmlinclude{#1}{.}{file}
\xmlinclude{#1}{../include}{file}
met vriendelijke groet
Hans van der Meer
met vriendelijke groet
Hans van der Meer