2016-02-25 11 views
0

選擇通過XML渲染的表格數據使用XSL作爲參考

<?xml version="1.0" encoding="UTF-8"?> 
 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
 
<xsl:template match="/"> 
 
<html> 
 
<head> 
 
    <style type="text/css"> 
 
    table {table-layout: fixed; width: 100%;} 
 
    td {width: 20%; word-wrap: break-word;} 
 
    </style> 
 
</head> 
 
<body> 
 
<h2>RTCP STUB STATUS</h2> 
 
<table border="1"> 
 
<tr bgcolor="#9acd32" > 
 
<th>Stub Component</th> 
 
<th>Stub Name</th> 
 
<th>Stub Operation</th> 
 
<th>Stub Version</th> 
 
<th>Stub Status</th> 
 
</tr> 
 
<xsl:for-each select="//stub"> 
 
<tr> 
 
<td><xsl:value-of select="@component" /></td> 
 
<td><xsl:value-of select="@name" /></td> 
 
<td><xsl:value-of select="@operation" /></td> 
 
<td><xsl:value-of select="@version" /></td> 
 
<td><xsl:for-each select="instances/instance"> 
 
<xsl:value-of select="@status"/> 
 
<xsl:value-of select="'&#160;'"/> 
 
</xsl:for-each> 
 
</td> 
 
</tr> 
 
</xsl:for-each> 
 
</table> 
 
</body> 
 
</html> 
 
</xsl:template> 
 
</xsl:stylesheet>

根據我上面的XSL,我只是想確保輸出HTML文本的顏色,每當狀態列中的值,我的輸出表格數據正在運行以綠色顯示,如果其停止顯示爲紅色。我如何將這部分添加到這個上面的xsl。我嘗試了幾種方法來做到這一點,但都沒有奏效。看起來xsl有自己的方式來顯示與顏色有關的輸出文本。 在這方面的任何幫助將不勝感激。

示例XML

<stubs> 
    <stub component="ChannelInquiry_Binding_HTTP_v2" name="getAllChannelAvailabilityStub" operation="getAllChannelAvailability" version="26.7"> 
     <instances> 
      <instance status="STOPPING"/> 
     </instances> 
    </stub> 
<stubs> 

感謝, 阿什利

+0

你能編輯你的問題來顯示你的XML的樣本嗎?另外,你可以嘗試你嘗試的方法嗎?請注意,XSL沒有顏色的概念。它所做的只是輸出HTML(和CSS)並處理顏色。因此,理想情況下,您需要知道在使用XSLT之前,HTML + CSS應該是什麼樣子。謝謝! –

+0

xml的一部分是: - – Ashley

+0

您應該編輯您的問題以顯示您的XML(在標籤列表下方有一個小的「編輯」鏈接),因爲註釋中的XML很難閱讀。謝謝! –

回答

0

你需要一個類添加到您的每行要的風格,然後再添加相應的規則,樣式表。

如果要設置整個行的顏色,

<tr> 
    <td><xsl:value-of select="@component" /></td> 
    <td><xsl:value-of select="@name" /></td> 
    <td><xsl:value-of select="@operation" /></td> 
    <td><xsl:value-of select="@version" /></td> 
    <td> 
     <xsl:for-each select="instances/instance"> 
      <xsl:value-of select="@status"/> 
      <xsl:value-of select="'&#160;'"/> 
     </xsl:for-each> 
    </td> 
</tr> 

第一行更改爲<tr class="{./instances/instance/@status}">。這會將狀態作爲類屬性添加到輸出的表格行中。

現在你可以修改CSS樣式表來

<style type="text/css"> 
    table {table-layout: fixed; width: 100%;} 
    td {width: 20%; word-wrap: break-word;} 
    tr.Running {color: green;} 
    tr.Stopping {color: red;} 
</style> 

的相反,如果着色整個行,你想只是顏色的狀態欄,而不是上面的,你需要改變第一

<td> 
    <xsl:for-each select="instances/instance"> 
     <xsl:value-of select="@status"/> 
     <xsl:value-of select="'&#160;'"/> 
    </xsl:for-each> 
</td> 

<td class="{./instances/instance/@status}">和修改CSS樣式表的行

<style type="text/css"> 
    table {table-layout: fixed; width: 100%;} 
    td {width: 20%; word-wrap: break-word;} 
    td.Running {color: green;} 
    td.Stopping {color: red;} 
</style> 
+0

感謝您的快速響應,但後來我得到相同的輸出沒有變化的顏色..運行是以相同的默認黑色顯示。 – Ashley

+0

@Ashley修復它。要修改的行不能正確選擇狀態。 – Matthew

+0

完美的你再次搖擺。它就像一個魅力。:) – Ashley