<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE body [
<!ENTITY reg "®">
<!ENTITY mdash "—">
<!ENTITY nbsp " ">
<!ENTITY ldquo "“">
<!ENTITY rdquo "”">
<!ENTITY pound "£">
<!ENTITY trade "™">
<!ENTITY euro "€">
<!ENTITY yen "¥">
<!ENTITY copy "©">
]>
...
И поскольку, для генерации XML я использую рельсовый RXML билдер, то и выводить надо было rails-методами. Что такое
xml.instruct!
и как им пользоваться, я давно знаю, но вот с этими entities была и самая проблема.Нашел в классе Builder::XmlMarkup метод
declare!
а хули толку? Там настолько "содержательный" пример применения, что хотелось пристрелить разработчиков документации. Пришлось познать, что есть такое Class: Proc в Ruby.Собственно, вот что в итоге получилось.
xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
entities = {:nbsp => " ", :copy => "©", :reg => "®", :trade => "™", :mdash => "—", :ldquo => "“",
:rdquo => "”", :pound => "£", :yen => "¥", :euro => "€"}
xml.declare! :DOCTYPE, "body".intern do |x|
entities.each do |key, value|
x.declare! :ENTITY, "#{key}".intern, "#{value}"
end
end
Пользуйтесь! Не забывайте говорить «спасибо» ;) или «thanks» -- кто как приучен :).
0 Комментариев :
Отправить комментарий
Жги!