当前位置 : 主页 > 网页制作 > xml >

将XML转换为HTML(而不是xhtml)

来源:互联网 收集:自由互联 发布时间:2021-06-13
我想将一些xml转换为具有以下格式的 HTML: TR TD col1 TD col2 TD col3 / TR 注意:输出是HTML,完整,省略了可选的结束标记.这是问题,也是问题存在的原因. 我正在使用的XSL片段是: ?xml version='
我想将一些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形式)时,我得到了一个非常好的错误:

End tag ‘TR’ does not match the start tag ‘TD’.

这很有道理.确实:

<TD><xsl:value-of select="Column3"/> </TR>

我在关闭TR之前不关闭TD元素.所以问题是:

如果HTML不是xml,我如何将xml转换为HTML?

也可以看看

> HTML: Include, or exclude, optional closing tags?
> XSLT: Transforming into non-xml content?
> Omitting optional tags of html

更新一个

它有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="/*">
   &lt;TR>&lt;TD><xsl:value-of select="col1"/>&lt;TD><xsl:value-of select="col2"/>&lt;TD><xsl:value-of select="col3"/>&lt;/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>
网友评论