[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Ungready Flag on Regex

Subject: Re: Ungready Flag on Regex
From: "Christophe Marchand cmarchand@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 23 Oct 2020 08:03:14 -0000
Re:  Ungready Flag on Regex
First, I've try to change all xsl:non-matching-substring TVT with 
xsl:sequence, and that was worst.

Then, I've changed only pt:replaceTextDollar xsl:non-matcing-substring 
TVT to a xsl:sequence, without success.

The problem was my test was not correctly written. I now have written 
all test cases, testing direct calls, nested calls, and so on. Thanks a 
lot, it now works.

@Martin : I apologize for being too quick, and not precise when applying 
your suggestion ; it was late, and the curfew news had a bad effect on me.

@Gerrit, nesting these markups have real use cases. For example, in a 
GIT course, if I want to explain the bisect's steps, I'll write someting 
like :

$ git bisect *start*
$ git bisect *bad*
$ git bisect *good*905d48bb
$ git bisect *run*run-xspec.sh
...
$ git bisect *reset*

So a $$\$ git bisect **start**$$ ...

Or, if I explain the merge-request process, I want to highlight the URL 
return by the server :

$ *git push origin issues/3*
C	numC)ration des objets: 37, fait.
DC)compte des objets: 100% (37/37), fait.
Compression par delta en utilisant jusqu'C  4 fils d'exC)cution
Compression des objets: 100% (11/11), fait.
C	criture des objets: 100% (20/20), 3.21 Kio | 1.60 Mio/s, fait.
Total 20 (delta 5), rC)utilisC)s 0 (delta 0), rC)utilisC)s du pack 0
remote:
remote: To create a merge request for issues/3, visit:
remote: 
https://gitlab.oxiane.org/formation/tools/oxslides-java/-/merge_requests/new?merge_request%5Bsource_branch%5D=issues%2F3
remote:
To https://gitlab.oxiane.org/formation/tools/oxslides-java.git
 B * [new branch]B B B B B  issues/3 -> issues/3

I'll probably never have a code or a bold nested inside a link, but maybe...

Be safe,
Christophe
**


Le 23/10/2020 C  03:01, Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx 
a C)critB :
> Christophe,
>
> Have you tried Martin's solution?
>
> It solves the issue and it doesn't create atomic values instead of 
> text nodes.
>
> You need to see that you've been smashing the results of the inner 
> function invocations to text nodes, no matter whether elements have 
> been created by these functions in the first place.
>
> Martin hasn't changed xsl:non-matching-substring in the innermost 
> function pt:replaceTextArobase() so it still produces a text node. 
> xsl:matching-substring in pt:replaceTextArobase() is unchanged. It 
> creates a text:span element with a text node in it.
>
> Previously, whatever came out of pt:replaceTextArobase() was cast to a 
> text node by the text value template in pt:replaceTextDollar().
> The use of xsl:sequence instead of the text value template just makes 
> sure that whatever pt:replaceTextArobase() returned will be returned 
> in the xsl:non-matching substring branch. If it is a text:span 
> element, the result will be a text:span element, if it is a text node, 
> the result will also be a text node. No casting to atomic values occurs.
>
> Maybe you picture xsl:sequence as doing some reverse smashing 
> operation: While xsl:value-of smashes atomic values to text nodes, you 
> might think that xsl:sequence smashes text nodes to atomic values. It 
> does not.
>
> Gerrit
>
> P.S.: Looking forward to the future requirement that the ** $$ @@ 
> pseudo markup should be able to nest.
>
>
> On 23.10.2020 00:50, Christophe Marchand cmarchand@xxxxxxxxxx wrote:
>> That's not the problem. Changing to <xsl:sequence .../> is worse, it 
>> creates some pseudo-atomic-values instead of text() nodes.
>>
>> Christophe
>>
>> Le 22/10/2020 C  23:48, Martin Honnen martin.honnen@xxxxxx a C)critB :
>>> On 22.10.2020 23:14, Christophe Marchand cmarchand@xxxxxxxxxx wrote:
>>>> For sure, regex are strange to me, even if I think they are really 
>>>> usefull.
>>>>
>>>> So, when a regex king give me the right regex to do exactly what I 
>>>> want,
>>>> I take this regex, and I adapt it to other similar use-cases.
>>>>
>>>> My first problem was with comments, and I've adapted it to other 
>>>> kind of
>>>> markers :
>>>>
>>>> **bold**
>>>> $$code$$
>>>> @@link@@
>>>>
>>>> The first two are Ok, but I can not make it run for the third case.
>>>>
>>>> I join the XSL, a XSpec file, I have one scenario that fails. If 
>>>> someone
>>>> could :
>>>>
>>>> B 1. give me the solution
>>>> B 2. explain me why it was failing
>>>> B 3. explain me why the solution works
>>>>
>>>> it would be really a good thing.
>>>>
>>>> In France, we now have a curfew at 9pm. There a lot of beer that 
>>>> can not
>>>> be sold ; i may have a barrel for the guy who help me !
>>>>
>>>> Best regards,
>>>> Christophe
>>>>
>>>> Le 08/10/2020 C  16:54, Imsieke, Gerrit, le-tex 
>>>> gerrit.imsieke@xxxxxxxxx
>>>> a C)critB :
>>>>>
>>>>>
>>>>> On 08.10.2020 16:26, Liam R. E. Quin liam@xxxxxxxxxxxxxxxx wrote:
>>>>>> You want [^*]*?
>>>>>
>>>>> Thinking of the brilliant potential for misunderstanding that this
>>>>> answer entails.
>>>>>
>>>>> Christophe: I don't understand why you are asking me whether I want
>>>>> [^*]*.
>>>>>
>>>>> Jokes aside, I think you need the non-greedy question mark modifier,
>>>>> but not on [^*]*. You use it to make .* non-greedy. Otherwise it will
>>>>> stop at the first '*' that it encounters.
>>>>>
>>>>> This works:
>>>>>
>>>>> <xsl:template name="xsl:initial-template">
>>>>> B  <doc>
>>>>> B B B  <xsl:analyze-string
>>>>> B B B B B  select="'Comments are delimited by **/* */** or prefixed by
>>>>> **//**'"
>>>>> B B B B B  regex="\*\*(.*?)\*\*">
>>>>> B B B B B  <xsl:matching-substring>
>>>>> B B B B B B B  <b>
>>>>> B B B B B B B B B  <xsl:value-of select="regex-group(1)"/>
>>>>> B B B B B B B  </b>
>>>>> B B B B B  </xsl:matching-substring>
>>>>> B B B B B  <xsl:non-matching-substring>
>>>>> B B B B B B B  <xsl:value-of select="."/>
>>>>> B B B B B  </xsl:non-matching-substring>
>>>>> B B B  </xsl:analyze-string>
>>>>> B  </doc>
>>>>> </xsl:template>
>>>>>
>>>
>>> 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
>>> B  <xsl:non-matching-substring>
>>> B B B  <xsl:sequence select="pt:replaceTextArobase(.)"/>
>>> B  </xsl:non-matching-substring>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.