我想将一些 xml 转换为具有以下格式的 HTML:
<TR><TD> col1 <TD> col2 <TD> col3 </TR>
注意:输出为HTML
, 并省略了可选的结束标记。这就是问题所在,也是问题存在的原因。
我正在使用的 XSL 片段是:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
doctype-system='http://www.w3.org/TR/html4/strict.dtd'
doctype-public='-//W3C//DTD HTML 4.01//EN'
indent='yes'
method='html'
/>
...
<xsl:for-each select="/">
<TR><TD><xsl:value-of select="col1"/><TD><xsl:value-of select="col2"/><TD><xsl:value-of select="col3"/></TR>
</xsl:for-each>
您可以看到 XSL 的内容与我想要的 HTML 相匹配(为便于阅读而包装):
<TR> <TD><xsl:value-of select="Column1"/>
<TD><xsl:value-of select="Column2"/>
<TD><xsl:value-of select="Column3"/> </TR>
注意:那些知道我从 XSLT 得到的错误的人:希望已经知道答案。
当出现我的XSL
(不要忘记,它是 的一种形式xml
)时,我得到了格式不正确的错误:
结束标签“TR”与开始标签“TD”不匹配。
这很有意义。确实:
<TD><xsl:value-of select="Column3"/> </TR>
TD
在关闭TR
. 所以问题是:
如果不是,我怎么能xml
变成?HTML
HTML
xml
也可以看看
更新一
有人建议无论如何都可以简单地包含结束标签,以使 XSL 有效(显示为便于阅读包装):
<TR> <TD><xsl:value-of select="col1"/></TD>
<TD><xsl:value-of select="col2"/></TD>
<TD><xsl:value-of select="col3"/></TD> </TR>
然后,通过使用xsl:output method='html'
,最终的 HTML 内容将</TD>
神奇地省略标签。除了它不起作用:
<TR><TD>col1</TD><TD>col2</TD><TD>col3</TD></TR>
更新二
有人建议我放弃,不要费心问这个问题,只包括可选的结束标签。这是可能的,但这不是我的问题。此外,“解决方案”不适用于关闭标签被禁止的元素,例如:
<BR/>
或者
<BR></BR>
<BR>
鉴于 HTML 中禁止关闭元素,我将如何在我的 HTML 输出中包含一个<BR>
元素。