- From: Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de>
- Date: Fri, 29 Mar 2013 12:56:38 +0000
- To: Jim Barnett <Jim.Barnett@genesyslab.com>
- CC: "VBWG Public (www-voice@w3.org)" <www-voice@w3.org>
Hey there,
it turned out that my libxslt would only support XSLT1.0. I tried with another XSLT implementation and got it working for the most part. The only thing that still look suspicious is in test153.txml:
<if conf:compareIDVal="1<2">
will become
<if cond="Var1/text() <Var2/text() ">
which does not look very ECMAscripty to me. Can someone confirm that the XSLT transformation is correct?
Stefan
On Mar 29, 2013, at 2:24 AM, Jim Barnett <Jim.Barnett@genesyslab.com> wrote:
> Stefan,
> I think it's possible that a change has slipped into your version of test147.txml
>
> I have found two kinds of problems with xslt files. 1) If the .xsl file doesn't have any transformation matching a given conf item, the conf item ends up untransformed in the scxml file (and the interpreter chokes on it or ignores it). However, when a conf item gets transformed into the empty string, it means 2) that the transformation contains a regexp that isn't matching for some reason. Here's the definition of conf:idVal. As you can see it has an <xsl:analyze-string ...> followed by a <xsl:matching-substring...> If the regex matches nothing, then you'll get an empty string in the output (because there's no matching substring). So the first thing I would do is to look at test147.txml to make sure that in idVal="somestring", the 'somestring' expression matches the 'regex'. If any extraneous character has crept in, it could block the match and cause this problem.
>
> <xsl:template match="//@conf:idVal">
> <xsl:attribute name="cond">
> <xsl:analyze-string select="."
> regex="([0-9]+)([=<>]=?)(.*)">
> <xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/>
> <xsl:variable name="op"><xsl:value-of select="regex-group(2)"/></xsl:variable>
> <xsl:choose>
> <xsl:when test="$op='='">==</xsl:when>
> <xsl:otherwise><xsl:value-of select="$op"/></xsl:otherwise>
> </xsl:choose>
> <xsl:value-of select="regex-group(3)"/>
> </xsl:matching-substring>
>
> </xsl:analyze-string>
> </xsl:attribute>
> </xsl:template>
>
> P.S. I am using xerces and running on windows
>
> -----Original Message-----
> From: Stefan Radomski [mailto:radomski@tk.informatik.tu-darmstadt.de]
> Sent: Thursday, March 28, 2013 8:22 PM
> To: Jim Barnett
> Cc: VBWG Public (www-voice@w3.org)
> Subject: Re: SCXML test 147: transition contains empty condition
>
> I'd like to add that xsltproc gives me the same output - it is linked against libxslt.so (version1.1.27 here) as well. So it seems to be an issue with anything that uses libxslt to do the XSLT processing.
>
> Regards
> Stefan
>
> On Mar 29, 2013, at 1:17 AM, Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de>
> wrote:
>
>> Hi Jim,
>>
>> thanks for clarifying this. I am using XML::LibXSLT[1] and I am somewhat confused because the rest is looking good. Could it be a bug in libxslt? Which XSLT implementation are you using to transform the txml files?
>>
>> Best regards
>> Stefan
>>
>> [1]
>> https://github.com/tklab-tud/uscxml/blob/master/test/samples/w3c/conve
>> rt-tests.pl
>>
>> On Mar 28, 2013, at 11:23 PM, Jim Barnett <Jim.Barnett@genesyslab.com> wrote:
>>
>>> Hmm, I'm not sure what the problem is. I get the right result when I
>>> transform 147.txml into the ECMAScript data model using
>>> confECMA.xsl:
>>>
>>> <transition event="bar" cond="Var1==1" target="pass"/> <transition
>>> event="*" target="fail"/>
>>>
>>> In the section on the ECMAScript datamodel, it says that the processor must convert conds to Booleans using ToBoolean. I assume that would yield 'false', but in any case it looks like you're having problems with the XSLT transformation.
>>>
>>> - Jim
>>>
>>> -----Original Message-----
>>> From: Stefan Radomski [mailto:radomski@tk.informatik.tu-darmstadt.de]
>>> Sent: Thursday, March 28, 2013 6:11 PM
>>> To: VBWG Public (www-voice@w3.org)
>>> Subject: SCXML test 147: transition contains empty condition
>>>
>>> Hey there,
>>>
>>> I transformed the SCXML tests with XSLT for ecmascript[1]. As I was stepping through them, I realized that the generated test 147 contains a transition with an empty condition [1], which ought to be true for the test to be passed. Empty strings evaluate to false with my ecmascript implementation, so the test fails.
>>>
>>>> From txml:
>>> <transition event="bar" conf:idVal="1=1" conf:targetpass=""/>
>>>
>>>> From generated SCXML test:
>>> <transition event="bar" cond="" target="pass"/>
>>>
>>> My XSLT knowledge is limited, I used perl's libxslt wrapper XML::LibXSLT and the official stylesheet provided at [3].
>>>
>>> I guess the implied question (assuming the XSLT went fine) is, whether the empty condition really ought to evaluate to true?
>>> Stefan
>>>
>>> [1]
>>> https://github.com/jbeard4/scxml-test-framework/blob/master/test/w3c-
>>> ecma/ [2]
>>> https://github.com/jbeard4/scxml-test-framework/blob/master/test/w3c-
>>> ecma/test147.txml.scxml#L23 [3]
>>> http://www.w3.org/Voice/2013/scxml-irp/
>>>
>>
>>
>
>
Received on Friday, 29 March 2013 12:57:33 UTC