2013-09-23 26 views
0

我正在嘗試實現以下輸出:即lhs列只顯示一次標題..並將記錄填充到第二列。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

最簡單的方法是把一個position()檢查內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;裏面是一個沒有休息空間,可以表示與HTML中的&nbsp;相同的字符,但除非它引用XHTML DTD,否則不能直接在XML文檔中使用該實體引用)。

+0

謝謝伊恩這個作品。 – user1908568