繁体   English   中英

如何使javax Transformer输出HTML(没有自动关闭标签)?

[英]How to make javax Transformer output HTML (no self-closing tags)?

我正在使用javax.xml.transform.Transformer将XML文件转换为HTML文件。 可能会发生div没有内容,导致Transformer输出<div/> ,这会破坏渲染。

我搜索并发现你可以将xslt输出更改为html而不是xml以避免自闭标签的问题 ”,但那是针对不同的工具而我想知道: 我怎么做到这一点 javax Transformer

看起来你正常创建变换器,然后使用Transformer.setOutputPropertyMETHOD属性设置为"html"

使用XSLT输出有效HTML的方法是使用<xsl:output>指令,并将其method属性设置为html

这是一个小例子:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/">
     <div>
       <xsl:apply-templates select="x/y/z"/>
     </div>
 </xsl:template>

</xsl:stylesheet>

当此转换应用于以下XML文档时

<t/>

产生了想要的结果 (我正在使用的8个不同的XSLT处理器产生相同的结果):

<div></div>

如果不需要的输出只发生在特定的XSLT处理器上,那么这是这个特定处理器的实现问题,而且是“xsltprocessors”而不是“xslt”问题。

另一个帖子中的这个答案在我的案例中似乎不起作用; 即使我指定<xsl:output method="html"...>它仍然生成<div/>而不是<div></div>

我不知道我的IDE或编译器是否坏了(IBM Rational Application Developer),但我正在使用检测空白节点并在其中插入单个空格的解决方法。 不太干净但有效......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM