Как добавить разрыв строки в текст, который я создаю с помощью XSLT?

Я пытаюсь создать текстовый вывод из xml файла с помощью xslt.   На самом деле xslt создает код SQL. Вот часть, которая выводит инструкции 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>)

Я хочу иметь разрыв строки после "(" в первой строке, но не могу понять, как это сделать. Может ли кто-нибудь помочь?

Ответы

Ответ 1

Если вы положили

<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

Что касается разрывов строк, я сам предпочитаю более явный/читаемый способ.

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

Ответ 3

использовать теги это легко

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