我想在xslt中实现回车。 问题是我有一个变数: 步骤1 =值1 breaktag步骤2 =值2作为字符串,并希望显示为
步骤1 =值1
步骤2 =值2
在HTML表单中,但我在页面上获得了br标记。在xsl中实现换行符/回车符的任何好方法都将不胜感激
答案 0 :(得分:42)
作为
的替代方案<xsl:text>
</xsl:text>
你可以使用
<xsl:text> </xsl:text> <!-- newline character -->
或
<xsl:text> </xsl:text> <!-- carriage return character -->
如果你不想弄乱你的缩进
答案 1 :(得分:7)
这适合我,作为回车+生命饲料。
<xsl:text>
</xsl:text>
&#34;&amp;#10;&#34;字符串不起作用。
答案 2 :(得分:4)
在xsl:text元素中使用简单的回车符
<xsl:text>
</xsl:text>
答案 3 :(得分:3)
在要返回回车的行的末尾尝试此操作。它对我有用。
<xsl:text><![CDATA[<br />]]></xsl:text>
答案 4 :(得分:3)
我正在寻找一个很好的解决方案,正如许多人所希望的那样,没有直接在表达式中嵌入转义序列,或者在变量内部有奇怪的换行符。通过在这样的变量中嵌入一个文本节点,我发现这两种方法的混合实际上是可行的:
<xsl:variable name="newline"><xsl:text> </xsl:text></xsl:variable>
<xsl:value select="concat(some_element, $newline)" />
另一个不错的副作用是你可以传入你想要的任何换行符,无论是LF,CR还是两个CRLF。
- 丹尼尔
答案 5 :(得分:3)
我发现最干净的方法是在样式表的顶部插入!ENTITY
声明,用于换行符,制表符和其他常用文本结构。当必须在输出中插入大量格式元素时,这会使转换表看起来更清晰。
例如:
<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY nl "<xsl:text>
</xsl:text>">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="step">
&nl;&nl;
<xsl:apply-templates />
</xsl:template>
...
答案 6 :(得分:1)
这是一种使用递归模板的方法,该模板在数据库中查找字符串中的
,然后输出子字符串。
如果在剩余
之后存在子字符串,则模板会调用自身直到没有任何内容。
如果
不存在,则只输出文本。
这是模板调用(只需将@ActivityExtDescription替换为您的数据库字段):
<xsl:call-template name="MultilineTextOutput">
<xsl:with-param name="text" select="@ActivityExtDescription" />
</xsl:call-template>
以下是模板本身的代码:
<xsl:template name="MultilineTextOutput">
<xsl:param name="text"/>
<xsl:choose>
<xsl:when test="contains($text, ' ')">
<xsl:variable name="text-before-first-break">
<xsl:value-of select="substring-before($text, ' ')" />
</xsl:variable>
<xsl:variable name="text-after-first-break">
<xsl:value-of select="substring-after($text, ' ')" />
</xsl:variable>
<xsl:if test="not($text-before-first-break = '')">
<xsl:value-of select="$text-before-first-break" /><br />
</xsl:if>
<xsl:if test="not($text-after-first-break = '')">
<xsl:call-template name="MultilineTextOutput">
<xsl:with-param name="text" select="$text-after-first-break" />
</xsl:call-template>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" /><br />
</xsl:otherwise>
</xsl:choose>
像魅力一样工作!!!
答案 7 :(得分:0)
我相信你可以使用xsl:text标签,如
<xsl:text>
</xsl:text>
有可能通过将结束标记放在它自己的一行上,换行符是文本文本的一部分并按原样输出。
答案 8 :(得分:0)
我通过Environment.NewLine分隔值,然后在html中使用pre标签来模拟我正在寻找的效果
答案 9 :(得分:0)
这是唯一对我有用的解决方案。除了我正在替换 &安培;#10 ;使用 \ r \ n