html - 如何转换xml并保留换行符?

标签 html xml xslt

我试图在将 xml 文件转换为 html 时保留行中断,但我找不到可行的方法。

<meta>
    <name>Message</name>
    <value>Hi!

    I need info!

    Mr Test</value>
</meta>

我使用这个 xsl:

  <xsl:if test="name='Message'">
  <tr>
    <th align="left" colspan="2">Message:</th>
  </tr>
  <tr>
    <td colspan="2"><xsl:value-of select="value"/></td>
  </tr>
  </xsl:if>

但是新行 (cr/lf) 字符消失了,一切都变成了 html 中的一行。是否可以匹配 cr/lf 并将它们替换为 html“<_br >”或任何其他方法?

最佳答案

将以下模板添加到您的 XSL 中:-

<xsl:template name="LFsToBRs">
    <xsl:param name="input" />
    <xsl:choose>
        <xsl:when test="contains($input, '&#10;')">
            <xsl:value-of select="substring-before($input, '&#10;')" /><br />
            <xsl:call-template name="LFsToBRs">
                <xsl:with-param name="input" select="substring-after($input, '&#10;')" />
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$input" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

现在用调用此模板替换 where select 值:-

<td colspan="2">
    <xsl:call-template name="LFsToBRs">
        <xsl:with-param name="input" select="value"/>
    </xsl:call-template>
</td>

关于html - 如何转换xml并保留换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873449/

相关文章:

java - 如果存在德语字符,则 XSLT 无法转换

jquery - 如何关闭 Angular 4 Accordion 内的所有菜单

javascript - document.evaluate 使用 iterateNext 返回 null

javascript - CKEditor激活时如何显示占位符

python - HTML 清理代码不太有效

java - 如何在运行时确定servlet路径?

xml - 具有 namespace 的YouTube channel 供稿的XSLT转换

xml - 如果存在 XSD,XSLT 处理器是否验证输入和输出 XML 文件?

javascript - 不加载外部js脚本

javascript - 修改子类时,Firefox 似乎会放弃自动换行样式