Unexpected results with \xmlpos
Hi, I'm getting unexpected results for \xmlpos With the example below, I was expecting to get the following positions: 1 2 3 4 However the result is: 2 4 6 8, i.e. each time it's exactly the double. What am I missing? Background: I need to define column alignment based on the value of the <col> element inside the colgroup, so I was thinking about something like this : \xmlmapvalue{colstyle}{dir: rtl}{align=righttolef } \xmlmapvalue{colstyle}{dir: ltr}{align=lefttoright} \startxmlsetups xml:table:colgroup:col \setupTABLE[c][\xmlpos{#1}][\xmlvalue{colstyle}{\xmlatt{#1}{style}}{}] \stopxmlsetups Best, Denis \startbuffer[test] <?xml version='1.0' standalone='yes?> <document> <table-wrap> <table> <colgroup> <col/> <col style="dir: rtl"/> <col style="dir: rtl"/> <col/> </colgroup> <thead> <tr> <th>a</th> <th>b</th> <th>c</th> <th>d</th> </tr> </thead> <tbody> <tr> <td>a</td> <td>b</td> <td>c</td> <td>d</td> </tr> </tbody> </table> </table-wrap> </document> \stopbuffer \startxmlsetups xml:test \xmlsetsetup{\xmldocument}{document}{xml:*} \xmlsetsetup{#1}{table-wrap}{xml:table-wrap} \xmlsetsetup{#1}{table}{xml:table} \stopxmlsetups \xmlregistersetup{xml:test} \startxmlsetups xml:document \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:table-wrap \startplacetable \xmlflush{#1} \stopplacetable \stopxmlsetups \startxmlsetups xml:table:colgroup %\xmlvalue{colstyle}{\xmlatt{#1}{style}}{} \xmlfilter {#1} {/col/command(xml:table:colgroup:col)} \stopxmlsetups \startxmlsetups xml:table:colgroup:col %\xmlvalue{colstyle}{\xmlatt{#1}{style}}{} \xmlpos {#1} \stopxmlsetups \startxmlsetups xml:table \xmlfilter {#1} {/colgroup/command(xml:table:colgroup)} \bTABLE \xmlfilter{#1}{/thead/command(xml:table:thead)} \xmlfilter{#1}{/tbody/command(xml:table:tbody)} \eTABLE \stopxmlsetups \startxmlsetups xml:table:thead \bTABLEhead \xmlfilter{#1}{/tr/command(xml:table:thead:tr)} \eTABLEhead \stopxmlsetups \startxmlsetups xml:table:thead:tr \bTR \xmlfilter{#1}{/th/command(xml:table:thead:tr:th)} \eTR \stopxmlsetups \startxmlsetups xml:table:thead:tr:th \bTH \xmlflush{#1} \eTH \stopxmlsetups \startxmlsetups xml:table:tbody \bTABLEbody\xmlfilter{#1}{/tr/command(xml:table:tbody:tr)}\eTABLEbody \stopxmlsetups \startxmlsetups xml:table:tbody:tr \bTR\xmlfilter{#1}{/td/command(xml:table:tbody:tr:td)}\eTR \stopxmlsetups \startxmlsetups xml:table:tbody:tr:td \bTC \xmlflush{#1} \eTC \stopxmlsetups \starttext \xmlprocessbuffer{test}{test}{} \stoptext
On 2/16/2023 10:16 AM, Denis Maier via ntg-context wrote:
Hi,
I’m getting unexpected results for \xmlpos
With the example below, I was expecting to get the following positions:
1 2 3 4
However the result is: 2 4 6 8, i.e. each time it’s exactly the double.
What am I missing?
that there are spaces between elements .. you can try: \xmlmatch {#1} instead Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
-----Ursprüngliche Nachricht----- Von: ntg-context
Im Auftrag von Hans Hagen via ntg-context Gesendet: Donnerstag, 16. Februar 2023 23:45 An: Denis Maier via ntg-context Cc: Hans Hagen Betreff: Re: [NTG-context] Unexpected results with \xmlpos On 2/16/2023 10:16 AM, Denis Maier via ntg-context wrote:
Hi,
I’m getting unexpected results for \xmlpos
With the example below, I was expecting to get the following positions:
1 2 3 4
However the result is: 2 4 6 8, i.e. each time it’s exactly the double.
What am I missing?
that there are spaces between elements .. you can try:
\xmlmatch {#1}
instead
Hans
Thanks, that does the trick. However, now I get an error when I try to return a key-value setting via xmlmap, see below. Any hints why this does not work \xmlmapvalue{colgroupalign}{dir: rtl}{align=righttoleft} \xmlmapvalue{colgroupalign}{dir: ltr}{align=lefttoright} as opposed to: \xmlmapvalue{colgroupalignvar}{dir: rtl}{righttoleft} \xmlmapvalue{colgroupalignvar}{dir: ltr}{lefttoright} ? Best, Denis \startbuffer[test] <?xml version='1.0' standalone='yes?> <document> <table-wrap> <table> <colgroup> <col/> <col style="dir: rtl"/> <col style="dir: rtl"/> <col/> </colgroup> <thead> <tr> <th>asdf</th> <th>bsdf</th> <th>csdf</th> <th>dsdf</th> </tr> </thead> <tbody> <tr> <td>a</td> <td>b</td> <td>c</td> <td>d</td> </tr> </tbody> </table> </table-wrap> </document> \stopbuffer \startxmlsetups xml:test \xmlsetsetup{\xmldocument}{document}{xml:*} \xmlsetsetup{#1}{table-wrap}{xml:table-wrap} \xmlsetsetup{#1}{table}{xml:table} \stopxmlsetups \xmlregistersetup{xml:test} \xmlmapvalue{colgroupalign}{dir: rtl}{align=righttoleft} \xmlmapvalue{colgroupalign}{dir: ltr}{align=lefttoright} \xmlmapvalue{colgroupalignvar}{dir: rtl}{righttoleft} \xmlmapvalue{colgroupalignvar}{dir: ltr}{lefttoright} \startxmlsetups xml:table:colgroup \xmlfilter {#1} {/col/command(xml:table:colgroup:col)} % gives errors %\xmlfilter {#1} {/col/command(xml:table:colgroup:colvar)} % works \stopxmlsetups \startxmlsetups xml:table:colgroup:colvar \setupTABLE[c][\xmlmatch {#1}][align=\xmlvalue{colgroupalignvar}{\xmlatt{#1}{style}}{lefttoright}] \stopxmlsetups \startxmlsetups xml:table:colgroup:col \setupTABLE[c][\xmlmatch {#1}][\xmlvalue{colgroupalign}{\xmlatt{#1}{style}}{align=lefttoright}] \stopxmlsetups \startxmlsetups xml:document \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:table-wrap \startplacetable \xmlflush{#1} \stopplacetable \stopxmlsetups \startxmlsetups xml:table \xmlfilter {#1} {/colgroup/command(xml:table:colgroup)} \bTABLE \xmlfilter{#1}{/thead/command(xml:table:thead)} \xmlfilter{#1}{/tbody/command(xml:table:tbody)} \eTABLE \stopxmlsetups \startxmlsetups xml:table:thead \bTABLEhead \xmlfilter{#1}{/tr/command(xml:table:thead:tr)} \eTABLEhead \stopxmlsetups \startxmlsetups xml:table:thead:tr \bTR \xmlfilter{#1}{/th/command(xml:table:thead:tr:th)} \eTR \stopxmlsetups \startxmlsetups xml:table:thead:tr:th \bTH \xmlflush{#1} \eTH \stopxmlsetups \startxmlsetups xml:table:tbody \bTABLEbody\xmlfilter{#1}{/tr/command(xml:table:tbody:tr)}\eTABLEbody \stopxmlsetups \startxmlsetups xml:table:tbody:tr \bTR\xmlfilter{#1}{/td/command(xml:table:tbody:tr:td)}\eTR \stopxmlsetups \startxmlsetups xml:table:tbody:tr:td \bTC \xmlflush{#1} \eTC \stopxmlsetups \starttext \xmlprocessbuffer{test}{test}{} \stoptext
I maybe should have mentioned the error message I'm getting: error in line 9, namespace '1CB>:', key 'align=lefttoright,' Maybe that's helpful for tracking this down... Best, Denis
-----Ursprüngliche Nachricht----- Von: ntg-context
Im Auftrag von Denis Maier via ntg-context Gesendet: Montag, 20. Februar 2023 15:32 An: ntg-context@ntg.nl Cc: Maier, Denis Christian (UB) Betreff: [NTG-context] \xmlmap errors when returning key-value -----Ursprüngliche Nachricht----- Von: ntg-context
Im Auftrag von Hans Hagen via ntg-context Gesendet: Donnerstag, 16. Februar 2023 23:45 An: Denis Maier via ntg-context Cc: Hans Hagen Betreff: Re: [NTG-context] Unexpected results with \xmlpos On 2/16/2023 10:16 AM, Denis Maier via ntg-context wrote:
Hi,
I’m getting unexpected results for \xmlpos
With the example below, I was expecting to get the following positions:
1 2 3 4
However the result is: 2 4 6 8, i.e. each time it’s exactly the double.
What am I missing?
that there are spaces between elements .. you can try:
\xmlmatch {#1}
instead
Hans
Thanks, that does the trick.
However, now I get an error when I try to return a key-value setting via xmlmap, see below. Any hints why this does not work
\xmlmapvalue{colgroupalign}{dir: rtl}{align=righttoleft} \xmlmapvalue{colgroupalign}{dir: ltr}{align=lefttoright}
as opposed to:
\xmlmapvalue{colgroupalignvar}{dir: rtl}{righttoleft} \xmlmapvalue{colgroupalignvar}{dir: ltr}{lefttoright}
?
Best, Denis
\startbuffer[test] <?xml version='1.0' standalone='yes?> <document> <table-wrap> <table> <colgroup> <col/> <col style="dir: rtl"/> <col style="dir: rtl"/> <col/> </colgroup> <thead> <tr> <th>asdf</th> <th>bsdf</th> <th>csdf</th> <th>dsdf</th> </tr> </thead> <tbody> <tr> <td>a</td> <td>b</td> <td>c</td> <td>d</td> </tr> </tbody> </table> </table-wrap> </document> \stopbuffer
\startxmlsetups xml:test \xmlsetsetup{\xmldocument}{document}{xml:*} \xmlsetsetup{#1}{table-wrap}{xml:table-wrap} \xmlsetsetup{#1}{table}{xml:table} \stopxmlsetups
\xmlregistersetup{xml:test}
\xmlmapvalue{colgroupalign}{dir: rtl}{align=righttoleft} \xmlmapvalue{colgroupalign}{dir: ltr}{align=lefttoright}
\xmlmapvalue{colgroupalignvar}{dir: rtl}{righttoleft} \xmlmapvalue{colgroupalignvar}{dir: ltr}{lefttoright}
\startxmlsetups xml:table:colgroup \xmlfilter {#1} {/col/command(xml:table:colgroup:col)} % gives errors %\xmlfilter {#1} {/col/command(xml:table:colgroup:colvar)} % works \stopxmlsetups
\startxmlsetups xml:table:colgroup:colvar \setupTABLE[c][\xmlmatch {#1}][align=\xmlvalue{colgroupalignvar}{\xmlatt{#1}{style}}{lefttoright}] \stopxmlsetups
\startxmlsetups xml:table:colgroup:col \setupTABLE[c][\xmlmatch {#1}][\xmlvalue{colgroupalign}{\xmlatt{#1}{style}}{align=lefttoright}] \stopxmlsetups
\startxmlsetups xml:document \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:table-wrap \startplacetable \xmlflush{#1} \stopplacetable \stopxmlsetups
\startxmlsetups xml:table \xmlfilter {#1} {/colgroup/command(xml:table:colgroup)} \bTABLE \xmlfilter{#1}{/thead/command(xml:table:thead)} \xmlfilter{#1}{/tbody/command(xml:table:tbody)} \eTABLE \stopxmlsetups
\startxmlsetups xml:table:thead \bTABLEhead \xmlfilter{#1}{/tr/command(xml:table:thead:tr)} \eTABLEhead \stopxmlsetups
\startxmlsetups xml:table:thead:tr \bTR \xmlfilter{#1}{/th/command(xml:table:thead:tr:th)} \eTR \stopxmlsetups
\startxmlsetups xml:table:thead:tr:th \bTH \xmlflush{#1} \eTH \stopxmlsetups
\startxmlsetups xml:table:tbody \bTABLEbody\xmlfilter{#1}{/tr/command(xml:table:tbody:tr)}\eTABLEbody \stopxmlsetups
\startxmlsetups xml:table:tbody:tr \bTR\xmlfilter{#1}{/td/command(xml:table:tbody:tr:td)}\eTR \stopxmlsetups
\startxmlsetups xml:table:tbody:tr:td \bTC \xmlflush{#1} \eTC \stopxmlsetups
\starttext \xmlprocessbuffer{test}{test}{} \stoptext
__________________________________________________________ _________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg- context webpage : https://www.pragma-ade.nl / http://context.aanhet.net archive : https://bitbucket.org/phg/context-mirror/commits/ wiki : https://contextgarden.net __________________________________________________________ _________________________
participants (2)
-
denis.maier@unibe.ch
-
Hans Hagen