xml – 在使用XSLT删除节点后,获得空行
发布时间:2020-12-16 07:55:34 所属栏目:百科 来源:网络整理
导读:我使用XSLT在 XML文档中进行非常简单的转换.我只想删除具有特定名称的所有元素节点. 发生在我的源文档中,所有这些节点都位于文档的末尾,但是在转换之后,虽然节点已经按照我的意图消失了,但是它们的位置有很多空行. 这完全是一个化妆品问题,因为我完成了我想
我使用XSLT在
XML文档中进行非常简单的转换.我只想删除具有特定名称的所有元素节点.
发生在我的源文档中,所有这些节点都位于文档的末尾,但是在转换之后,虽然节点已经按照我的意图消失了,但是它们的位置有很多空行. 这完全是一个化妆品问题,因为我完成了我想要的转型,但出于好奇:我如何摆脱这些空行? <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" /> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*" /> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="relation"/> </xsl:stylesheet>
原因是在仅空白的文本节点中与删除的元素立即同步.
解决方案:只需添加此XSLT指令即可在转换开始之前删除任何仅空白的文本节点: <xsl:strip-space elements="*"/> 结果可能会丢失缩进 – 如果是,请添加: <xsl:output omit-xml-declaration="yes" indent="yes"/> 完成转型成为: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*" /> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="relation"/> </xsl:stylesheet> 当应用在这个XML文档上(没有提供!): <nums> <num>01</num> <num>02</num> <num>03</num> <num>04</num> <num>05</num> <num>06</num> <num>07</num> <num>08</num> <num>09</num> <num>10</num> <relation/> <relation/> <relation/> <relation/> <relation/> <relation/> <relation/> <relation/> </nums> 产生想要的,正确的结果(没有尾随的空格): <nums> <num>01</num> <num>02</num> <num>03</num> <num>04</num> <num>05</num> <num>06</num> <num>07</num> <num>08</num> <num>09</num> <num>10</num> </nums> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |