gpt4 book ai didi

java - 如何在 XSL 函数 'document()' (xalan-j) 中禁用 DTD 验证

转载 作者:行者123 更新时间:2023-11-29 09:06:23 25 4
gpt4 key购买 nike

XSL:

<?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>

测试.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 毫秒。xalan-j 中是否有一种方法可以禁用 DTD 验证以通过 XSL document() 函数内部加载 XML。

提前致谢!

最佳答案

您不需要禁用验证。您需要安装本地缓存代理或目录以及您最常用的 DTD 的本地副本。

这个过程需要很长时间,因为 W3C serves DTD files very slowly作为阻止过多 DTD 流量的一种方式。

使用本地目录,或使用本地缓存代理。

关于java - 如何在 XSL 函数 'document()' (xalan-j) 中禁用 DTD 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14770322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com