将XML转换为HTML(而不是xhtml)
我想将一些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形式)时,我得到了一个非常好的错误:
这很有道理.确实: <TD><xsl:value-of select="Column3"/> </TR> 我在关闭TR之前不关闭TD元素.所以问题是: 如果HTML不是xml,我如何将xml转换为HTML? 也可以看看 > HTML: Include,or exclude,optional closing tags? 更新一个 它有been suggested,无论如何都可以简单地包含结束标签,以便进行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>元件. 解决方法
这是一种方法:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/*"> <TR><TD><xsl:value-of select="col1"/><TD><xsl:value-of select="col2"/><TD><xsl:value-of select="col3"/></TR> </xsl:template> </xsl:stylesheet> 将此转换应用于以下XML文档时: <t> <col1>1</col1> <col2>2</col2> <col3>3</col3> </t> 想要的结果是正确生成的: <TR><TD>1<TD>2<TD>3</TR> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |