输入XML
<root><table>
<cell1>4324</cell1>
<cell2>543</cell2>
</table>
<table1>
<cell1>4324</cell1>
<cell2>543</cell2>
</table1></root>
我正在尝试复制我的xml节点表,所以一切都保持不变,只应删除值。我需要输出xslt2
<root><table>
<cell1></cell1>
<cell2></cell2>
</table>
<table1>
<cell1>4324</cell1>
<cell2>543</cell2>
</table1></root>
请注意,上面的示例仅用于显示我要做的事情 - 基本上清空所有表节点值。我知道如何删除/复制具有text()的特定节点cell1,但无法弄清楚如何清空整个节点,如示例所示。
任何帮助将不胜感激:D 非常感谢, Eoglasi
答案 0 :(得分:1)
使用身份转换模板复制所有内容;使用另一个模板来抑制您不想要的text()节点:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- identity transformation -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="table/*/text()"/>
</xsl:stylesheet>
应用于您修改后的输入:
<root>
<table>
<cell1>4324</cell1>
<cell2>543</cell2>
</table>
<table1>
<cell1>4324</cell1>
<cell2>543</cell2>
</table1>
</root>
结果是:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<table>
<cell1/>
<cell2/>
</table>
<table1>
<cell1>4324</cell1>
<cell2>543</cell2>
</table1>
</root>