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>
|