Re: SCXML test 147: transition contains empty condition

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&lt;2">

will become

         <if cond="Var1/text() &lt;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]+)([=&lt;&gt;]=?)(.*)">
> 					<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