0

以下是我的代码,我想在其中提供隐藏变量并为其分配值以供以后访问。

 <xsl:for-each select="//Root/Record">
     <xsl:if test="(@CIMtrek_accountlist_customer_number != '') ">
     <option style="padding:5px;">
    <xsl:attribute name="class">>
    <xsl:choose>
            <xsl:when test="(position() mod 2) = 0">
            AlternateRowOne
</xsl:when>
<xsl:otherwise>
AlternateRowTwo
</xsl:otherwise>
    </xsl:choose>
            </xsl:attribute>
// here i want to set hidden varialble and assign the value for it
        <xsl:attribute name="value">
                    <xsl:value-of
            select="@CIMtrek_accountlist_customer_number" /></xsl:attribute>
        <xsl:value-select="@CIMtrek_accountlist_customer_number" />
                </option>
                </xsl:if>
                </xsl:for-each>

变量名称将类似于这样

<input type="hidden"
name="hdnDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_Destination_"+i
id="hdnDialogListCtrlPlaceholder_CIMtrek_DailyshipCo_Destination_"+i
 />

where i =0
and i++;

name_1
name_2
name_n

是否可以使用:<FieldRef Name="<FieldInternalName>" Explicit="TRUE"/> 如何在 xsl 中执行此操作

4

2 回答 2

2

我通常通过以下方式实现递归。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:template match="/">
        <xsl:call-template name="recur">
            <xsl:with-param name="max_recursions" select="5"/>
        </xsl:call-template>
    </xsl:template>

    <xsl:template name="recur">
        <xsl:param name="n">0</xsl:param>
        <xsl:param name="max_recursions"/>
        REPEATING UNIT HERE
        <xsl:if test="$max_recursions != $n">
            <xsl:call-template name="recur">
                <xsl:with-param name="n" select="$n + 1"/>
                <xsl:with-param name="max_recursions" select="$max_recursions"/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>

</xsl:stylesheet>

虽然通常不建议这样做,但您通常可以通过构造良好的 XPath 获得更快、更简洁和更易读的代码。

于 2012-12-19T09:01:12.737 回答
1

您正在尝试在 XSLT 中编写过程代码,但这是行不通的。如果您解释您想要执行的转换(输入是什么,输出是什么,以及它们之间的关系如何?),那么我们可以向您展示如何以“XSLT 方式”(即以声明方式)进行。

于 2012-12-18T11:37:11.270 回答