Tôi đã tìm thấy một vài bài viết ám chỉ đến thực tế rằng bạn có thể xác nhận XHTML dựa vào DTD của nó bằng cách sử dụng đá quý nokogiri. Trong khi tôi đã quản lý để sử dụng nó để phân tích XHTML thành công (tìm kiếm 'một' thẻ vv), tôi đang đấu tranh để xác nhận tài liệu.Làm cách nào để xác thực XHTML bằng nokogiri?
Đối với tôi, điều này:
doc = Nokogiri::XML(Net::HTTP.get(URI.parse("http://www.w3.org")))
puts doc.validate
kết quả trong một đống toàn bộ:
[
#<Nokogiri::XML::SyntaxError: No declaration for element html>,
#<Nokogiri::XML::SyntaxError: No declaration for attribute xmlns of element html>,
#<Nokogiri::XML::SyntaxError: No declaration for attribute lang of element html>,
#<Nokogiri::XML::SyntaxError: No declaration for attribute lang of element html>,
#<Nokogiri::XML::SyntaxError: No declaration for element head>,
#<Nokogiri::XML::SyntaxError: No declaration for attribute profile of element head
[repeat for every tag in the document.]
]
Vì vậy, tôi giả định đó không phải là cách tiếp cận đúng. Tôi dường như không thể tìm ra bất kỳ ví dụ hay nào - có ai có thể gợi ý tôi đang làm gì sai không?
Tôi đang chạy ruby 1.8.6 trên Mac OSX 10.5.8. Nokogiri nói với tôi:
nokogiri: 1.3.3
warnings: []
libxml:
compiled: 2.6.23
loaded: 2.6.23
binding: extension
Đó là tuyệt vời - nó chắc chắn sản xuất hợp lý tôi nhìn kết quả (trong nháy mắt!). Mặc dù, một cách kỳ quặc, một số trang tôi đang xác thực các ngăn xếp sản phẩm của các cảnh báo "Unimplemented block at xmlschemas.c: 27443" - nhưng sau đó tiến hành báo cáo chúng hợp lệ không có lỗi. Tôi đã không có để dưới cùng của mô hình của những người thân và không phải là vào thời điểm này. – NeilS