XSLT を使用してヒープ ソート アルゴリズムを記述しようとしていますが、トークン化された値を格納するために使用される変数の値を交換するのに苦労しています。値を比較するためのメソッド heapify を作成し、大きい方の値を現在のインデックスにスワップします。親リストの値を交換するように指示してください。
<xsl:template match="/">
<xsl:variable name="tokenizedSample" select="tokenize(.,' ')">
</xsl:variable>
<!--<xsl:value-of select="."/>-->
<xsl:call-template name="BuildHeap">
<xsl:with-param name="intList" select="$tokenizedSample"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="BuildHeap">
<xsl:param name="intList"/>
<xsl:for-each select="$intList">
<xsl:call-template name="Heapify">
<xsl:with-param name="newintList" select="$intList"/>
<xsl:with-param name="index" select="position()"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="Heapify">
<xsl:param name="newintList"/>
<xsl:param name="index"/>
<xsl:variable name="stringval">
<xsl:text></xsl:text>
</xsl:variable>
<xsl:variable name="vIndex">
<xsl:number value="$index" />
</xsl:variable>
<xsl:variable name="stringval" select="concat(($stringval),'is')"/>
<xsl:if test="$newintList[$vIndex*2] > $newintList[$vIndex*1] and $newintList[$vIndex*2] > $newintList[($vIndex*2)+1] ">
<!—swap the values of ith position with 2ith position-->
<xsl:for-each select="$newintList">
<xsl:if test="position()=$vIndex">
<xsl:value-of select="$newintList[$vIndex*2]"/>
<xsl:value-of select="$stringval"/>
<xsl:variable name="stringval" select="concat(($stringval),'is',$newintList[$vIndex*2])"/>
<xsl:value-of select="$stringval"/>
</xsl:if>
<xsl:if test="position()=($vIndex*2)">
<xsl:value-of select="$stringval"/>
<xsl:variable name="stringval" select="concat(($stringval),'is')"/>
<xsl:value-of select="$stringval"/>
<xsl:variable name="stringval" select="concat(($stringval),'is',$newintList[$vIndex*1])"/>
</xsl:if>
</xsl:for-each>
<xsl:value-of select="$stringval"/>
</xsl:if>
<xsl:if test="$newintList[($vIndex*2)+1] > $newintList[$vIndex*1] and $newintList[($vIndex*2)+1] > $newintList[$vIndex*2] ">
<!—swap the values of ith position with 2i+1th position-->
</xsl:if>
</xsl:template>