开发者

XSL for each loop selecting position of first occurrence

In the following code snippet, I'm trying to get position of EMP_ID field from the available fields. This 开发者_JS百科works fine if there's just one occurrence of EMP_ID.

But if there are more than one occurences then variable 'empid_field' will have positions of all the occurrences appended one after the other. i.e if EMP_ID is at postions 1, 8, and 11, then 'empid_field' would be '1811'.

Is there any way I get position of first occurrence only? Or Can I get comma separated positions atleast? (Code sample would be highly appreciated as I'm new to XSL programming)

<xsl:variable name="empid_field">
    <xsl:for-each select="$fields">
        <xsl:if test="internalName='EMP_ID'">
            <xsl:value-of select="position()"/>
        </xsl:if>
    </xsl:for-each>
</xsl:variable>


The easiest solution which is in my mind is to extend this. But I think there are also solutions which look more pretty.

<xsl:variable name="empid_field">
    <xsl:for-each select="$fields">
        <xsl:if test="internalName='EMP_ID'">
            <xsl:value-of select="position()"/>
        </xsl:if>
    </xsl:for-each>
</xsl:variable>

<xsl:variable name="first_empid_field">
    <xsl:value-of select="$empid_field[1]"/>
</xsl:variable>

The variable $first_empid_field will only have the first position value.


Ok got something ...

Created a comma separated string and picked the part before the delimiter.

<xsl:variable name="empid_fields" >
    <xsl:for-each select="$fields">
        <xsl:if test="internalName='EMP_ID'">
            <xsl:value-of select="position()" />
            <xsl:text >, </xsl:text>
        </xsl:if>
    </xsl:for-each>
    </xsl:variable>

    <xsl:variable name="empid_field" >
        <xsl:value-of select="substring-before($empid_fields, ', ')" />
    </xsl:variable>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜