XSL摆脱了左边的空间

时间:2014-08-15 02:06:40

标签: xml xslt

我想使用XSLT在多行显示地址。 XML是通过Frame工作生成的,在第二个和左边的左边有一些空格。第3行。所以,不能改变XML。

尝试使用<xsl:strip-space elements="*"/>

没有帮助。地址当前显示为:

ABC Company Limited
  No.24, Lines Rd
    Pannmure, USA

我不想限制Line可以容纳的字符串长度。需要将其显示为:

ABC Company Limited
No.24, Lines Rd 
Pannmure, USA

尝试使用normalize-space(data) - 显示为:

ABC Company Limited No.24, Lines Rd Pannmure, USA

也不要这样。

请尝试&amp;举个例子,我是XSLT的新手。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我认为您的输入是这样的:

<text>ABC Company Limited
           No.24, Lines Rd
                    Pannmure, USA</text>

因此,您需要使用递归来选择与normalize-space()相结合的行以删除空白。我只是为另一个模板做了这个,你可以根据自己的喜好进行调整(比如删除行元素:

    <xsl:template match="text">
        <xsl:call-template name="splitlines">
            <xsl:with-param name="text" select="."/>
        </xsl:call-template>
    </xsl:template>

        <xsl:template name="splitlines">
            <xsl:param name="text"/>
            <xsl:choose>
                <xsl:when test="contains($text,'&#xa;')">
                    <line>
                    <xsl:value-of select="normalize-space(substring-before($text,'&#xa;'))"/>
                    </line>
                    <xsl:call-template name="splitlines">
                        <xsl:with-param name="text" select="substring-after($text,'&#xa;')"/>
                    </xsl:call-template>
                </xsl:when>
                <xsl:otherwise>
                    <line>
                    <xsl:value-of select="normalize-space($text)"/>
                    </line>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:template>

使用该输入,它将输出:

 <line>ABC Company Limited</line><line>No.24, Lines Rd</line><line>Pannmure, USA</line>

我会留给你编辑&#34; line&#34;元素,如果你愿意,可以用换行替换。