<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE-CH" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="FR-CH">I have sources that look like this:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><?xml version="1.0" encoding="UTF-8"?><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">   <p>Bla Bla Bla</p><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">   </span><p><o:p></o:p></p>
<p class="MsoNormal">      <underline><o:p></o:p></p>
<p class="MsoNormal">         <italic>Bla</italic><o:p></o:p></p>
<p class="MsoNormal">      </underline>, Bla Bla.</p><o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH"></article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">Typesetting this with context gives me a spurious space after the underlined Bla in italics. Complete MWE :<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\startxmlsetups xml:test<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    \xmlsetsetup{#1}{*}{-}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    \xmlsetsetup{#1}{article|p|italic|underline}{xml:*}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\stopxmlsetups<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\xmlregistersetup{xml:test}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\startxmlsetups xml:article<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\starttext<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    \xmlflush{#1}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\stoptext<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\stopxmlsetups<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\startxmlsetups xml:p<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    \xmlflush{#1}\par<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\stopxmlsetups<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\startxmlsetups xml:italic<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    \emph{\xmlflush{#1}}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\stopxmlsetups<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\startxmlsetups xml:underline<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    </span>\underbar{\xmlflush{#1}}<o:p></o:p></p>
<p class="MsoNormal">\stopxmlsetups<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\startbuffer[test]<o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH"><?xml version="1.0" encoding="UTF-8"?><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">   <p>Bla Bla Bla</p><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">   </span><p><o:p></o:p></p>
<p class="MsoNormal">      <underline><o:p></o:p></p>
<p class="MsoNormal">         <italic>Bla</italic><o:p></o:p></p>
<p class="MsoNormal">      </underline>, Bla Bla.</p><o:p></o:p></p>
<p class="MsoNormal"></article><o:p></o:p></p>
<p class="MsoNormal">\stopbuffer<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">\xmlprocessbuffer{test}{test}{}<o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">How can I get rid off spurious leading and trailing whitespace. I’ve found \xmlstrip and \xmlstripped, but I don’t really understand how they work. I’ve also found out about
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">\ignorespaces\xmlflush{#1}\removeunwantedspaces<o:p></o:p></span></p>
<p class="MsoNormal">but this has then to be added to every definition, which would be a bit tedious...<o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH">There have a been a couple of similar questions by Hans van der Meer about a decade ago, but I couldn’t find the answer.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">Then, \xmlstripanywhere is also mentioned in xml-mkiv.pdf, but it’s not explained. I found one example in the sources (<a href="https://source.contextgarden.net/tex/context/modules/mkiv/x-html.mkiv?search=%5Cxmlstripanywhere#l50">https://source.contextgarden.net/tex/context/modules/mkiv/x-html.mkiv?search=%5Cxmlstripanywhere#l50</a><span style="color:black">)</span>,
 but what does that do? </span>Is that sort of need for \xmlstrip and friends to work?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">So, what would be the best way to deal with that situation? (More details below, perhaps there’s an easier solution outside of context, because the problem is actually caused by xslt...)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best,<o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH">Denis<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">P.S. Background:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">I convert docx files with pandoc to jats xml. Pandoc does quite a decent job, but I need to tweak a few things with xslt. The actual transformation that I need works ok, but the transformation also causes other problems.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">This is the original markdown file :<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH">Bla Bla Bla<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">[*Bla*]{.underline} Bla Bla.<o:p></o:p></span></p>
<p class="MsoNormal">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="FR-CH">Pandoc produces a jats xml file that looks like this (simplified, empty nodes deleted) :<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><?xml version="1.0" encoding="utf-8" ?><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><body><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><p>Bla Bla Bla</p><o:p></o:p></span></p>
<p class="MsoNormal"><p><underline><italic>Bla</italic></underline>, Bla Bla.</p><o:p></o:p></p>
<p class="MsoNormal"><span lang="FR-CH"></body><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"></article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">I use this xsl for tweaking pandoc’s output<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><?xml version="1.0" encoding="UTF-8"?><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><xsl:stylesheet version="1.0" xmlns:xsl=<a href="http://www.w3.org/1999/XSL/Transform">http://www.w3.org/1999/XSL/Transform</a> xmlns:fo=<a href="http://www.w3.org/1999/XSL/Format">http://www.w3.org/1999/XSL/Format</a>><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><xsl:output <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">                method="xml" <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">                indent="yes" /><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">                <!-- <xsl:strip-space elements="*"/> --><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    <xsl:template match="*"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">        <xsl:copy><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">          <xsl:copy-of select="@*"/><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">                                 <xsl:apply-templates/><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">        </xsl:copy><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">    </xsl:template><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">                <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><!-- <xsl:template match="node()|@*"> --><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">     <!-- <xsl:copy> --><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">       <!-- <xsl:apply-templates select="node()|@*"/> --><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">     <!-- </xsl:copy> --><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><!-- </xsl:template> --><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"></xsl:stylesheet><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">This is again much simplified, I’ve omitted the templates that do the actual tweaking.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">Anyway, both versions of the identity transformation produce this (using Saxon):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><?xml version="1.0" encoding="UTF-8"?><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">   <body><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">      <p>Bla Bla Bla</p><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">      </span><p><o:p></o:p></p>
<p class="MsoNormal">         <underline><o:p></o:p></p>
<p class="MsoNormal">            <italic>Bla</italic><o:p></o:p></p>
<p class="MsoNormal">         </underline>, Bla Bla.</p><o:p></o:p></p>
<p class="MsoNormal">   <span lang="FR-CH"></body><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"></article><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">%%%%%%%%%%%%%%%%%%%%%%%<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">I can get rid off all whitespace with indent="no", but that produces a rather unreadable file.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH">xsl:strip-space has had no effect.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="FR-CH"><o:p> </o:p></span></p>
<p class="MsoNormal">Maybe someone knows a solution how to improve that step? <span lang="FR-CH">
Is there a way to convince an xslt-processor not to introduce the newlines after certain tags? Something like, treat paragraphs as a single unit or so.<o:p></o:p></span></p>
<p class="MsoNormal">Am I missing something?<o:p></o:p></p>
</div>
</body>
</html>