нокогири и видео теги - PullRequest
       9

нокогири и видео теги

1 голос
/ 13 ноября 2010

некоторые фрагменты HTML-структуры хранятся на сервере. Перед сохранением они будут предварительно обработаны.

Предварительная обработка вставляет теги видео HTML 5 в определенные места.

Я пытаюсь это сделать, но каждый раз, когда я имею дело с тегами видео, я получаю следующее:

Тег видео недействителен

Я думаю, это из-за HTML 4.0 DOCTYPE, который я видел в отладчике:

<! DOCTYPE html PUBLIC "- // W3C // DTD HTML 4.0 Transitional // EN" </p>

Я также пытался использовать XML в качестве парсера, но не могу понять, как получить чистый HTML-код из объекта Nokogiri :: XML.

Есть идеи?

1 Ответ

0 голосов
/ 17 ноября 2010

Во-первых, вы можете использовать #to_html (или #to_xhtml) в документе XML. Однако я не уверен, что это необходимо здесь. Я не получаю никаких ошибок 'Tag video invalid' при создании элементов. Вот пример программы, показывающей, как проанализировать существующий HTML4, добавить элемент видео и снова вывести HTML:

require 'nokogiri'

html = Nokogiri::HTML <<ENDHTML
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
  <html><head><title>Sauceome</title></head>
  <body><p class="video" id="foo"><!-- put vid here--></p></body></html>
ENDHTML
wrap = html.at('.video')
wrap.inner_html="<video src='#{wrap['id']}.mov'></video>"

puts html.to_html
#=> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
#=> <html>
#=> <head>
#=> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
#=> <title>Sauceome</title>
#=> </head>
#=> <body><p class="video" id="foo"><video src="foo.mov"></video></p></body>
#=> </html>
...