Я хочу преобразовать XML-документ в HTML с помощью XSL, немного поработать с ним, а затем визуализировать его. Это, по сути, что я делаю:Кастинг a Nokogiri :: XML :: Документ к Nokogiri :: HTML :: Документ
source = Nokogiri::XML(File.read 'source.xml')
xsl = Nokogiri::XSLT(File.read 'transform.xsl')
transformed = xsl.transform(source)
html = Nokogiri::HTML(transformed.to_html)
html.title = 'Something computed'
Stylesheet::transform
всегда возвращает XML::Document
, но мне нужно HTML::Document
экземпляр использовать методы как title=
.
Приведенный выше код работает, но экспорт и повторный анализ как HTML просто ужасный. Поскольку цель является подклассом источника, должен быть более эффективный способ выполнения преобразования.
Как я могу очистить этот беспорядок?
В качестве побочного вопроса, Nokogiri, как правило, подталкивал меня к обращению с доктринами, неосознанностью <meta charset=
и т. Д. ... знает ли кто-нибудь о менее автоматической магии с подобными возможностями?
Большое спасибо;)
Поскольку 'HTML :: Document' является подклассом' XML :: Document', не похоже, что есть механизм для преобразования. Однако, если вы посмотрите на специальные методы HTML, такие как 'title', они обычно являются просто селекторами, такими как' title = at ('title') и title.inner_text'. Не знаете, сколько других HTML-методов вам нужно. – GSP
@GSP в балансе, даже эта ужасная форма литья стоит для HTML-методов. Я подозреваю, что экземпляр HTML-документа также более полезен для выборочного представления нулевых элементов, таких как 'br' и' meta'. Я первоначально задал заголовок, используя 'css ('head> title')', но я твердо убежден, что если кто-то уже написал что-то хорошее, вы не должны писать его снова :) –
В 'title' ничего особенного нет. или любой помощник HTML, подобный этому в Nokogiri, что вы не можете безопасно реплицировать самостоятельно в контексте XML-документа. Или используйте 'Nokogiri :: Slop (doc_to_parse)' или 'Nokogiri :: XML (doc_to_parse) .slop!' И пусть это сделает для вас работу. –