2014-02-28 77 views
0

我在第三列的狀態,但它的價值是在第一列來了...我該如何改變這種狀況?如何更改XSLT中的列值?

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
     <body> 
<table border="1"> 
    <tr bgcolor="#9acd32"> 
    <th>Title</th> 
    <th>Artist</th> 
    <th>status</th> 
    </tr> 
    <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> 
    <tr> 
    <td><xsl:value-of select="title"/></td> 
    <td><xsl:value-of select="artist"/></td> 
    </tr> 
    </xsl:for-each> 
<xsl:for-each select="catalog/cd/dude" > 
    <tr> 
    <td><xsl:value-of select="status"/></td> 
    </tr> 
    </xsl:for-each> 
</table> 
</body> 
    </html> 
</xsl:template> 
    </xsl:stylesheet> 

基本上它的現身,如:

Title    Artist  status 
Empire Burlesque Bob Dylan 
hello 

我想:

Title    Artist  status 
Empire Burlesque Bob Dylan hello 

我如何去這樣做呢?

這是源XML:

<catalog> 
    <cd> 
     <title>Empire Burlesque</title> 
     <artist>Bob Dylan</artist> 
     <country>USA</country> 
     <company>Columbia</company> 
     <price>10.90</price> 
     <year>1985</year> 
     <dude> 
      <status>hello</status> 
     </dude> 
    </cd> 
</catalog> 
+0

它看起來像你說你想你所得到的是同樣的事情。即使在上面的評論中,似乎也是這樣。 – RacerNerd

+0

<! - 編輯由XMLSpy的 - > \t \t \t 帝國滑稽 \t \t 鮑勃迪倫 \t \t 美國 \t \t 哥倫比亞 \t \t 10.90 \t \t \t 你好 \t user3362977

+0

你應該把你的代碼示例中的問題。 – RacerNerd

回答

1

你是爲status創建一個單獨的行。既然你在一排有三列,你應該與其他兩人一起添加dude列獲得你的願望:

<table border="1"> 
    <tr bgcolor="#9acd32"> 
     <th>Title</th> 
     <th>Artist</th> 
     <th>status</th> 
    </tr> 

    <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> 
     <tr> 
      <td><xsl:value-of select="title"/></td> 
      <td><xsl:value-of select="artist"/></td> 
      <td><xsl:value-of select="dude/status"/></td> 
     </tr> 
    </xsl:for-each> 
</table> 

這個迭代中包含artist子元素與文本Bod Dylan所有cd元素,當它發現一個,它增加了含有在你列3個<td>表格單元格<tr>錶行。

你在做的方式在所有dude元素(只有一個)中迭代,並將status元素的內容放入新的<tr>行。這就是爲什麼你有一個額外的行。