在下面的代码片段中,我试图从可用字段中获取EMP_ID字段的位置。如果只出现一次EMP_ID,这样可以正常工作。
但是如果有多个出现,那么变量'empid_field'将具有一个接一个地附加的所有出现的位置。即如果EMP_ID位于位置1,8和11,则'empid_field'将为'1811'。
我有没有办法只获得第一次出现的位置?或者我可以至少得到逗号分隔的位置? (代码示例将受到高度赞赏,因为我是XSL编程的新手)
<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>
答案 0 :(得分:0)
我认为最简单的解决方案就是扩展它。但我认为还有一些看起来更漂亮的解决方案。
<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>
变量$first_empid_field
只有第一个位置值。
答案 1 :(得分:0)
好的有点......
创建逗号分隔的字符串并在分隔符之前选取部分。
<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>