Re: Ungready Flag on Regex

"Martin Honnen [email protected]" <[email protected]>
Newsgroups gmane.text.xml.xsl.general.mulberrytech
Organization Liberty Development
Message-ID <[email protected]>
On 22.10.2020 23:48, Martin Honnen [email protected] wrote:

> I think the issue is your use of text value templates
>
> <xsl:non-matching-substring>{pt:replaceTextArobase(.)}</xsl:non-matching-substring>
>
> that strips any elements; you need to use
>    <xsl:non-matching-substring>
>      <xsl:sequence select="pt:replaceTextArobase(.)"/>
>    </xsl:non-matching-substring>

and so on:

   <xsl:function name="pt:replaceTextMarkers" as="item()+">
     <xsl:param name="s" as="xs:string"/>
     <xsl:analyze-string select="$s" regex="\*\*(.*?)\*\*">
       <xsl:matching-substring><text:span
text:style-name="TB">{pt:replaceTextDollar(substring(.,3,
string-length(.)-4))}</text:span></xsl:matching-substring>
       <xsl:non-matching-substring>
         <xsl:sequence select="pt:replaceTextDollar(.)"/>
       </xsl:non-matching-substring>
     </xsl:analyze-string>
   </xsl:function>

   <xsl:function name="pt:replaceTextDollar" as="item()+">
     <xsl:param name="s" as="xs:string"/>
     <xsl:analyze-string select="$s" regex="\$\$(.*?)\$\$">
       <xsl:matching-substring><text:span
text:style-name="TCode"><xsl:sequence
select="pt:replaceTextArobase(substring(.,3,
string-length(.)-4))"/></text:span></xsl:matching-substring>
       <xsl:non-matching-substring><xsl:sequence
select="pt:replaceTextArobase(.)"/></xsl:non-matching-substring>
     </xsl:analyze-string>
   </xsl:function>

   <xsl:function name="pt:replaceTextArobase" as="item()+">
     <xsl:param name="s" as="xs:string"/>
     <xsl:analyze-string select="$s" regex="@@(.*?)@@">
       <xsl:matching-substring><text:span
text:style-name="TLink"><xsl:sequence select="substring(.,3,
string-length(.)-4)"/></text:span></xsl:matching-substring>
       <xsl:non-matching-substring>{.}</xsl:non-matching-substring>
     </xsl:analyze-string>
   </xsl:function>

   <xsl:function name="pt:unescapeSpecialChars" as="xs:string">
     <xsl:param name="s" as="xs:string"/>
     <xsl:sequence select="$s=>replace('\*', '*', 'q')=>replace('\$',
'$', 'q')=>replace('\@','@', 'q')"/>
   </xsl:function>

All green now in XSpec.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/3329386
or by email: [email protected]
--~--
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.