html - 将 XML 转换为 HTML(相对于 xhtml)

标签 html xml xslt html4

我想将一些 xml 转换为具有以下格式的 HTML:

col1 col2 col3

注意:输出为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>

我没有关闭 TD关闭 TR 之前的元素.所以问题是:

我如何转换 xml进入HTML ,鉴于 HTML不是 xml

另见


更新一

它有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>

关于html - 将 XML 转换为 HTML(相对于 xhtml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3145817/

相关文章:

c# - 将 XML 元素存在反序列化为 C# 中的 bool

xml - 使用 xslt 有条件地添加默认命名空间

jquery - 如何使用ajax从另一个div(如iFrame)填充div中的xml文档?

xml - Xslt 1.0 - 查找最后一次出现并获取之前的字符串

javascript - CSS - 像 Pinterest 一样的气泡输入搜索栏

java - Java 中的父目录

html - 无法将完整图像显示为 css 背景

java - 我们如何通过java从未知的XML中获取所有节点名称

html - Bootstrap 折叠一次显示一个

html - 中心标签仍然有效吗?