2011-01-25 359 views
15

我想從xml文件使用xslt創建文本輸出。 它實際上是一個創建SQL代碼的xslt。這裏是輸出CREATE TABLE語句的一部分:如何將換行符添加到我使用XSLT創建的文本中?

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>) 

我想有「(」在第一線,但不能設法找出如何做到這一點任何人都可以幫助

後換行? 。

回答

11

如果你把

<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不是很可讀,但它得到正確的答案

+0

你寫* 「正如你所看到的XSLT是不是很可讀的」 *。這是非常主觀的。我認爲用`xsl:text` **樣式表變得非常可讀**。也許你想說**輸出變得更少...可以推斷**。 – 2011-01-25 23:44:19

+0

我見過一些人定義了一個擴展爲 的實體&換行符。但是,這隻會讓熟悉它所使用的約定的人更易讀,因此我不確定我會推薦它。 – 2011-01-26 08:56:35

33

至於換行符,我自己更喜歡更明確/可讀的方式。

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

在我看來,比空的元素好得多。 +1 – 2011-01-25 22:22:01

-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 
相關問題