将元素<ki>值替换为空<td>元素

  • 本文关键字:元素 td ki 替换 xml xslt-2.0
  • 更新时间 :
  • 英文 :


<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]-您只需要紧随其后的同级,而不是所有同级。

最新更新