我正在尝试使用 XSLT 向特定列中的所有节点添加一个值(在本例中为字符串“I added This”),如果该列确实包含某个值(在本例中为文本“I Want You”) 2.0。
这意味着,如果我有下表:
<table>
<tr>
<th>header value</th>
<th>I Want You</th>
<th>header value</th>
</tr>
<tr>
<td>value 1</td>
<td>value 2</td>
<td>value 3</td>
</tr>
<tr>
<td>value 4</td>
<td>value 5</td>
<td>value 6</td>
</tr>
</table>
应用 xslt 脚本后,输出应该是这样的:
<table>
<tr>
<th>header value</th>
<th>I Want You</th>
<th>header value</th>
</tr>
<tr>
<td>value 1</td>
<td>I Added This value 2</td>
<td>value 3</td>
</tr>
<tr>
<td>value 4</td>
<td>I Added This value 5</td>
<td>value 6</td>
</tr>
</table>
为了实现这一点,我编写了许多不同的样式表,但我什至没有接近:
复制整个表:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
这让我得到了我想要更改的列的值 - 但从那里我不知道如何在每个 td 值前面加上“我添加了这个值”这个短语
<xsl:template match="//th[contains(lower-case(.), 'I Want You')]">
<xsl:variable name="tdPos" select="count(preceding-sibling::td)+2"/>
<xsl:for-each select="current()/parent::*/following-sibling::tr">
<xsl:value-of select="./td[$tdPos]/text()"/>
</xsl:for-each>
</xsl:template>
非常感谢任何可能将我指向正确方向的提示!