2013-09-23 3 views
0

다음 출력을 얻으려고합니다. lhs 열은 한 번만 표제를 나타내고 레코드는 열 2에 채워집니다.xml xslt - 특정 데이터 표시

PCP     Jones, Mary 
Care Manager:  abc1 (type1) 
        abc2 (type2) 

내 XML은 다음과 같습니다

<careTeames> 
<careteame><PCP>JONES,MARY</PCP><type>Ped - Under 5</type> 
<caremanagers> 
    <caremanager> 
     <name>Willis,Sam</name> 
     <type>Internal Medicine</type> 
    </caremanager> 
    <caremanager> 
     <name>Willis,Sam-2</name> 
     <type>Internal Medicine-2</type> 
    </caremanager> 
</caremanagers> 
</careteame> 
</careTeames> 

myxslt은 다음과 같습니다

<table width="100%" cellpadding="2" cellspacing="5"> 
     <tr> 
      <td align="center" width="30%" class="sectionHeader">Care team </td> 
     </tr> 
     <tr> 
      <td align="left" class="sectionBody" valign="top"> 
       <table class="table1" width="100%" cellpadding="2" cellspacing="5" border="0" > 
       <xsl:for-each select="//return/careTeames/careteame"> 
        <tr><td>PCP</td><td><xsl:value-of select="PCP"/> (<xsl:value-of select="type"/>) </td></tr><hr/> 
         <xsl:for-each select="caremanagers/caremanager"> 
         <tr><td>Care Manager:</td><td><xsl:value-of select="name"/> (<xsl:value-of select="type"/>)</td></tr> 
         </xsl:for-each> 
         <hr/> 


       </xsl:for-each> 

       </table> 
      </td> 

     </tr> 
    </table> 

이 코드를 인쇄 :

| care manager| abc1 (type1) | 
    | care manager| abc2 (type2) | 

어떤 제안 ??

난 그냥이 원하는 : 노 휴식 공간이

| care manager | abc1(type1) | 
|    | abc2(type2) | 

답변

0

가장 간단한 방법은 내부 for-each

<xsl:for-each select="caremanagers/caremanager"> 
    <tr> 
    <td> 
     <xsl:choose> 
     <xsl:when test="position() = 1">Care Manager:</xsl:when> 
     <xsl:otherwise>&#160;</xsl:otherwise> 
     </xsl:choose> 
    </td> 
    <td><xsl:value-of select="name"/> (<xsl:value-of select="type"/>)</td> 
    </tr> 
</xsl:for-each> 

(&#160; 내부 position() 체크를 넣어하는 것입니다, 당신은 할 수 HTML에 &nbsp;과 동일한 문자를 표현하지만 XHTML DTD를 참조하지 않는 한 해당 엔티티 참조는 XML 문서에서 직접 사용할 수 없습니다.

+0

이안이 작품에 감사드립니다. – user1908568