将<ki>
元素值替换为空的<td>
元素,如果我使用下面的xsl代码,我的预期输出不会到来,请参阅当前输出文件
输入文件
<?xml version="1.0" encoding="utf-8"?>
<kita>
<kk>
<table id="t001">
<tbody>
<tr>
<td><p><a href="#MK1">my content here</a></p></td>
<td></td>
</tr>
<tr>
<td><p><a href="#MK2">my content here</a></p></td>
<td></td>
</tr>
<tr>
<td><p><a href="#MK3">my content here</a></p></td>
<td></td>
</tr>
</tbody>
</table>
<p id="MK1">my content here</p>
<ki>1</ki>
<p id="MK2">my content here</p>
<ki>2</ki>
<p id="MK3">my content here</p>
<ki>3</ki>
</kk>
</kita>
预期输出
<?xml version="1.0" encoding="UTF-8"?>
<kita>
<kk>
<table id="t001">
<tbody>
<tr>
<td>
<p>
<a href="#MK1">my content here</a>
</p>
</td>
<td style="">1</td>
</tr>
<tr>
<td>
<p>
<a href="#MK2">my content here</a>
</p>
</td>
<td style="">2</td>
</tr>
<tr>
<td>
<p>
<a href="#MK3">my content here</a>
</p>
</td>
<td style="">3</td>
</tr>
</tbody>
</table>
<p id="MK1">my content here</p>
<ki>1</ki>
<p id="MK2">my content here</p>
<ki>2</ki>
<p id="MK3">my content here</p>
<ki>3</ki>
</kk>
</kita>
XSL文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="td[ancestor::tbody[parent::table/@id = 't001'] and not(normalize-space(.)) and preceding-sibling::td/p/a/@href]">
<xsl:variable name="tdhref" select="preceding-sibling::td/p/a/substring-after(@href, '#')"/>
<td>
<xsl:attribute name="style">
<xsl:value-of select="@style"/>
</xsl:attribute>
<xsl:for-each select="ancestor::kita/kk/p[@id = $tdhref][1]/following-sibling::ki">
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:apply-templates/>
</td>
</xsl:template>
</xsl:stylesheet>
电流输出:在<td>
元件中,类似下方的元件
<td><p><a href="#MK1">my content here</a></p></td>
<td style="">123</td>
<td><p><a href="#MK2">my content here</a></p></td>
<td style="">23</td>
<td><p><a href="#MK3">my content here</a></p></td>
<td style="">3</td>
提前感谢
将following-sibling::ki
更改为following-sibling::ki[1]
-您只需要紧随其后的同级,而不是所有同级。