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

2015-02-17 Thread Procházka Lukáš Ing . - Pontex s . r . o .

Hello,

thanks Hans, this works perfectly...

Lukas



\startbuffer[demo]

   --
   A1
   X1
   B1
   --
   A2
   X2
   B2
   --
   A3
   X3
   B3

\stopbuffer

\startxmlsetups xml:initialize
 \xmlsetsetup{#1}{*}{xml:*}
\stopxmlsetups

\startxmlsetups xml:a
 \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:aa
 \par
 \xmlflush{#1}
 \par
\stopxmlsetups

\startxmlsetups xml:ax
 \par
 \xmlflush{#1}
 \par
\stopxmlsetups

\startxmlsetups xml:ab
 \par
 
 \xmlflush{#1}:\space
 aa: \xmlfilter{#1}{reverse-sibling::[tag() ==
'aa']/attribute('number')}\space
 ax: \xmlfilter{#1}{reverse-sibling::[tag() ==
'ax']/attribute('number')}\space
 
 \par
\stopxmlsetups

\xmlregistersetup{xml:initialize}

\starttext
   \xmlprocessbuffer{main}{demo}{}
\stoptext



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

Tel: +420 241 096 751
Fax: +420 244 461 038

___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

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

2015-02-17 Thread Hans Hagen

On 2/17/2015 3:25 PM, Procházka Lukáš Ing. - Pontex s. r. o. wrote:

Hello,

a slightly modified example:

 t.xml


   AA
   AB




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...


\startbuffer[demo]

  --
  A1
  X1
  B1
  --
  A2
  X2
  B2
  --
  A3
  X3
  B3

\stopbuffer

\startxmlsetups xml:initialize
\xmlsetsetup{#1}{*}{xml:*}
\stopxmlsetups

\startxmlsetups xml:a
\xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:aa
\par
\xmlflush{#1}
\par
\stopxmlsetups

\startxmlsetups xml:ax
\par
\xmlflush{#1}
\par
\stopxmlsetups

\startxmlsetups xml:ab
\par

\xmlflush{#1}:\space
aa: \xmlfilter{#1}{reverse-sibling::[tag() == 
'aa']/attribute('number')}\space
ax: \xmlfilter{#1}{reverse-sibling::[tag() == 
'ax']/attribute('number')}\space


\par
\stopxmlsetups

\xmlregistersetup{xml:initialize}

\starttext
  \xmlprocessbuffer{main}{demo}{}
\stoptext

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-
___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

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

2015-02-17 Thread Procházka Lukáš Ing . - Pontex s . r . o .

Hello,

a slightly modified example:

 t.xml


  AA
  AB




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:l...@pontex.cz
Pontex s. r. o.  | mailto:pon...@pontex.cz | http://www.pontex.cz
Bezová 1658
147 14 Praha 4

Tel: +420 241 096 751
Fax: +420 244 461 038

t.mkiv
Description: Binary data


t.pdf
Description: Adobe PDF document

  AA
  AB

___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___