我正在使用javax.xml.transform.Transformer
将XML文件转换为HTML文件。可能会发生div
没有内容,这会导致Transformer输出<div/>
,从而导致渲染。
我已经搜索了found“您可以将xslt输出更改为html 而不是xml以避免自我关闭标记的问题”,但这是一个不同的工具,我想知道:我该怎么做与javax
Transformer
?
答案 0 :(得分:3)
看起来您正常创建转换器,然后使用Transformer.setOutputProperty将METHOD属性设置为"html"
答案 1 :(得分:0)
使用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”问题。
答案 2 :(得分:0)
another thread中的这个答案在我的案例中似乎不起作用;即使我指定<xsl:output method="html"...>
,它仍会生成<div/>
而不是<div></div>
。
我不知道我的IDE或编译器是否已损坏(IBM Rational Application Developer),但我正在使用检测空白节点并在其中插入单个空格的解决方法。不太干净但有效......