He encontrado algunas publicaciones alusivas al hecho de que puedes validar XHTML contra su DTD usando la gema nokogiri. Aunque he logrado usarlo para analizar XHTML con éxito (buscando etiquetas 'a', etc.), estoy luchando para validar documentos.¿Cómo valido XHTML con nokogiri?
Para mí, esto:
doc = Nokogiri::XML(Net::HTTP.get(URI.parse("http://www.w3.org")))
puts doc.validate
resultados en un montón de todo:
[
#<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.]
]
así que estoy asumiendo que no es el enfoque correcto. Parece que no puedo encontrar ningún buen ejemplo: ¿alguien puede sugerir lo que estoy haciendo mal?
Estoy ejecutando ruby 1.8.6 en Mac OSX 10.5.8. Nokogiri me dice:
nokogiri: 1.3.3
warnings: []
libxml:
compiled: 2.6.23
loaded: 2.6.23
binding: extension
Eso es grande - es sin duda la producción de mí razonable de aspecto resultados (de un vistazo!). Aunque, curiosamente, algunas páginas que estoy validando producen montones de advertencias de "Bloque no implementado en xmlschemas.c: 27443", pero luego proceden a informar que son válidas sin errores. No he llegado al final del patrón de cuáles son y no están en este punto. – NeilS