【问题标题】:Xml element which contains html data when transforming xml to html using xsl and java styles are disappearing使用 xsl 和 java 样式将 xml 转换为 html 时包含 html 数据的 XML 元素正在消失
【发布时间】:2016-04-01 17:56:34
【问题描述】:

我在公共抽象类 Transformer 上的转换方法遇到问题。

我需要用 Java 生成电子邮件,所以我使用上面的转换器类并使用 XSL 将 XML 转换为 HTML,但其中一个 XML 元素包含如下 HTML 代码:

<data>
   <message>
  <font color="red">This is font color</font><br></br>
  <p>this is paragraph</p>
</message>
</data>

我使用的 XSL 如下:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<html>
  <body>

<xsl:template match="/">
        <td><xsl:value-of select="/data/message"/></td>
</xsl:template>
</xsl:stylesheet>
   </body>
  </html>

现在电子邮件字体红色没有出现,br 标签也没有工作,但一些数据出现在同一行。

谁能帮帮我。

【问题讨论】:

  • 抱歉所有 html 样式都消失了。
  • 您能否更正问题中的 XSLT,因为它的格式不正确。如果您正在使用该 XSLT,您将得到一个错误!结束 &lt;/xsl:stylesheet&gt; 需要在最后。 html 也应该在 xsl:template 内,因为作为 xsl:stylesheet 的孩子是无效的。谢谢

标签: java xml xslt


【解决方案1】:

xsl:value-of 只输出节点的文本值,不会复制brfont 等任何后代元素。你可以在这里使用xsl:copy-of,它会复制它们。

试试这个 XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <html>
      <body>
        <table>
          <tr>
            <td><xsl:copy-of select="/data/message/node()"/></td>
          </tr>
        </table>
       </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多