开发者

XSLT: remove white spaces when transforming to HTML

开发者 https://www.devze.com 2022-12-16 13:15 出处:网络
I have a XML doc that is transformed to HTML but I want the result HTML to be as small as po开发者_开发知识库ssible. So I must remove all white spaces and line endings. How can I do that?You should be

I have a XML doc that is transformed to HTML but I want the result HTML to be as small as po开发者_开发知识库ssible. So I must remove all white spaces and line endings. How can I do that?


You should be able to use strip-space:

<xsl:strip-space elements="*"/>


Using

<xsl:strip-space elements="*"/>

is a good idea.

So is specifying the details of the output:

<xsl:output
    indent="no"
    method="html"/>

If the above still are not good enough, you can try altering the processing of text() nodes (thinking along the lines of DocBook's schema, where any text you explicitly wanted would be in <para/> tags, or similar):

<xsl:template match="chapter/text()"/>

You can use just match="text()" but that might be too aggressive as it is very vague--it will not necessarily kill the text you want (again, in your <para/> tags, or similar) as those text nodes will probably be processed implicitly by XSLT's built in templates.


xsl:strip-space will let you strip out whitespace from the result tree. Also make sure you don't generate extra whitespace in the stylesheet. That is, make sure instead of something like

<xsl:value-of select="@key"/>
:
<xsl:value-of select="@value"/>

use xsl:text

<xsl:value-of select="@key"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="@value"/>


You should go with

<xsl:strip-space elements="*"/>
0

精彩评论

暂无评论...
验证码 换一张
取 消