[NTG-context] XML - accessing parental children attribute (was: some troubles)

Procházka Lukáš Ing. - Pontex s. r. o. LPr at pontex.cz
Tue Feb 17 15:25:20 CET 2015


Hello,

a slightly modified example:

---- t.xml

<a>
   <aa number="111">AA</aa>
   <ab number="222">AB</ab>
</a>

----

and the Ctx source:

---- t.mkiv

\startxmlsetups xml:T
   \xmlfunction{#1}{test}
   \xmlsetsetup{\xmldocument}{*}{+}
   % \xmlsetsetup{\xmldocument}{*}{-} % Empties output?!
   \xmlsetsetup{\xmldocument}{a/aa}{xml:*}
   \xmlsetsetup{\xmldocument}{a/ab}{xml:*}
\stopxmlsetups

\startluacode
   local aux = aux; if not aux then aux = {}; _G.aux = aux end

   xml.functions.aa = function(t)
     aux.num = t.at.number
   end
\stopluacode

\startxmlsetups xml:aa
   \xmlfunction{#1}{aa}
\stopxmlsetups

\startxmlsetups xml:ab
   \xmlfunction{#1}{ab}
   \ctxlua{context.section("New section " .. (aux.num or "??"))}
   \xmlflush{#1}
\stopxmlsetups

\xmlregistersetup{xml:T}

\starttext
   Hello

   \xmlprocessfile{id}{t.xml}{}
\stoptext

----

Two (remaining) questions:

1)

Why the line "\xmlsetsetup{\xmldocument}{*}{-}" (try to uncomment!) causes the whole output is empty, even if I specify another operation for "a/ab" elements later?

My intention is to have "{*}{-}" (don't flush anything by default), excluding elements specified later, e.g. "a/ab" (with another operation specified);
how to achieve this?

2)

How to get "aa.number" from within "ab" element?

I believed "\xmlatt{#1/../aa}{number}" within "a/ab" will do that, but...? How to do that?

I have a partial solution: when processing "a/aa", I save an attribute value to a Lua variable, which I use later;
but this solution doesn't look very "clean" for me;
I'd rather find a way to access parental (first) child attributes form within a node...

Thank you in advance;
I'm not very familiar with Ctx XML processing (so far)...

Best regards,

Lukas


-- 
Ing. Lukáš Procházka | mailto:LPr at pontex.cz
Pontex s. r. o.      | mailto:pontex at pontex.cz | http://www.pontex.cz
Bezová 1658
147 14 Praha 4

Tel: +420 241 096 751
Fax: +420 244 461 038
-------------- next part --------------
A non-text attachment was scrubbed...
Name: t.mkiv
Type: application/octet-stream
Size: 718 bytes
Desc: not available
URL: <http://www.ntg.nl/pipermail/ntg-context/attachments/20150217/c302eda4/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: t.pdf
Type: application/pdf
Size: 7652 bytes
Desc: not available
URL: <http://www.ntg.nl/pipermail/ntg-context/attachments/20150217/c302eda4/attachment.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: t.xml
Type: text/xml
Size: 63 bytes
Desc: not available
URL: <http://www.ntg.nl/pipermail/ntg-context/attachments/20150217/c302eda4/attachment.xml>


More information about the ntg-context mailing list