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

我需要用Java生成电子邮件,因此我正在使用上述tranformer类,并使用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标签也不起作用,但是某些数据从同一行出现。

有人可以帮我吗

最佳答案

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>

关于java - 使用XSL和Java样式将xml转换为html时,包含html数据的xml元素消失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36362842/

10-09 18:19
查看更多