我有一个尾随空白,我很好奇如何摆脱,尝试了一些不同的方法。这是代码
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output
indent="no"
method="text"/>
<xsl:template match="/">
Famous Mountains of the World
<xsl:apply-templates />
</xsl:template>
<xsl:template match="mountain">
Mountain Name:<xsl:value-of select="name[@language='English'] "/>
Mountain Name:(<xsl:value-of select="name[@language='PigLatin'] "/>)
Location:<xsl:value-of select="location"/>
Height:<xsl:value-of select="height"/></xsl:template>
</xsl:stylesheet>
这就是我想把它扑灭的方式。
Mountain Name:Mount Everest
Mountain Name:(ountMa verestEa)
Mountain Name:Mount Ranier
Mountain Name:()
Mountain Name:Mount St. Helens
Mountain Name:()
相反,它输出:Mountain Name:Mount Everest
Mountain Name:(ountMa verestEa)
Mountain Name:Mount Ranier
Mountain Name:()
Mountain Name:Mount St. Helens
Mountain Name:()
或
Mountain Name:Mount Everest
Mountain Name:(ountMa verestEa)
Mountain Name:Mount Ranier
Mountain Name:()
Mountain Name:Mount St. Helens
Mountain Name:()
如果我使用xsl:text和xsl:strip-space elements="*"不能帮助处理缩进
有什么办法摆脱多余的空间吗?任何帮助都是莫大的帮助。一直在烦我。
很可能XSLT中的换行符在输出中被解释为文字换行符。尝试在xsl:text
中包装文本输出或在xsl:value-of
中使用concat()
。
例如,不用:
Mountain Name:<xsl:value-of select="name[@language='English'] "/>
试一下:
<xsl:text>Mountain Name:</xsl:text>
<xsl:value-of select="name[@language='English'] "/>
或:
<xsl:value-of select="concat('Mountain Name:',name[@language='English'])"/>
尝试在<xsl:stylesheet>
标签内添加<xsl:strip-space elements="*"/>
。告诉xslt去除空格不会导致它去除所有空白,但我认为它会达到您想要的效果。要对空格进行更细粒度的控制,您可以为它提供一个特定元素的列表,或者甚至使用normalize-space()
xpath谓词。