XSL:如何XSL功能禁用DTD验证 '文件()'(的Xalan-J)
<?xml version='1.0' encoding='utf-8' ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:htm="http://www.w3.org/1999/xhtml" version="1.0">
<xsl:template match="/">
<xsl:variable name="source" select="document('test.html')"/>
</xsl:template>
</xsl:stylesheet>
的test.html:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
Bla-Bla-bla
</body>
</html>
当test.html中包含DOCTYPE声明,XSL改造需要大约2分钟。 当我删除test.html中的DOCTYPE声明时,XSL转换大约需要100 ms。 xalan-j中有没有一种方法可以通过XSL document()函数禁用DTD验证以便内部加载XML。
在此先感谢!
我没有回答你的问题,但你可能想重新考虑试图禁用DTD处理,因为HTML可能包含在DTD中定义的实体(如' '),并且不是标准的XML。一个更好的问题可能就是如何阻止DTD处理这么久。 :) – JLRishe
同意你,JLRishe。主要问题是如何提高性能。 – Dmitry
为什么doctype在xml声明之后出现? – Sugar