XML của tôi (a.xhtml) bắt đầu như thế nàyLàm cách nào để ngăn chặn XML :: XPath tìm nạp DTD trong khi xử lý tệp XML?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
...
Mã của tôi bắt đầu như thế này
use XML::XPath;
use XML::XPath::XMLParser;
my $xp = XML::XPath->new(filename => "a.xhtml");
my $nodeset = $xp->find('/html/body//table');
Nó rất chậm, và nó chỉ ra rằng nó dành rất nhiều thời gian nhận được DTD (http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd).
Có cách nào để khai báo một cách rõ ràng máy chủ proxy HTTP trong họ Perl XML :: không? Tôi ghét sửa đổi tài liệu gốc a.xhtml như có bản sao cục bộ của DTD.
Đúng. Bạn có thể sử dụng XML :: Catalog để thêm một danh mục vào một đối tượng XML :: Parser và sử dụng trình phân tích cú pháp đó trong XML :: mới của XPath. Tôi chưa bao giờ thử nghiệm điều đó. – mirod