2016-04-24 33 views
1

我beggining在XML和XSLT添加元素之間換行,我有一個問題,增加了新的生產線beetwen元素在XSLT

這裏的XML:

<?xml version="1.0" encoding="UTF-8"?> 
<numbers> 
    <person id="1"> 
     <phone> 
     <phone_nr>111111111</phone_nr> 
     <phone_nr>222222222</phone_nr> 
     </phone> 
    </person> 
    <person id="2"> 
     <phone> 
      <phone_nr>333333333</phone_nr> 
      </phone> 
    </person> 
</numbers> 

XSLT的樣子:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <xsl:for-each select="numbers/person"> 
    <table border="1"> 
     <tr> 
     <td> 
     <table> 
     <td><xsl:value-of select="phone"/></td> 
     </table> 
     </td> 
    </tr> 
    </table> 
    </xsl:for-each> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

,這讓我這個(有邊框):

111111111 222222222 
333333333 

但我想要的是:

111111111 
222222222 
333333333 

的問題是,XML必須是這樣的,我不知道,如何創造XSLT新線。

+0

請將您的預期結果**作爲代碼**發佈。 –

回答

2

您正在輸出HTML,因此要執行「換行」,您需要輸出<br>標記。您目前遇到的問題是您正在輸出phone元素的文本值,該元素將它下面的所有文本節點連接在一起。你真的需要phone_nr節點單獨處理的孩子,與xsl:for-each例如

<td> 
     <xsl:for-each select="phone/phone_nr"> 
      <xsl:value-of select="."/><br /> 
     </xsl:for-each> 
    </td> 

試試這個XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <xsl:for-each select="numbers/person"> 
    <table border="1"> 
     <tr> 
     <td> 
      <xsl:for-each select="phone/phone_nr"> 
       <xsl:value-of select="."/><br /> 
      </xsl:for-each> 
     </td> 
    </tr> 
    </table> 
    </xsl:for-each> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 
0

這是很難回答你的問題不知道確切輸出應該是什麼。按照您向我們展示的內容,最簡單的方法是:

<xsl:template match="/numbers"> 
    <table border="1"> 
     <xsl:for-each select="person/phone/phone_nr"> 
      <tr> 
       <td><xsl:value-of select="."/></td> 
      </tr> 
     </xsl:for-each> 
    </table> 
</xsl:template>