On 7/7/2020 10:46 PM, Pablo Rodriguez wrote:
Dear list,

I have the following sample:

   \startbuffer[demo]
     <document>
     <h2 id="heading">Heading</h2>
       <ul>
         <li>list</li>
       </ul>
     <h2 id="heading-1">Heading</h2>
       <ul>
         <li>list
         <ul>
            <li>list</li>
         </ul></li>
       </ul>
     <h2 id="heading-2">Heading</h2>
       <ul>
         <li>list
         <ul>
           <li>list
           <ul>
             <li>list</li>
           </ul></li>
         </ul></li>
       </ul>
     </document>
   \stopbuffer

   \startxmlsetups xml:demo:base
       \xmlsetsetup{#1}{document|h2|ul|li}{xml:*}
       %~ \xmlsetsetup{#1}{ul/li/!ul}{xml:last:item} % nothing changes
       %~ \xmlsetsetup{#1}{ul/li/!li}{xml:last:item} % blank item inserted
       %~ \xmlsetsetup{#1}{h2/**/ul/li}{xml:last:item} % nothing changes
       \xmlsetsetup{#1}{h2/***/ul/li/!ul}{xml:last:item} % shouldn’t be
this one?
   \stopxmlsetups

   \xmlregistersetup{xml:demo:base}

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

   \startxmlsetups xml:h2
       \section{\xmlflush{#1}}
   \stopxmlsetups

   \startxmlsetups xml:ul
       \startitemize\xmlflush{#1}\stopitemize
   \stopxmlsetups

   \startxmlsetups xml:li
       \startitem\xmlflush{#1}\stopitem
   \stopxmlsetups

   \startxmlsetups xml:last:item
       \startitem\red\xmlflush{#1}\stopitem
   \stopxmlsetups

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

I need to be able to select the last <li> (the one with no <ul> child)
in the <h2> element.

I thought that the lpath for that would be "h2/***/ul/li/!ul", but I
don’t know what I’m missing, since it doesn’t work at all.

Which would be the right lpath to select the last item in each list?
This should work but we're one off so i need to fix that.

\startbuffer[demo]
<document>
  <ul>
    <li>first</li>
    <li>any</li>
    <li>last</li>
  </ul>
</document>
\stopbuffer

\startxmlsetups xml:demo:base
  \xmlsetsetup{#1}{document|ul|li}{xml:*}
  \xmlsetsetup{#1}{ul/li[1]}{xml:item:first}
  \xmlsetsetup{#1}{ul/li[-1]}{xml:item:last}
\stopxmlsetups

\xmlregistersetup{xml:demo:base}

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

\startxmlsetups xml:ul
 \startitemize
   \xmlflush{#1}
 \stopitemize
\stopxmlsetups

\startxmlsetups xml:li
  \startitem
    \xmlflush{#1}
  \stopitem
\stopxmlsetups

\startxmlsetups xml:item:first
  \startitem
    \color[blue]{\xmlflush{#1}}
  \stopitem
\stopxmlsetups

\startxmlsetups xml:item:last
  \startitem
    \color[red]{\xmlflush{#1}}
  \stopitem
\stopxmlsetups

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

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : [email protected] / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to