2011-09-28 85 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

相關問題