有人可以帮我从我的行循环中获取columndefinition / column / cssclass的值吗?
所以,在我的xsl中,我想在我的“行”forloop期间为同一列位置拉入cssclass,并将其放入我的< td class =“PullItFromColumnDefition”>
希望这是有道理的。任何人都可以帮我解决这个问题吗?
感谢。
我的XML看起来像这样:
<report>
<columndefinition>
<column>
<headertext>Test Column 1</headertext>
<cssclass>test1</cssclass>
</column>
<column>
<headertext>Test Column 2</headertext>
<cssclass>test2</cssclass>
</column>
</columndefinition>
<rows>
<row>
<column>3</column>
<column>11/04/2002</column>
</row>
<row>
<column>22</column>
<column>04/15/2003</column>
</row>
<row>
<column>134</column>
<column>04/15/2003</column>
</row>
<row>
<column>63</column>
<column>11/03/2004</column>
</row>
<row>
<column>65</column>
<column>11/03/2004</column>
</row>
<row>
<column>66</column>
<column>11/03/2004</column>
</row>
</rows>
</report>
这就是我的xsl目前的情况:
<xsl:template match="/report">
<html>
<body>
<h2>Report Sample</h2>
<table border="1">
<thead>
<xsl:for-each select="columndefinition/column">
<th><xsl:value-of select="headertext"/></th>
</xsl:for-each>
</thead>
<tbody>
<xsl:for-each select="rows/row">
<tr>
<xsl:for-each select="column">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</tbody>
</table>
</body>
</html>
</xsl:template>
答案 0 :(得分:3)
...
<xsl:for-each select="column">
<xsl:variable name="column-index" select="position()"/>
<td class="{/report/columndefinition/column[$column-index]/cssclass}">
<xsl:value-of select="."/>
</td>
</xsl:for-each>
...
答案 1 :(得分:2)
作为Pavel解决方案的替代方案,您可以使用XSL密钥:
<xsl:key
name="kCssClass"
match="cssclass"
use="count(../preceding-sibling::column) + 1"
/>
<!-- later, in <column> context… -->
<td class="{key('kCssClass', position())}">
密钥将按其父<cssclass>
位置索引<column>
个节点。对于大输入,这有可能更快地运行。