【发布时间】:2012-01-05 15:00:26
【问题描述】:
我有一个 XSL 模板,它是 HTML 电子邮件的一小部分。 XSL 部分会根据数据发生变化,但周围的 HTML 不会。我想在 XSL 模板中包含这个 HTML。我尝试了以下方法,但由于 EmailHeader.html 中的标签未关闭而出现异常。我尝试使用 CDATA 标签,但没有成功。
我的异常:文件意外结束。以下元素未关闭:td、tr、table、td、tr、table、body、html。
如何在 XSL 模板中包含 html 部分?
(代码示例已简化)
我的 XSL 文件:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" />
<xsl:template match="/Email">
<xsl:copy-of select="document('EmailHeader.html')"></xsl:copy-of>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="width:25px"> </td>
<td style="width:550px; text-align:left; font-family:Arial; font-size:10pt; color:#444444">
<br /><br />
To <xsl:value-of select="FirstName"/> <xsl:value-of select="LastName"/>:
<br /><br />
Welcome, and thank you for enrolling...
</td>
<td style="width:25px"> </td>
</tr>
</table>
<xsl:copy-of select="document('EmailFooter.html')"></xsl:copy-of>
</xsl:template>
</xsl:transform>
EmailHeader.html:
<html xmlns="http://www.w3.org/1999/xhtml" style="background-color:#96A084">
<head>
<title></title>
</head>
<body style="background-color:#96A084; margin:0px; padding:0px">
<table border="0" cellpadding="0" cellspacing="0" width="630px" style="background-color:#96A084">
<tr>
<td>
EmailFooter.html:
<td style="width:15px"> </td>
</tr>
</table>
</body>
</html>
【问题讨论】:
-
为什么不能直接在文档中插入这些 html 元素?
-
我可以,但我想将它们分开,这样如果/当它们发生变化时,我就不必编辑我拥有的每个 XSL 文件(可能是数百个)。页眉和页脚维护电子邮件的外观/结构,而 XSL 只是填充它的动态文本。有意义吗?
-
倒过来怎么样?换句话说,将页眉/页脚放在一个 XSL 文件中,然后导入内容。这应该保持一切正常......
-
另外,如果我反转它并使用包含指向动态 XSL 的链接的页眉/页脚调用 XSL,则不会填充包含的 XSL 字段。换句话说,XML 字段的映射似乎没有到达
节点包含的文件。有什么想法吗?