You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jb...@apache.org on 2010/06/12 21:37:58 UTC
svn commit: r954083 -
/commons/sandbox/gsoc/2010/scxml-js/trunk/test/xslt/transformIf.xsl
Author: jbeard
Date: Sat Jun 12 19:37:58 2010
New Revision: 954083
URL: http://svn.apache.org/viewvc?rev=954083&view=rev
Log:
transformIf.xsl works well with the simple executableContent example
Modified:
commons/sandbox/gsoc/2010/scxml-js/trunk/test/xslt/transformIf.xsl
Modified: commons/sandbox/gsoc/2010/scxml-js/trunk/test/xslt/transformIf.xsl
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/trunk/test/xslt/transformIf.xsl?rev=954083&r1=954082&r2=954083&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/trunk/test/xslt/transformIf.xsl (original)
+++ commons/sandbox/gsoc/2010/scxml-js/trunk/test/xslt/transformIf.xsl Sat Jun 12 19:37:58 2010
@@ -13,35 +13,45 @@
</xsl:copy>
</xsl:template>
- <xsl:template match="s:if">
- <xsl:variable name="elseOrElseIfNodes" select="s:elseif | s:else"/>
- <xsl:variable name="firstElseOrElseIfNodes" select="(s:elseif | s:else)[1]"/>
- <xsl:variable name="nodePosition">
- <xsl:choose>
- <xsl:when test="$elseOrElseIfNodes">
- <xsl:value-of select="position($firstElseOrElseIfNodes)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="count(*)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
+ <!--consume-->
+ <!--gets siblings until you hit else or elseif or null-->
+ <xsl:template name="consume">
+ <xsl:param name="currentNode"/>
- <xsl:variable name="test" select="subsequence(1,$nodePosition)"/>
<xsl:message>
- <xsl:value-of select="'----------'"/>
- <xsl:copy-of select="$test"/>
- <xsl:value-of select="'----------'"/>
+ <xsl:text>---start---</xsl:text>
+ <xsl:copy-of select="local-name($currentNode)"/>
+ <xsl:text>---end---</xsl:text>
</xsl:message>
+
+ <xsl:if test="$currentNode and
+ not($currentNode/self::else or $currentNode/self::elseif)">
+
+ <xsl:apply-templates select="$currentNode"/>
+
+ <xsl:call-template name="consume">
+ <xsl:with-param name="currentNode"
+ select="$currentNode/following-sibling::*"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="s:if">
<xsl:copy>
<xsl:apply-templates select="@*"/>
- <!--
+
<c:executableContent>
- <xsl:apply-templates select="subsequence(1,$nodePosition)"/>
+ <xsl:call-template name="consume">
+ <xsl:with-param name="currentNode" select="*[1]"/>
+ </xsl:call-template>
</c:executableContent>
- <xsl:apply-templates select="subsequence($nodePosition + 1,count(*))"/>
- -->
+
+ <xsl:for-each select="s:elseif | s:else">
+ <c:executableContent>
+ <xsl:apply-templates select="./following-sibling::*"/>
+ </c:executableContent>
+ </xsl:for-each>
</xsl:copy>
</xsl:template>