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]
a
   aa number=/aa
   aa number=a1A1/aa
   ax number=x1X1/ab
   ab number=b1B1/ab
   aa number=/aa
   aa number=a2A2/aa
   ax number=x2X2/ab
   ab number=b2B2/ab
   aa number=/aa
   aa number=a3A3/aa
   ax number=x3X3/ab
   ab number=b3B3/ab
/a
\stopbuffer

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

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

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

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

\startxmlsetups xml:ab
 \par
 ab
 \xmlflush{#1}:\space
 aa: \xmlfilter{#1}{reverse-sibling::[tag() ==
'aa']/attribute('number')}\space
 ax: \xmlfilter{#1}{reverse-sibling::[tag() ==
'ax']/attribute('number')}\space
 /ab
 \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 Procházka Lukáš Ing . - Pontex s . r . o .

Hello,

a slightly modified example:

 t.xml

a
  aa number=111AA/aa
  ab number=222AB/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: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
a
  aa number=111AA/aa
  ab number=222AB/ab
/a
___
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

a
   aa number=111AA/aa
   ab number=222AB/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...


\startbuffer[demo]
a
  aa number=/aa
  aa number=a1A1/aa
  ax number=x1X1/ab
  ab number=b1B1/ab
  aa number=/aa
  aa number=a2A2/aa
  ax number=x2X2/ab
  ab number=b2B2/ab
  aa number=/aa
  aa number=a3A3/aa
  ax number=x3X3/ab
  ab number=b3B3/ab
/a
\stopbuffer

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

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

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

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

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

/ab
\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
___