2011-02-25 4 views
1

쉼표를위한 XSLT에서 브레이크와 나는 시도하고 다음라인 나는 XSLT에 새로운 오전 구분 된 값

을 나는 다음과 같은 한 :

<TR> <TD> Name: </TD> <TD><xsl:value-of select="ZNAME"/> </TD> </TR> 

ADAM,BRIAN,CHARLIE,DAVID 

방법을 반환 반환 할 수 있습니다.

ADAM 
BRIAN 
CHARLIE 
DAVID 

제안 해주십시오.

+1

이 입력이 ' ADAM, BRIAN, CHARLIE, DAVID'이면 토큰 화를 찾고 있습니다. 그것은 http://stackoverflow.com/questions/136500/does-xslt-have-a-split-function –

+0

의 복제본이 될 것입니다. @Alejandro - 적절한 upvote를 얻을 수 있도록 대답으로 추가해야합니다. @Portal Admin - Alejandro와 마찬가지로 토큰 화가 필요합니다. 그러나 다른 상황에서 출력물에 리터럴 브레이크를 추가해야하는 경우 ' '과 같은 것을 사용해보십시오. –

+0

@DevNull :'번역 (ZNAME, ',', ' ')'이 **이 질문에 대한 적절한 대답이 될 수 있음을 참고 **. –

답변

0

이 변환이 XML 문서에 적용

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="ZNAME" name="tokenize"> 
    <xsl:param name="pText" select="concat(., ',')"/> 

    <xsl:if test="string-length($pText)>0"> 
    <xsl:value-of select="substring-before($pText, ',')"/> 
    <br /> 
    <xsl:call-template name="tokenize"> 
    <xsl:with-param name="pText" 
    select="substring-after($pText, ',')"/> 
    </xsl:call-template> 
    </xsl:if> 
</xsl:template> 
</xsl:stylesheet> 

:

ADAM<br/>BRIAN<br/>CHARLIE<br/>DAVID<br/> 

which when viewed in a browser is displayed like: 
:

<ZNAME>ADAM,BRIAN,CHARLIE,DAVID</ZNAME> 

이 원하는 정확한 결과를 생성

ADAM
브라이언
찰리
DAVID

0

당신이 솔루션을 필요로하는 경우 출력하지 <br/> 요소를 후행,이 시도 않습니다 :

<TR> <TD> Name: </TD> <TD><xsl:apply-templates select="ZNAME"/> </TD> </TR> 

<xsl:template match="ZNAME" name="convertcommas"> 
    <xsl:param name="text" select="."/> 
    <xsl:value-of select="substring-before(concat($text,','),',')" /> 
    <xsl:if test="contains($text,',')"> 
    <br /> 
    <xsl:call-template name="convertcommas"> 
     <xsl:with-param name="text" select="substring-after($text,',')" /> 
    </xsl:call-template> 
    </xsl:if> 
</xsl:template> 

concat($text,',')substring-before 적어도 하나의 쉼표를보고 확인한다 원래 쉼표가없는 경우 자체 문자열을 출력합니다.