xml – XSLT输出格式:删除换行符,并从删除的元素中删除空白输出
发布时间:2020-12-16 07:52:38 所属栏目:百科 来源:网络整理
导读:这是我的 XML: doc xmlns="http://www.foo.org" div titleMr. Title/title paragraphThis is one paragraph. /paragraph paragraphAnother paragraph. /paragraph list orderedlist item paragraphAn item paragraph./paragraph /item item paragraphAnothe
这是我的
XML:
<doc xmlns="http://www.foo.org"> <div> <title>Mr. Title</title> <paragraph>This is one paragraph. </paragraph> <paragraph>Another paragraph. </paragraph> <list> <orderedlist> <item> <paragraph>An item paragraph.</paragraph> </item> <item> <paragraph>Another item paragraph</paragraph> </item> </orderedlist> </list> </div> </doc> 这是我的XSL: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://www.foo.org"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="foo:doc"> <xsl:element name="newdoc" namespace="http://www/w3.org/1999/xhtml"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="foo:div"> <segment title="{foo:title}"> <xsl:apply-templates/> </segment> </xsl:template> <xsl:template match="foo:title"> <xsl:element name="h2"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="foo:paragraph"> <xsl:element name="p"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="foo:list"> <xsl:apply-templates/> </xsl:template> <xsl:template match="foo:orderedlist"> <xsl:element name="ol"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="foo:item"> <xsl:element name="li"> <xsl:apply-templates/> </xsl:element> </xsl:template> <xsl:template match="foo:item/foo:paragraph"> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet> 并输出: <newdoc xmlns="http://www/w3.org/1999/xhtml"> <segment xmlns="" title="Mr. Title"> <h2>Mr. Title</h2> <p>This is one paragraph. </p> <p>Another paragraph. </p> <ol> <li> An item paragraph. </li> <li> Another item paragraph </li> </ol> </segment> </newdoc> 我想改变3件关于这个输出的事情: >从“p”元素(原始段落)中删除换行符 – 我尝试过< xsl:template match =“foo:list / text()[normalize-space(.)='']”/>对于#3,但这与缩进混淆 – 我也尝试过< xsl:template match =“foo:paragraph / text()[normalize-space(.)='']”/>对于#1,但这对换行没有影响 – 我尝试过< xsl:strip-space elements =“*”/>但这消除了所有缩进 谢谢!!
将这些模板添加到样式表中:
<xsl:template match="*/text()[normalize-space()]"> <xsl:value-of select="normalize-space()"/> </xsl:template> <xsl:template match="*/text()[not(normalize-space())]" /> 产生此输出: <?xml version="1.0" encoding="UTF-8"?> <newdoc xmlns="http://www/w3.org/1999/xhtml"> <segment xmlns="" xmlns:foo="http://www.foo.org" title="Mr. Title"> <h2>Mr. Title</h2> <p>This is one paragraph.</p> <p>Another paragraph.</p> <ol> <li>An item paragraph.</li> <li>Another item paragraph</li> </ol> </segment> </newdoc> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读