我可以在 HAML 中使用非字母数字元素名称吗?
Can I use non-alphanumeric element names in HAML?
我需要生成具有日文元素名称的遗留 XML。
!!! XML
%こんにちわ
%素晴らしき
%世界
但是,渲染时会出现无效标签错误。
pry(main)> Haml::Engine.new("!!! XML\n%こんにちわ\n %素晴らしき\n %世界").render
Haml::SyntaxError: Invalid tag: "%こんにちわ".
from (haml):2
如何渲染它?
Haml 似乎不是您创建遗留 XML 文件的正确工具。虽然 XML element and attribute names can use non-ASCII characters 是真的,但当我 运行 你在我的 IRB 中的代码时,我得到了和你一样的错误:
irb> Haml::Engine.new("!!! XML\n%こんにちわ\n %素晴らしき\n %世界").render
Haml::SyntaxError: Invalid tag: "%こんにちわ".
from (haml):2
from /Users/paul/.gem/ruby/2.3.0/gems/haml-4.0.7/lib/haml/parser.rb:520:in `parse_tag'
因此,错误似乎在 Haml::Parser#parse_tag
,您可以在该方法的前两行中的 guard 子句中看到潜在的问题:
match = text.scan(/%([-:\w]+)([-:\w.#]*)(.+)?/)[0]
raise SyntaxError.new(Error.message(:invalid_tag, text)) unless match
让我们看看 match
的值对于不同的标签是什么:
irb> "%html".scan(/%([-:\w]+)([-:\w.#]*)(.+)?/)[0]
=> ["html", "", nil]
irb> "%こんにちわ".scan(/%([-:\w]+)([-:\w.#]*)(.+)?/)[0]
=> nil
所以,这似乎是问题所在:虽然日文标签对于 XML 本身可能是合法的,但您无法让它们通过 Haml 的解析器(除非您可能尝试自己进行猴子修补)。
我需要生成具有日文元素名称的遗留 XML。
!!! XML
%こんにちわ
%素晴らしき
%世界
但是,渲染时会出现无效标签错误。
pry(main)> Haml::Engine.new("!!! XML\n%こんにちわ\n %素晴らしき\n %世界").render
Haml::SyntaxError: Invalid tag: "%こんにちわ".
from (haml):2
如何渲染它?
Haml 似乎不是您创建遗留 XML 文件的正确工具。虽然 XML element and attribute names can use non-ASCII characters 是真的,但当我 运行 你在我的 IRB 中的代码时,我得到了和你一样的错误:
irb> Haml::Engine.new("!!! XML\n%こんにちわ\n %素晴らしき\n %世界").render
Haml::SyntaxError: Invalid tag: "%こんにちわ".
from (haml):2
from /Users/paul/.gem/ruby/2.3.0/gems/haml-4.0.7/lib/haml/parser.rb:520:in `parse_tag'
因此,错误似乎在 Haml::Parser#parse_tag
,您可以在该方法的前两行中的 guard 子句中看到潜在的问题:
match = text.scan(/%([-:\w]+)([-:\w.#]*)(.+)?/)[0]
raise SyntaxError.new(Error.message(:invalid_tag, text)) unless match
让我们看看 match
的值对于不同的标签是什么:
irb> "%html".scan(/%([-:\w]+)([-:\w.#]*)(.+)?/)[0]
=> ["html", "", nil]
irb> "%こんにちわ".scan(/%([-:\w]+)([-:\w.#]*)(.+)?/)[0]
=> nil
所以,这似乎是问题所在:虽然日文标签对于 XML 本身可能是合法的,但您无法让它们通过 Haml 的解析器(除非您可能尝试自己进行猴子修补)。