2013-03-06 3 views
1

내 입력 데이터는 다음과 같습니다 CONCAT 방법 : I 노드 Sup_Offer이 존재하는지 확인하기 위해 아래의 템플릿을 사용하고같은 이름을 가진 노드의 모든 값

<Data> 
    <Sup_Offer action='add'>80000001</Sup_Offer> 
    <Sup_Offer action='add'>80000002</Sup_Offer> 
    <Sup_Offer action='add'>80000003</Sup_Offer> 
    </Data> 

하고있는 경우 난을 연결할 필요를 값.

<xsl:template name="getDeactivateDataCmd"> 
     <xsl:choose> 
     <xsl:when test="boolean(Sup_Offer)"> 
      <xsl:for-each select="/Data/Sup_Offer" > 
      <xsl:value-of select="concat(Sup_Offer,';')"/> 
      </xsl:for-each> 
     </xsl:when> 
     <xsl:otherwise> 
     </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 

저는 XML/XSLT에 익숙하지 않으므로 다른 사람이 나에게 알릴 수 있습니다.

답변

0

템플릿 일치가 더 많은 작업을 수행하는 것이 더 간단 할 것입니다. 다음 스타일 시트는 "80000001; 80000002; 80000003;"문자열을 반환합니다. Sup_Offer 하위가없는 Data 요소가 포함 된 문서를 처리 할 때 빈 입력란에 샘플 입력을 건네줍니다.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       version="1.0"> 
    <xsl:output method="text"/> 

    <xsl:template match="Data"> 
    <xsl:apply-templates select="Sup_Offer"/> 
    </xsl:template> 

    <xsl:template match="Sup_Offer"> 
    <xsl:apply-templates/> 
    <xsl:text>;</xsl:text> 
    </xsl:template> 

</xsl:stylesheet> 
+0

Thanq C.M.Sperberg 그것은 많은 도움이되었습니다. 만약 내가 텍스트로 구분되지 않은 출력을 원한다면; 대신 하나의 행에있는 각 값이 변경 될 것입니다. – shaiksha

0

이 변환 : 제공된 XML 문서에 적용

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="Sup_Offer"> 
    <xsl:value-of select="concat(.,';')"/> 
</xsl:template> 
</xsl:stylesheet> 

:

:

<Data> 
    <Sup_Offer action='add'>80000001</Sup_Offer> 
    <Sup_Offer action='add'>80000002</Sup_Offer> 
    <Sup_Offer action='add'>80000003</Sup_Offer> 
</Data> 

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

80000001;80000002;80000003; 
+0

Dimitre에게 감사드립니다. 그것은 내 목적을 달성했다 :-) – shaiksha

관련 문제