如何在使用XSLT创建的文本中添加换行符?

时间:2011-01-25 22:03:13

标签: xml xslt

我正在尝试使用xslt从xml文件创建文本输出。   它实际上是一个创建SQL代码的xslt。这是输出CREATE TABLE语句的部分:

CREATE TABLE dbo.[<xsl:value-of select="@PhysicalName"/>] (
  <xsl:for-each select="EntityAttributes/EntityAttribute">
    <xsl:apply-templates select="Attributes/Attribute[@AttributeID = current()/@EntityAttributeID]"/> ...
  </xsl:for-each>)

我希望在第一行“(”之后)换行,但无法找到如何操作。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:33)

至于换行符,我自己更喜欢更明确/可读的方式。

<xsl:text>&#xa;</xsl:text>

答案 1 :(得分:12)

如果你把

<xsl:text>
</xsl:text>

在你的XSLT中它会给出一个换行符。目前尚不清楚你想把它放在哪里。我猜你想要:

<xsl:text>CREATE TABLE dbo.[</xsl:text><xsl:value-of select="@PhysicalName"/><xsl:text>] (
</xsl:text>

一般情况下,你应该始终将文本输出包装在...中,它在XSL中看起来有点可怕,但它保留了间距。请注意,您可以在不影响结果的情况下中断XSLT中的行 - 例如

<xsl:text>CREATE TABLE dbo.[</xsl:text>
<xsl:value-of select="@PhysicalName"/>
<xsl:text>] (&#xa;</xsl:text>

是的,我同意明确的换行符。正如您所看到的,XSLT不是很易读,但它得到了正确的答案

答案 2 :(得分:-2)

使用标签很容易

Example:
<div>TOTAL STAR POINTS EARNED </div>
<div>TOTAL STAR POINTS REDEEMED </div>
<div>BALANCE STAR POINTS AVAILABLE </div>

输出:

TOTAL STAR POINTS EARNED 
TOTAL STAR POINTS REDEEMED 
BALANCE STAR POINTS AVAILABLE