2014-03-19 120 views
0

我有一个尾随的白色空间我很好奇如何摆脱,尝试了几种不同的方法。这是代码。尾随白色空间

<?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:文本和xsl:带状空间元素= “*” 处理不当帮助处理缩进。

如何摆脱多余的空间的任何想法?任何帮助将是一个很大的帮助。一直在窃听我一下。

回答

-1

尝试增加<xsl:strip-space elements="*"/><xsl:stylesheet>标签内。告诉xslt剥离空间不会导致它剥去所有空格,但我认为它会实现你想要的。为了更细化地控制空白,你可以给它一个特定元素的列表,或者甚至使用xpath谓词。

+0

非常感谢我将给出拍摄,我试图我会再补充一点。再次感谢。 – reven

+0

呃打我还是不行。 – reven

+0

'xsl:strip-space'适用于仅包含仅空白文本节点的_elements_。它不会影响其他内容以外的元素。因此,'normalize-space()'实际上并不是一个更精细的版本,而是一个不同的函数。 –

1

这可能是在你的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'])"/> 
+0

我早些时候尝试过,但它会在我的生命中无法摆脱的第一行上导致缩进。我会尝试concat。 – reven

+0

你应该结合了'XSL使用:带space' –

+0

嗯是啊是仍然没有工作是缩进不会消失,这就是我一直停留在最后一位的。只显示该节点的第一行。总之谢谢你的建议。 – reven