diff options
Diffstat (limited to 'test/samples/w3c/confXPath.xsl')
-rw-r--r-- | test/samples/w3c/confXPath.xsl | 630 |
1 files changed, 0 insertions, 630 deletions
diff --git a/test/samples/w3c/confXPath.xsl b/test/samples/w3c/confXPath.xsl deleted file mode 100644 index 514752a..0000000 --- a/test/samples/w3c/confXPath.xsl +++ /dev/null @@ -1,630 +0,0 @@ -<?xml version="1.0"?> -<!-- Copyright 1998-2003 W3C (MIT, ERCIM, Keio), All Rights Reserved. See http://www.w3.org/Consortium/Legal/. --> -<xsl:stylesheet - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:conf="http://www.w3.org/2005/scxml-conformance" - version="2.0"> - - - - -<!-- Copy everything that doesn't match other rules --> -<xsl:template match="/ | @* | node()"> - <xsl:copy> - <xsl:apply-templates select="@* | node()"/> - </xsl:copy> -</xsl:template> - -<!-- Success criteria --> - -<xsl:template match="//@conf:targetpass"> - <xsl:attribute name="target">pass</xsl:attribute> -</xsl:template> - -<xsl:template match="conf:pass"> - <final xmlns="http://www.w3.org/2005/07/scxml" id="pass"> - <onentry> - <log label="Outcome" expr="'pass'"/> - </onentry> - </final> -</xsl:template> - -<!-- Failure criteria --> - -<xsl:template match="//@conf:targetfail"> - <xsl:attribute name="target">fail</xsl:attribute> -</xsl:template> - -<xsl:template match="conf:fail"> - <final xmlns="http://www.w3.org/2005/07/scxml" id="fail"> - <onentry> - <log label="Outcome" expr="'fail'"/> - </onentry> -</final> -</xsl:template> - -<!-- datamodel --> -<xsl:template match="//@conf:datamodel"> - <xsl:attribute name="datamodel">xpath</xsl:attribute> -</xsl:template> - - -<!-- creates id for <data> element, etc. --> -<xsl:template match="//@conf:id"> - <xsl:attribute name="id">Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - - -<!-- creates name for <param>, etc. --> -<xsl:template match="//@conf:name"> - <xsl:attribute name="name">Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - - -<!-- creates location for <assign>, etc. --> -<xsl:template match="//@conf:location"> - <xsl:attribute name="location">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- uses system var as location for <assign>, etc. --> -<xsl:template match="//@conf:systemVarLocation"> - <xsl:attribute name="location">$<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:expr"> - <xsl:attribute name="expr"><xsl:value-of select="." /></xsl:attribute> -</xsl:template> - - -<!-- expr is quoted --> -<xsl:template match="//@conf:quoteExpr"> - <xsl:attribute name="expr">'<xsl:value-of select="." />'</xsl:attribute> -</xsl:template> - -<!-- targetexpr is the corresponding ID --> -<xsl:template match="//@conf:targetVar"> - <xsl:attribute name="targetexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- an expr that yields the text child of a variable --> -<xsl:template match="//@conf:varExpr"> - <xsl:attribute name="expr">$Var<xsl:value-of select="." />/text()</xsl:attribute> -</xsl:template> - - - -<!-- an expr that yields the children of a variable --> -<xsl:template match="//@conf:varChildExpr"> - <xsl:attribute name="expr">$Var<xsl:value-of select="." />/*</xsl:attribute> -</xsl:template> - -<!-- an expr that is the value of a system variable --> -<xsl:template match="//@conf:systemVarExpr"> - <xsl:attribute name="expr">$<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - - -<!-- an expr that is the value of a non-existent substructure of a variable --> -<xsl:template match="//@conf:varNonexistentStruct"> - <xsl:attribute name="expr">$Var<xsl:value-of select="." />.bar</xsl:attribute> -</xsl:template> - - -<!-- this should return a value that cannot be assigned to a var. --> -<xsl:template match="//@conf:illegalExpr"> - <xsl:attribute name="expr">!1</xsl:attribute> -</xsl:template> - -<!-- this should return a simple scxml script that exits as soon as it's invoked. -We assume that this script won't undergo schema validation, so we keep it concise --> -<xsl:template match="//@conf:scxmlExpr"> - <xsl:attribute name="expr">string('<scxml><final/></scxml>')</xsl:attribute> -</xsl:template> - - -<!-- this should add 1 to the value of the specified variable --> -<xsl:template match="conf:incrementID"> - <assign xmlns="http://www.w3.org/2005/07/scxml"> - <xsl:attribute name="location">$Var<xsl:value-of select="@id"/></xsl:attribute> - <xsl:attribute name="expr">$Var<xsl:value-of select="@id"/> + 1</xsl:attribute> - </assign> - </xsl:template> - - <!-- this should concatenate the value of the id2 to id1 and assign the result to id1 --> -<xsl:template match="conf:concatVars"> - <assign xmlns="http://www.w3.org/2005/07/scxml"> - <xsl:attribute name="location">$Var<xsl:value-of select="@id1"/></xsl:attribute> - <xsl:attribute name="expr">concat($Var<xsl:value-of select="@id1"/>, $Var<xsl:value-of select="@id2"/>)</xsl:attribute> - </assign> - </xsl:template> - -<!-- assigns the sum of the values of two vars to thefirst var--> -<xsl:template match="//conf:sumVars"> - <assign xmlns="http://www.w3.org/2005/07/scxml"> -<xsl:attribute name="location">$Var<xsl:value-of select="@id1"/></xsl:attribute> -<xsl:attribute name="expr">$Var<xsl:value-of select="@id1"/>/text() + $Var<xsl:value-of select="@id2"/>/text()</xsl:attribute> - </assign> - </xsl:template> - -<!-- foreach --> -<!-- this should produce literal representation of an array containing 1 2 3 in that order --> -<xsl:template match="//conf:array123"> -<node xmlns="">1</node><node xmlns="">2</node><node xmlns="">3</node> -</xsl:template> - -<!-- this uses the children of the indicated variable as the 'array' attribute --> -<xsl:template match="//@conf:arrayVar"> - <xsl:attribute name="array">$Var<xsl:value-of select="."/>/*</xsl:attribute> -</xsl:template> - -<!-- this uses the text child of the indicated variable as the 'array' attribute --> -<xsl:template match="//@conf:arrayTextVar"> - <xsl:attribute name="array">$Var<xsl:value-of select="."/>/text()</xsl:attribute> -</xsl:template> - -<!-- this should yield an expr that evaluates to something that is not a valid array --> -<xsl:template match="//@conf:illegalArray"> - <xsl:attribute name="expr">(</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:item"> - <xsl:attribute name="item">Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- this should return something that cannot be an variable name --> -<xsl:template match="//@conf:illegalItem"> - <xsl:attribute name="item">..</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:index"> - <xsl:attribute name="index">Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- this should add items onto the end of the specified array, which -is of the same type as array123 --> -<xsl:template match="conf:extendArray"> - <assign xmlns="http://www.w3.org/2005/07/scxml"> - <xsl:attribute name="type">lastchild</xsl:attribute> - <xsl:attribute name="location">$Var<xsl:value-of select="@id"/></xsl:attribute> - <xsl:attribute name="expr">$Var<xsl:value-of select="@id"/>/*</xsl:attribute> - </assign> -</xsl:template> - -<xsl:template match="//conf:illegalContent"> - <content xmlns="http://www.w3.org/2005/07/scxml"> xyz </content> -</xsl:template> - -<!-- a content element whose value is the string 'foo' --> -<xsl:template match="//conf:contentFoo"> - <content xmlns="http://www.w3.org/2005/07/scxml">foo</content> -</xsl:template> - - - -<!-- this returns something that is guaranteed not to be the ID of the current session --> -<xsl:template match="//@conf:invalidSessionID"> - <xsl:attribute name="expr">27</xsl:attribute> -</xsl:template> - -<!-- this returns something that is guaranteed not to be a valid event I/O processor --> -<xsl:template match="//@conf:invalidSendType"> - <xsl:attribute name="type">27</xsl:attribute> -</xsl:template> - -<!-- same value in an expr --> -<xsl:template match="//@conf:invalidSendTypeExpr"> - <xsl:attribute name="expr">27</xsl:attribute> -</xsl:template> - -<!-- templates for the expr versions of the send attributes --> - -<!-- eventexpr takes the value of the specified variable --> -<xsl:template match="//@conf:eventExpr"> - <xsl:attribute name="eventexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- targetexpr takes the value of the specified variable --> -<xsl:template match="//@conf:targetExpr"> - <xsl:attribute name="targetexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- typeexpr takes the value of the specified variable --> -<xsl:template match="//@conf:typeExpr"> - <xsl:attribute name="typeexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- delayexpr takes the value of the specified variable --> -<xsl:template match="//@conf:delayExpr"> - <xsl:attribute name="delayexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- the specified variable is used as idlocation --> -<xsl:template match="//@conf:idlocation"> - <xsl:attribute name="idlocation">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- the specified variable is used as sendidexpr --> -<xsl:template match="//@conf:sendIDExpr"> - <xsl:attribute name="sendidexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- the specified variable is used as srcexpr --> -<xsl:template match="//@conf:srcExpr"> - <xsl:attribute name="srcexpr">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- the specified variable is used as namelist --> -<xsl:template match="//@conf:namelist"> - <xsl:attribute name="namelist">$Var<xsl:value-of select="." /></xsl:attribute> -</xsl:template> - -<!-- exprs that return the value of the event fields --> - -<xsl:template match="//@conf:eventName"> - <xsl:attribute name="expr">$_event/name/text()</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:eventType"> - <xsl:attribute name="expr">$_event/type/text()</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:eventSendid"> - <xsl:attribute name="expr">$_event/sendid/text()</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:eventField"> - <xsl:attribute name="expr">$_event/<xsl:value-of select="."/>/text()</xsl:attribute> -</xsl:template> - -<!-- returns the raw message structure as a string --> -<xsl:template match="//@conf:eventRaw"> - <xsl:attribute name="expr">$_event/raw/text()</xsl:attribute> -</xsl:template> - -<!-- returns the value of the specified item in _event.data --> -<xsl:template match="//@conf:eventDataFieldValue"> - <xsl:attribute name="expr">$_event/data/data[@id='<xsl:value-of select="."/>']/text()</xsl:attribute> -</xsl:template> - -<!-- returns the value of a KVP specified by <param> from _event.data --> -<xsl:template match="//@conf:eventDataParamValue"> - <xsl:attribute name="expr">$_event/data/data[@id='<xsl:value-of select="."/>']/text()</xsl:attribute> -</xsl:template> - -<!-- returns the value of a KVP specified by Namelist from _event.data --> -<xsl:template match="//@conf:eventDataNamelistValue"> - <xsl:attribute name="expr">$_event/data/data[@id='<xsl:value-of select="."/>']/data/text()</xsl:attribute> -</xsl:template> - -<!-- returns the location of the scxml event i/o processor --> -<xsl:template match="//@conf:scxmlEventIOLocation"> - <xsl:attribute name="expr">$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#SCXMLProcessor"]/location/text()</xsl:attribute> -</xsl:template> - -<!-- to test the BasicHTTP Event I/O processor --> - - - -<!-- return an expression evaluating to the basic http access URI --> -<xsl:template match="//@conf:basicHTTPAccessURI"> - <xsl:attribute name="expr">_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()</xsl:attribute> -</xsl:template> - -<!-- return a targetexpr evaluating to the basic http access URI --> -<xsl:template match="//@conf:basicHTTPAccessURITarget"> - <xsl:attribute name="targetexpr">$_ioprocessors/processor[@name="http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"]/location/text()</xsl:attribute> -</xsl:template> - -<!-- generate an cond that evaluates to true if POST was used to send the message --> -<xsl:template match="//@conf:methodIsPost"> - <xsl:attribute name="cond">contains($_event/raw, 'POST')</xsl:attribute> -</xsl:template> - -<!-- generate a namelist attribute containing all the ids listed in the attribute's value --> -<xsl:template match="//@conf:multipleNamelist"> - <xsl:attribute name="namelist"> - <xsl:analyze-string select="." regex="([0-9]+)"> -<xsl:matching-substring>Var<xsl:value-of select="regex-group(1)"/><xsl:text>
</xsl:text></xsl:matching-substring> -</xsl:analyze-string> -</xsl:attribute> -</xsl:template> - -<!-- generate a cond that evaluates to true if the event is external --> -<xsl:template match="//@conf:eventIsExternal"> - <xsl:attribute name="cond">_event.type == 'external'</xsl:attribute> -</xsl:template> - - - -<!-- the following templates produce an expr that extracts the relevant item from _event.raw --> -<!-- returns true if _event/raw contains the var with the specified value --> -<xsl:template match="//@conf:eventIdParamHasValue"> - <xsl:attribute name="cond"><xsl:analyze-string select="." regex="([0-9]+)(\s+)(\S+)"> -<xsl:matching-substring>contains($_event/raw, 'Var<xsl:value-of select="regex-group(1)"/>=<xsl:value-of select="regex-group(3)"/>')</xsl:matching-substring></xsl:analyze-string></xsl:attribute> -</xsl:template> - -<!-- returns true if _event/raw contains the param with the specified value --> -<xsl:template match="//@conf:eventNamedParamHasValue"> - <xsl:attribute name="cond"><xsl:analyze-string select="." regex="([0-9]+)(\s+)(\S+)"> -<xsl:matching-substring>contains($_event/raw, '<xsl:value-of select="regex-group(1)"/>=<xsl:value-of select="regex-group(3)"/>')</xsl:matching-substring></xsl:analyze-string></xsl:attribute> -</xsl:template> - -<!-- Should return true if the body of _event.raw equals the specified value. This is too weak because -it tests only that the specified string is in _event.raw, not that it is the whole body. I don't -know if we can make this strong in XPath 1.0 --> -<xsl:template match="//@conf:messageBodyEquals"> - <xsl:attribute name="cond">contains($_event/raw, <xsl:value-of select="."/>)</xsl:attribute> -</xsl:template> - - -<!-- the following templates produce an expr that extracts the relevant item from _event.raw --> -<xsl:template match="//@conf:getNamedParamVal"> - <xsl:attribute name="expr">re.search('<xsl:value-of select="."/>=(\S+)$', _event.raw).groups()[0]</xsl:attribute> -</xsl:template> - -<!-- if input is 1, find param Var1, etc. --> -<xsl:template match="//@conf:getIDParamVal"> - <xsl:attribute name="expr">substring-before(substring-after('Var<xsl:value-of select="."/>=', $_event/raw), '&')</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:getNthParamName"> - <xsl:attribute name="expr">re.search('\n\n(.*)', txt).group(1).split('&')[<xsl:value-of select="."/>].split('=')[0]</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:getNthParamVal"> - <xsl:attribute name="expr">re.search('\n\n(.*)', txt).group(1).split('&')[<xsl:value-of select="."/>].split('=')[1]</xsl:attribute> -</xsl:template> - -<!-- transition conditions --> -<!-- test that given var has specific value. The value expr is evaluated --> -<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:text>/text() </xsl:text> - <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> - -<!-- the value is quoted --> -<xsl:template match="//@conf:idQuoteVal"> - <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> - -<!-- test on the value of two vars --> -<xsl:template match="//@conf:compareIDVal"> - <xsl:attribute name="cond"> - <xsl:analyze-string select="." - regex="([0-9]+)([=<>]=?)([0-9+])"> - <xsl:matching-substring>$Var<xsl:value-of select="regex-group(1)"/><xsl:text>/text() </xsl:text> - <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>$Var<xsl:value-of select="regex-group(3)"/><xsl:text>/text() </xsl:text> - </xsl:matching-substring> - </xsl:analyze-string> - </xsl:attribute> -</xsl:template> - -<!-- test that given var whose value was passed in via namelist has specific value. The value expr is evaluated --> -<xsl:template match="//@conf:namelistIdVal"> - <xsl:attribute name="cond"> - <xsl:analyze-string select="." - regex="([0-9]+)([=<>]=?)(.*)"> - <xsl:matching-substring>$Var<xsl:value-of select="regex-group(1)"/><xsl:text>/data/text() </xsl:text> - <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> - -<!-- return true if variable matches value of system var (var number is first arg, system var name -is the second argument --> -<xsl:template match="//@conf:idSystemVarVal"> - <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> - -<!-- test that the event's name fieldhas the value specified --> -<xsl:template match="//@conf:eventNameVal"> - <xsl:attribute name="cond">$_event/name = <xsl:text>'</xsl:text><xsl:value-of select="."/><xsl:text>'</xsl:text> - </xsl:attribute> - -</xsl:template> -<!-- returns true if all the required fields of _event are bound --> -<xsl:template match="//@conf:eventFieldsAreBound"> - <xsl:attribute name="cond">$_event/name and $_event/type and $_event/sendid and $_event/origin and $_event/origintype and $_event/invokeid and $_event/data</xsl:attribute> -</xsl:template> - -<!-- returns true if machine is in the state specified --> - -<xsl:template match="//@conf:inState"> - <xsl:attribute name="cond">In('<xsl:value-of select="."/>')</xsl:attribute> -</xsl:template> - -<!-- return true if specified var has been created but has no value --> -<xsl:template match="//@conf:unboundVar"> - <xsl:attribute name="cond">$Var<xsl:value-of select="." /> and not($Var<xsl:value-of select="." />/text()) and not($Var<xsl:value-of select="." />/*)</xsl:attribute> -</xsl:template> - -<!-- return true if the specified key in event.data has the specified value --> -<xsl:template match="//@conf:eventvarVal"> - <xsl:attribute name="cond"> - <xsl:analyze-string select="." - regex="([0-9]+)([=<>]=?)(.*)"> - <xsl:matching-substring>$_event/data/data[@id = 'Var<xsl:value-of select="regex-group(1)"/>']/text()<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> - -<!-- return true if event.data field matches the specified value --> - -<xsl:template match="//@conf:eventdataVal"> - <xsl:attribute name="cond">$_event/data = '<xsl:value-of select="."/>'</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:emptyEventData"> - <xsl:attribute name="cond">not($_event/data/*)</xsl:attribute> -</xsl:template> - -<!-- return true if the _name system var has the specified quoted value --> - -<xsl:template match="//@conf:nameVarVal"> - <xsl:attribute name="cond">$_name/text() = '<xsl:value-of select="."/>'</xsl:attribute> -</xsl:template> - -<!-- returns true if _event.data contains the specified item --> -<xsl:template match="//@conf:eventDataHasField"> - <xsl:attribute name="cond">$_event/data/data[@id=<xsl:value-of select="."/>]</xsl:attribute> -</xsl:template> - -<!-- return true if first var's value is a prefix of the second var's value. Input has form "n m" where n and m are ints.--> -<xsl:template match="//@conf:varPrefix"> - <xsl:attribute name="cond"> - <xsl:analyze-string select="." - regex="(\w+)(\W)(\w+)"> - <xsl:matching-substring> -contains($Var<xsl:value-of select="regex-group(3)"/>, $Var<xsl:value-of select="regex-group(1)"/><xsl:text>)</xsl:text> - </xsl:matching-substring> - </xsl:analyze-string> - </xsl:attribute> -</xsl:template> - -<!-- true if id has a value --> -<xsl:template match="//@conf:isBound"> - <xsl:attribute name="cond">$Var<xsl:value-of select="." />/* or $Var<xsl:value-of select="." />/text()</xsl:attribute> -</xsl:template> - -<!-- true if id does not have an atomic value --> -<xsl:template match="//@conf:noValue"> - <xsl:attribute name="cond">not($Var<xsl:value-of select="." />/text() or $Var<xsl:value-of select="." />/*)</xsl:attribute> -</xsl:template> - -<!-- true if system var has a value --> -<xsl:template match="//@conf:systemVarIsBound"> - <xsl:attribute name="cond">$<xsl:value-of select="." />/text()</xsl:attribute> -</xsl:template> - -<!-- returns true if specified field of _event has no value --> -<xsl:template match="//@conf:eventFieldHasNoValue"> - <xsl:attribute name="cond">not(string($_event/<xsl:value-of select="." />))</xsl:attribute> -</xsl:template> - -<!-- returns a value that cannot be converted into a Boolean --> -<xsl:template match="//@conf:nonBoolean"> - <xsl:attribute name="cond">==!*</xsl:attribute> -</xsl:template> - -<!-- always returns true --> -<xsl:template match="//@conf:true"> - <xsl:attribute name="cond">true()</xsl:attribute> -</xsl:template> - -<!-- always returns false --> -<xsl:template match="//@conf:false"> - <xsl:attribute name="cond">0>1</xsl:attribute> -</xsl:template> - - - -<!-- this should return an illegal target for <send> causing a send error to be raised --> -<xsl:template match="//@conf:illegalTarget"> - <xsl:attribute name="target">baz</xsl:attribute> -</xsl:template> - -<!-- this returns an legal, but unreachable, target for <send> causing a send error to be raised --> -<xsl:template match="//@conf:unreachableTarget"> - <xsl:attribute name="target">#_scxml_foo</xsl:attribute> -</xsl:template> - -<!-- true if the two vars/ids have the same value --> -<xsl:template match="//@conf:VarEqVar"> - <xsl:attribute name="cond"> - <xsl:analyze-string select="." - regex="([0-9]+)(\W+)([0-9]+)"> - <xsl:matching-substring>$Var<xsl:value-of select="regex-group(1)"/>/text()=$Var<xsl:value-of select="regex-group(3)"/>/text()</xsl:matching-substring> - </xsl:analyze-string> - </xsl:attribute> -</xsl:template> - -<!-- true if the two vars/ids have the same value, which is a structure, not atomic --> -<xsl:template match="//@conf:VarEqVarStruct"> - <xsl:attribute name="cond"> - <xsl:analyze-string select="." - regex="([0-9]+)(\W+)([0-9]+)"> - <xsl:matching-substring>$Var<xsl:value-of select="regex-group(1)"/>=$Var<xsl:value-of select="regex-group(3)"/></xsl:matching-substring> - </xsl:analyze-string> - </xsl:attribute> -</xsl:template> - -<!-- true if _event was delivered on the specified i/o processor --> -<xsl:template match="//@conf:originTypeEq"> - <xsl:attribute name="cond">$_event/origintype/text() = '<xsl:value-of select="."/>'</xsl:attribute> -</xsl:template> - - -<!-- scripting is not supported in Xpath, so not sure what to put here. Implementers -should know not to bother to run these tests--> - -<xsl:template match="conf:script"> - <script xmlns="http://www.w3.org/2005/07/scxml"> - </script> -</xsl:template> - - -<xsl:template match="//@conf:scriptGoodSrc"> - <xsl:attribute name="src">D:\W3C\SCXMLTests\test300.py</xsl:attribute> -</xsl:template> - -<xsl:template match="//@conf:scriptBadSrc"> - <xsl:attribute name="src">D:\foo</xsl:attribute> -</xsl:template> - -<!-- sends an event back to the sender of the current event --> -<xsl:template match="conf:sendToSender"> - <send xmlns="http://www.w3.org/2005/07/scxml"> - <xsl:attribute name="event"><xsl:value-of select="@name" /></xsl:attribute> - <xsl:attribute name="targetexpr">$_event/origin/text()</xsl:attribute> - <xsl:attribute name="typeexpr">$_event/origintype/text()</xsl:attribute> - </send> -</xsl:template> - -</xsl:stylesheet>
\ No newline at end of file |