2011-09-28 139 views
0

在下面的代码片段中,我试图从可用字段中获取EMP_ID字段的位置。如果只有一个EMP_ID,这可以正常工作。每个循环选择第一个出现位置的XSL

但是,如果存在多个出现,那么变量'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> 
+2

你可以发布你的XML的子集吗?我猜像'应该得到你想要的位置 –

回答

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> 
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将只具有第一个位置值。

+0

谢谢...但是这个没有为我工作。 – Vijay

+0

我认为$ empid_field不是一个数组。这是一个字符串。因此$ empid_field [1]将不起作用。 – Vijay

相关问题