如何在XSLT中实现回车
我想在xslt中实现回车。 问题是我有一个变量: 步骤1=值1断开标记步骤2=值2作为字符串并希望显示为 步骤1=值1 步骤2=值2如何在XSLT中实现回车,xslt,Xslt,我想在xslt中实现回车。 问题是我有一个变量: 步骤1=值1断开标记步骤2=值2作为字符串并希望显示为 步骤1=值1 步骤2=值2 在HTML表单中,但我在页面上得到了br标记。任何在xsl中实现换行/回车的好方法都将受到欢迎在xsl:text元素中使用简单的回车符 <xsl:text> </xsl:text> 我相信您可以使用xsl:text标记来实现这一点,如中所示 <xsl:text> </xsl:text> 很有可能,通过将结束标
在HTML表单中,但我在页面上得到了br标记。任何在xsl中实现换行/回车的好方法都将受到欢迎在xsl:text元素中使用简单的回车符
<xsl:text>
</xsl:text>
我相信您可以使用xsl:text标记来实现这一点,如中所示
<xsl:text>
</xsl:text>
很有可能,通过将结束标记放在自己的一行上,换行符就是文本的一部分,并作为文本的一部分输出。
<xsl:text>
</xsl:text>
你可以用
<xsl:text> </xsl:text> <!-- newline character -->
;
或
;
如果您不想弄乱缩进我用Environment.NewLine分隔了这些值,然后用html中的pre标记来模拟我想要的效果请在要回车的行的末尾尝试此操作。这对我有用
<xsl:text><![CDATA[<br />]]></xsl:text>
]>
这是一种使用递归模板的方法,它查找
在数据库的字符串中输入code>,然后在之前输出子字符串。
如果和#10之后有子字符串代码>剩余,然后模板调用自身,直到什么都没有剩下。
如果和#10代码>不存在,则只输出文本
以下是模板调用(只需将@ActivityExtDescription替换为数据库字段):
下面是模板本身的代码:
<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>
工作就像一个魅力 这对我来说很有效,就像马车返回+生命馈送一样
<xsl:text>
</xsl:text>
;
“
;”字符串不起作用。我一直在寻找一个很好的解决方案,正如许多人所希望的那样,不必在表达式中直接嵌入转义序列,也不必在变量中使用奇怪的换行符。我发现这两种方法的混合实际上是有效的,将文本节点嵌入如下变量中:
<xsl:variable name="newline"><xsl:text> </xsl:text></xsl:variable>
<xsl:value select="concat(some_element, $newline)" />
;
另一个很好的副作用是,你可以传入任何你想要的换行符,无论是LF、CR还是两者
--丹尼尔我找到的最干净的方法就是插入!换行符、制表符和其他常用文本结构的样式表顶部的实体
声明。当必须在输出中插入大量格式元素时,这会使转换表看起来更干净
例如:
<?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>
]>
&nl&nl;
。。。
这是唯一对我有效的解决方案。除了我要替换
使用\r\n时,当您将所有XML缩进得很好时,这非常烦人,然后你必须把这个…字符串保存在数据库中,我尝试添加,但它打印标记而不是换行符。字符串保存在数据库中,我尝试添加,但它打印标记而不是换行符。我的字符串在数据库AB中,呈现时显示为原样,而不是换行符…尝试
;不工作。在xsl文件中硬编码时工作,但我的值来自db。我认为需要更多信息来找到问题的解决方案。您能否更详细地描述如何从数据库中获取字符串以及如何应用XSL?数据库中字符串的格式是什么?是纯文本吗?XML?一般XSLT提示:不要在xsl:variable
中使用xsl:text
,而是使用select
属性。(示例:
)这样,您就不会创建不必要的结果树片段。另外,您还可以使用xsl:param
而不是xsl:variable
,以便传递“newline”的值在运行时。这是我发现的唯一一个用于将从数据库检索的字段格式化为xml的答案。在XSLT中添加CRLF
时效果非常好。使用JEdit和Notepad++进行验证。这可以嵌入到BI Publisher Desktop的文本元素中。根据您使用的查看器,
可能无法正常工作。它适用于记事本++或linux命令行。请参见以下非常类似的问题:
<xsl:variable name="newline"><xsl:text> </xsl:text></xsl:variable>
<xsl:value select="concat(some_element, $newline)" />
<?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>