2

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>

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() 関数を介して XML を内部的にロードするための DTD 検証を無効にする方法はありますか。

前もって感謝します!

4

1 に答える 1

0

検証を無効にする必要はありません。ローカル キャッシング プロキシ、または最も頻繁に使用する DTD のカタログとローカル コピーのいずれかをインストールする必要があります。

W3C は過剰な DTD トラフィックを阻止する方法として DTD ファイルを非常にゆっくりと処理するため、このプロセスには長い時間がかかります。

ローカル カタログを使用するか、ローカル キャッシング プロキシを使用します。

于 2013-02-08T20:38:35.347 に答える