如何检查元素被创建了多少次并创建了 n 次

Posted

技术标签:

【中文标题】如何检查元素被创建了多少次并创建了 n 次【英文标题】:How can I check how many times an element was created and create it n number of times 【发布时间】:2021-12-18 03:27:36 【问题描述】:

我想创建一个元素(参数) n 次。我使用以下方法创建了一个元素“参数”,其中包含来自拆分模板的值。每次递归都会创建元素“参数”。如何检查元素“参数”创建了多少次,如果它小于 n,那么如何在没有值的情况下创建它 n 次。

<xsl:call-template name="Split">
<xsl:with-param name="text" select="Set string &quot;attribute&quot; value &quot;stringValue&quot;" />
</xsl:call-template>

    

<xsl:template name="Split">
<xsl:param name="text" select="''" />

<xsl:variable name="tag"  select="substring-before(substring-after($text, '&quot;'), '&quot;')" />
<xsl:variable name="tail" select="substring-after($text, '&quot;')" />


<xsl:choose>
<xsl:when test="$tag != ''">
<xsl:element name = "Paramter">
<xsl:value-of select = "$tag"/>
</xsl:element>

<!--recursive step start: process the remainder of the string -->
<xsl:call-template name="Split">
<xsl:with-param name="text" select="$tail" />
</xsl:call-template>                
<!--recursive step end: process the remainder of the string -->

</xsl:when>
</xsl:choose>
</xsl:template>

输出(对于 n=9)应如下所示,

<Parameter>attribute</Parameter>
<Parameter>value</Parameter>
<Parameter>StringValue</Parameter>
<Parameter></Parameter>
<Parameter></Parameter>
<Parameter></Parameter>
<Parameter></Parameter>
<Parameter></Parameter>
<Parameter></Parameter>

【问题讨论】:

n=9 来自哪里?我在您的代码中没有看到它。 【参考方案1】:

如果你这样调用模板:

<xsl:call-template name="Split">
    <xsl:with-param name="text" select="'Set string &quot;attribute&quot; value &quot;stringValue&quot;'" />
    <xsl:with-param name="n" select="9" />
</xsl:call-template>

然后调整它:

<xsl:template name="Split">
    <xsl:param name="text"/>
    <xsl:param name="n"/>
    <xsl:if test="$n > 0">
        <Parameter>
            <xsl:value-of select="substring-before(substring-after($text, '&quot;'), '&quot;')" />
        </Parameter>
        <!--recursive call -->
        <xsl:call-template name="Split">
            <xsl:with-param name="text" select="substring-after($text, '&quot;')" />
            <xsl:with-param name="n" select="$n - 1" />
        </xsl:call-template>        
    </xsl:if>
</xsl:template>

那么结果将是:

<Parameter>attribute</Parameter>
<Parameter> value </Parameter>
<Parameter>stringValue</Parameter>
<Parameter/>
<Parameter/>
<Parameter/>
<Parameter/>
<Parameter/>
<Parameter/>

请注意,这将在 9 次迭代后退出。如果字符串有超过 9 个标记,则输出中只会出现前 9 个。

【讨论】:

成功了。最热烈的感谢迈克尔!感谢您的支持..

以上是关于如何检查元素被创建了多少次并创建了 n 次的主要内容,如果未能解决你的问题,请参考以下文章

如何检查一个元素在列表中存在多少次[重复]

如何检查在 YourKit 中记录对象分配期间创建了多少个类的实例?

铲斗分类分析(我检查铲斗是否为空的次数)

如何检查递归步骤的最后一个数并为小于 n 的递归步骤创建一个空元素?

有效地检查一个元素是不是在列表中至少出现 n 次

postgresql无法创建触发器