输入XML:
<?xml version="1.0" encoding="utf-8"?>
<section>
<table>
<tbody>
<tr>
<td>
<datapoint>First</datapoint>
</td>
</tr>
<tr>
<td>
<datapoint>Second</datapoint>
</td>
</tr>
</tbody>
</table>
</section>
这是我尝试过的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxml xsl">
<xsl:strip-space elements="*" />
<xsl:preserve-space elements="datapoint" />
<xsl:output indent="yes" method="xml" version="1.0" omit-xml-declaration="no"/>
<xsl:template match="text()[contains(.,' ') or contains(.,' ')]"/>
<!-- Identity template -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这就是我所期待的:
预期结果:(一行)
<?xml version="1.0" encoding="utf-8"?><section><table><tbody><tr><td><datapoint>First</datapoint></td></tr><tr><td><datapoint>Second</datapoint></td></tr></tbody></table></section>
实际结果:(无变化)
<?xml version="1.0" encoding="utf-8"?>
<section>
<table>
<tbody>
<tr>
<td>
<datapoint>First</datapoint>
</td>
</tr>
<tr>
<td>
<datapoint>Second</datapoint>
</td>
</tr>
</tbody>
</table>
</section>
我想知道我是否要删除换行符和回车符,但 VS 正在将它们放回原处。
怎么样:
<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="no"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>