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

관련 문제