2009-10-27 9 views
0
<xml> 
    <data> 
    <Attribute name='forms'> 
     <List> 
      <String>xform</String> 
      <String>yform</String> 
     </List> 
     </Attribute> 
    </data> 
    </xml> 

목록에서 모든 값을 가져 오도록 xslt를 설정하는 방법은 무엇입니까? 그래서 한 줄로 분리하여 두 값을 출력하고 싶습니다. 예를 들어.XSLT에서 한 줄에 여러 줄을 파싱

하는 XForms | yform

+0

하지만 일이 너무 그 수준에서 다른 속성을 가지고, 그래서 메신저는 이미 하고 그래서 내가 좋아하는 특성에 의해 필터링 싶어 [이름 @ = 'forms'] ... then 로직을 적용하십시오 ... – user140736

답변

1

이것은 단지 하나의 방법, 간단한 입력 예를 가정.

<xsl:template match="/"> 
    <xsl:for-each select="//String"> 
    <xsl:value-of select="."/><xsl:if test="not(position() = last())">|</xsl:if> 
    </xsl:for-each> 
</xsl:template> 

내가 추가 한 설명을 이해하면 다음은 더 구체적인 템플릿 규칙입니다. last()의 사용법에 대해 언급 한 사람도 샘플을 게시하면 좋을 것입니다.

<xsl:template match="Attribute[@name='forms']"> 
    <xsl:for-each select="List//String"> 
    <xsl:value-of select="."/><xsl:if test="not(position() = last())">|</xsl:if> 
    </xsl:for-each> 
</xsl:template> 
+0

darn 너무 오래 걸렸습니다 ... –

+1

XSLT에 참여한 이후로 무언가가 변경되지 않았다면, 패턴은 일반적으로 position()> 1을 테스트하고 접두어로 붙입니다. XSLT 엔진에 대해 계산하는 것이 더 저렴합니다. last() 함수는 XSLT 엔진이 앞을 내다보고 마지막 일치를 찾고 현재 하나가 마지막이 아닌지보고 싶어합니다. –

관련 문제