我被困住了。我想要做的是为我的单元格中的属性分配一个数字。我通过调用模板并将参数传递给我调用的模板来做到这一点。
<xsl:call-template name="RowIdInitializer" >
<xsl:with-param name="i">1</xsl:with-param>
</xsl:call-template>
然后我使用该参数并将其作为参数传递给应用模板
<xsl:template name="RowIdInitializer">
<xsl:param name="i" />
<xsl:apply-templates select="Data" mode="table" >
<xsl:with-param name="iThis" select="$i"/>
</xsl:apply-templates>
<xsl:if test="@Exsist">
<xsl:call-template name="RowIdInitializer">
<xsl:with-param name="i" select="$i + 1">
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
请注意,然后我从自身内部调用模板(递归),并将参数的递增值传递给模板,就像我调用自身一样。试图模仿一个 for 循环,其中每个数据模式都拥有一个属性 Exist (这可能是以后的问题,因为对 RowIdInitializer 的第一次调用是从一个级别向上调用的,它可能在 Row 节点中查找 Exist 属性,
<xsl:template match="Row">
..... some other stuff
<xsl:call-template name="RowIdInitializer" >
<xsl:with-param name="i">1</xsl:with-param>
</xsl:call-template>
</xsl:template>
但这不仅仅是指出的问题)。传递给应用模板的参数是分配给属性数据滑动页面的位置。
<xsl:template select="Data" mode="table" >
<xsl:param name="iThis" />
<td class="dataTableCell" onblur="cellEvent(event)" data-SwipePage ="$iThis">
..otherstuff...
</td>
这就是问题所在。该值没有被传递,并且字符串文字被分配为值。这样,当我在浏览器的开发控制台中检查 HTML 时,我会得到一个属性,该属性表示data-SwipePage ="$iThis"
为每个作为行子节点的数据节点创建的所有 td 元素。我也试过传入一个像这样的第一名
<xsl:apply-templates select="Data" mode="table" >
<xsl:with-param name="iThis" select="1"/>
</xsl:apply-templates>
和
<xsl:apply-templates select="Data" mode="table" >
<xsl:with-param name="iThis">1 </xsl:with-pam>
</xsl:apply-templates>
我也尝试使用破坏所有 <xsl:with-param
这样的参数
<xsl:with-param name="iThis">
<xsl:value-of select="$i"/>
</xsl:with-param>
并且仍在使用文字字符串值。